svn commit: r498425 [1/4] - in /ofbiz/trunk: ./ framework/entity/fieldtype/ framework/shark/ framework/shark/entitydef/ framework/shark/src/org/enhydra/shark/ framework/shark/src/org/ofbiz/shark/ framework/shark/src/org/ofbiz/shark/audit/ framework/sha...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r498425 [1/4] - in /ofbiz/trunk: ./ framework/entity/fieldtype/ framework/shark/ framework/shark/entitydef/ framework/shark/src/org/enhydra/shark/ framework/shark/src/org/ofbiz/shark/ framework/shark/src/org/ofbiz/shark/audit/ framework/sha...

jleroux@apache.org
Author: jleroux
Date: Sun Jan 21 10:48:58 2007
New Revision: 498425

URL: http://svn.apache.org/viewvc?view=rev&rev=498425
Log:
A patch from Sergey Shutov  [#OFBIZ-552] Integration Shark 1.1_2 into OfBiz - ASF JIRA
https://issues.apache.org/jira/browse/OFBIZ-552

Added:
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/SharkConstants.java   (with props)
Modified:
    ofbiz/trunk/OPTIONAL_LIBRARIES
    ofbiz/trunk/framework/entity/fieldtype/fieldtypederby.xml
    ofbiz/trunk/framework/shark/build.xml
    ofbiz/trunk/framework/shark/entitydef/entitymodel.xml
    ofbiz/trunk/framework/shark/src/org/enhydra/shark/ThreadedToolAgentManager.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/audit/AssignmentEventAudit.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/audit/CreateProcessEventAudit.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/audit/DataEventAudit.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/audit/EntityAuditMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/audit/EventAudit.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/audit/StateEventAudit.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/auth/GenericAuthenticationMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/auth/OfbizAuthenticationMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/container/SharkContainer.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/expression/ActivityIteratorCondExprBldr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/expression/AssignmentIteratorCondExprBldr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/expression/ProcessIteratorCondExprBldr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/expression/ProcessMgrIteratorCondExprBldr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/expression/ResourceIteratorCondExprBldr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/Activity.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/ActivityVariable.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/AndJoinEntry.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/Assignment.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/Deadline.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/EntityPersistentMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/Process.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/ProcessMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/ProcessVariable.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/instance/Resource.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/mapping/EntityApplicationMap.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/mapping/EntityApplicationMappingMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/mapping/EntityParticipantMap.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/mapping/EntityParticipantMappingMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/repository/EntityRepositoryMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/requester/AbstractRequester.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/requester/LoggingRequester.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/requester/ServiceRequester.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/tool/ServiceEngineAgent.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/user/GenericUserGroupMgr.java
    ofbiz/trunk/framework/shark/src/org/ofbiz/shark/user/PartyUserGroupMgr.java
    ofbiz/trunk/framework/shark/webapp/shark/WEB-INF/actions/process/processDetailList.bsh
    ofbiz/trunk/framework/shark/webapp/shark/WEB-INF/actions/process/processHistory.bsh
    ofbiz/trunk/framework/shark/webapp/shark/WEB-INF/actions/process/processList.bsh
    ofbiz/trunk/framework/shark/webapp/shark/WEB-INF/actions/repository/showRepository.bsh
    ofbiz/trunk/framework/shark/webapp/shark/WEB-INF/actions/tasklist/worklist.bsh
    ofbiz/trunk/framework/shark/webapp/shark/process/processDetailList.ftl
    ofbiz/trunk/framework/shark/webapp/shark/process/processHistory.ftl
    ofbiz/trunk/framework/shark/webapp/shark/process/processList.ftl

Modified: ofbiz/trunk/OPTIONAL_LIBRARIES
URL: http://svn.apache.org/viewvc/ofbiz/trunk/OPTIONAL_LIBRARIES?view=diff&rev=498425&r1=498424&r2=498425
==============================================================================
--- ofbiz/trunk/OPTIONAL_LIBRARIES (original)
+++ ofbiz/trunk/OPTIONAL_LIBRARIES Sun Jan 21 10:48:58 2007
@@ -7,41 +7,47 @@
 -=- Workflow __________________________________________________________________________________________________________________________________________________
 
 -Shark (LGPL):
-  http://www.enhydra.org/workflow/shark/
+  http://www.enhydra.org/workflow/shark/ 
+  Current version : http://shark.objectweb.org/doc/1.1/release_notes/release_notes.html
   framework/shark/lib:
-    sharkassignment-historyrelated.jar
-    sharkassignment-standard.jar
-    sharkassignment-xpdlstraightparticipantmapping.jar
-    sharkauthentication-ldap.jar
-    sharkcaching-lru.jar
-    sharkclientapi.jar
-    sharkcommonapi.jar
-    sharkcorbaclientapi.jar
-    sharkcorbaserver.jar
-    sharkeventaudit-smtp.jar
-    sharkinternalapi.jar
-    sharkinteroperability-wfxml.jar
-    sharkkernel-standard.jar
-    sharklimitagent-standard.jar
-    sharklimitagent-timer.jar
-    sharklogging-standard.jar
-    sharkprocesslocking-memory.jar
-    sharkrepositorypersistence-filesystem.jar
-    sharkscripting-standard.jar
-    sharksecurity-standard.jar
-    sharktoolagent-standard.jar
-    sharkusergroup-ldap.jar
-    sharkutilities-common.jar
-    sharkutilities-map.jar
-    sharkutilities-misc.jar
-    sharkwebservice-asap.jar
-    sharkwebservice-asapapi.jar
-    sharkwebservice-asaputils.jar
-    sharkwebservice-wfxmlapi.jar
-    sharkwebservice-wfxmlutils.jar
-    sharkxpdl-standard.jar
-    wrd.jar
-  NOTE: these jars are based on a build from source done on 03 May 2005 (see old SVN rev 4944).
+     js.jar
+     sharkassignment-historyrelated-1.2_1.jar
+     sharkassignment-standard-1.2_1.jar
+     sharkassignment-xpdlstraightparticipantmapping-1.2_1.jar
+     sharkauthentication-ldap-1.2_1.jar
+     sharkcaching-lru-1.2_1.jar
+     sharkclientapi-1.2_1.jar
+     sharkcommonapi-1.2_1.jar
+     sharkcorbaadmin-1.2_1.jar
+     sharkcorbaclientapi-1.2_1.jar
+     sharkcorbaserver-1.2_1.jar
+     sharkcorbawhandler-1.2_1.jar
+     sharkeventaudit-notifying-1.2_1.jar
+     sharkeventaudit-smtp-1.2_1.jar
+     sharkinternalapi-1.2_1.jar
+     sharkinteroperability-wfxml-1.2_1.jar
+     sharkkernel-standard-1.2_1.jar
+     sharklimitagent-standard-1.2_1.jar
+     sharklimitagent-timer-1.2_1.jar
+     sharklogging-standard-1.2_1.jar
+     sharkprocesslocking-memory-1.2_1.jar
+     sharkrepositorypersistence-filesystem-1.2_1.jar
+     sharkscripting-standard-1.2_1.jar
+     sharksecurity-standard-1.2_1.jar
+     sharktoolagent-standard-1.2_1.jar
+     sharkusergroup-ldap-1.2_1.jar
+     sharkutilities-common-1.2_1.jar
+     sharkutilities-map-1.2_1.jar
+     sharkutilities-misc-1.2_1.jar
+     sharkwebservice-asap-1.2_1.jar
+     sharkwebservice-asapapi-1.2_1.jar
+     sharkwebservice-asaputils-1.2_1.jar
+     sharkwebservice-wfxml-1.2_1.jar
+     sharkwebservice-wfxmlapi-1.2_1.jar
+     sharkwebservice-wfxmlutils-1.2_1.jar
+     sharkxpdl-standard-1.2_1.jar
+     wrd-1.2_1.jar  
+    NOTE: these jars based on a build from version 1.2_1 may be found attached in https://issues.apache.org/jira/browse/OFBIZ-552 
     For an updated version some changes to the integration code in the shark component may be necessary.
   TO BUILD: once the jars are in place you can build from the ofbiz/framework/shark directory, or
     you can add it to the build list in the ofbiz/build.xml file in the framework-builds file list.
@@ -49,6 +55,10 @@
     file or other containers file being used. The shark-container container should be un-commented.
   TO DEPLOY, PART 2: to get the component to load on startup, and get the webapp in place and such
     the shark component needs to be uncommented in the framework/component-load.xml file.
+  You may experiment online with Jawe XPDL editor : http://www.enhydra.org/workflow/jawe/index.html
+  There is an example XPDL file in https://issues.apache.org/jira/browse/OFBIZ-552
+  it came from http://www.wfmc.org/standards/docs/xpdl_sample/sample%20workflow%20process.xpdl
+  For the moment Shark engine in OFBiz refuses to load it (OK in Jawe)
 
 -=- Web Presentation: ________________________________________________________________________________________________________________________________________________
 
@@ -95,10 +105,10 @@
 
 - JIMI (used by FOP ):
   http://java.sun.com/products/jimi
- FOP may require a library called JIMI to print certain graphical formats such as GIFs.  Jimi is a Sun library which cannot
- be included in OFBIZ due to licensing incompatibility, but you can download it yourself at: http://java.sun.com/products/jimi/
- and rename the ZIP file that comes with it as jimi-xxx.jar, then copy it into the same directory as fop.jar, which at this time
- is ${ofbiz.home}/framework/webapp/lib/
+    FOP may require a library called JIMI to print certain graphical formats such as GIFs.  Jimi is a Sun library which cannot
+    be included in OFBIZ due to licensing incompatibility, but you can download it yourself at: http://java.sun.com/products/jimi/
+    and rename the ZIP file that comes with it as jimi-xxx.jar, then copy it into the same directory as fop.jar, which at this time
+    is ${ofbiz.home}/framework/webapp/lib/
 
 -=- POS _______________________________________________________________________________________________________________________________________________________
 

Modified: ofbiz/trunk/framework/entity/fieldtype/fieldtypederby.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/fieldtype/fieldtypederby.xml?view=diff&rev=498425&r1=498424&r2=498425
==============================================================================
--- ofbiz/trunk/framework/entity/fieldtype/fieldtypederby.xml (original)
+++ ofbiz/trunk/framework/entity/fieldtype/fieldtypederby.xml Sun Jan 21 10:48:58 2007
@@ -26,6 +26,8 @@
     <field-type-def type="date" sql-type="DATE" java-type="java.sql.Date"></field-type-def>
     <field-type-def type="time" sql-type="TIME" java-type="java.sql.Time"></field-type-def>
     
+    <field-type-def type="long" sql-type="BIGINT" java-type="java.lang.Long"></field-type-def>
+    
     <field-type-def type="currency-amount" sql-type="NUMERIC(18,2)" java-type="Double"><validate method="isSignedDouble" /></field-type-def>
     <field-type-def type="currency-precise" sql-type="NUMERIC(18,3)" java-type="Double"><validate method="isSignedDouble" /></field-type-def>
     <field-type-def type="floating-point" sql-type="DOUBLE" java-type="Double"><validate method="isSignedDouble" /></field-type-def>

Modified: ofbiz/trunk/framework/shark/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/shark/build.xml?view=diff&rev=498425&r1=498424&r2=498425
==============================================================================
--- ofbiz/trunk/framework/shark/build.xml (original)
+++ ofbiz/trunk/framework/shark/build.xml Sun Jan 21 10:48:58 2007
@@ -46,6 +46,7 @@
             <fileset dir="../service/lib" includes="*.jar"/>
             <fileset dir="../service/build/lib" includes="*.jar"/>
             <fileset dir="../entityext/build/lib" includes="*.jar"/>
+            <fileset dir="../common/build/lib" includes="*.jar"/>
         </path>
     </target>
 

Modified: ofbiz/trunk/framework/shark/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/shark/entitydef/entitymodel.xml?view=diff&rev=498425&r1=498424&r2=498425
==============================================================================
--- ofbiz/trunk/framework/shark/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/framework/shark/entitydef/entitymodel.xml Sun Jan 21 10:48:58 2007
@@ -32,7 +32,7 @@
     <entity entity-name="WfAssignmentEventAudit"
             package-name="org.ofbiz.shark.audit"
             title="">
-      <field name="eventAuditId" type="id-ne"></field>
+        <field name="eventAuditId" type="long-varchar"></field>
       <field name="oldUserName" type="long-varchar"></field>
       <field name="oldName" type="long-varchar"></field>
       <field name="newUserName" type="long-varchar"></field>
@@ -43,9 +43,10 @@
     <entity entity-name="WfCreateProcessEventAudit"
             package-name="org.ofbiz.shark.audit"
             title="">
-      <field name="eventAuditId" type="id-ne"></field>
+      <field name="eventAuditId" type="long-varchar"></field>
       <field name="pActivityId" type="long-varchar"></field>
       <field name="pActivityDefId" type="long-varchar"></field>
+        <field name="pActivitySetDefId" type="long-varchar"></field>
       <field name="pProcessId" type="long-varchar"></field>
       <field name="pProcessName" type="long-varchar"></field>
       <field name="pProcessDefId" type="long-varchar"></field>
@@ -57,7 +58,7 @@
     <entity entity-name="WfDataEventAudit"
             package-name="org.ofbiz.shark.audit"
             title="">
-      <field name="eventAuditId" type="id-ne"></field>
+      <field name="eventAuditId" type="long-varchar"></field>
       <field name="oldData" type="blob"></field>
       <field name="newData" type="blob"></field>
       <prim-key field="eventAuditId"/>
@@ -65,7 +66,7 @@
     <entity entity-name="WfEventAudit"
             package-name="org.ofbiz.shark.audit"
             title="">
-      <field name="eventAuditId" type="id-ne"></field>
+      <field name="eventAuditId" type="long-varchar"></field>
       <field name="auditTime" type="long-varchar"></field>
       <field name="auditType" type="long-varchar"></field>
       <field name="packageId" type="long-varchar"></field>
@@ -77,12 +78,14 @@
       <field name="activityId" type="long-varchar"></field>
       <field name="activityName" type="long-varchar"></field>
       <field name="activityDefId" type="long-varchar"></field>
+      <field name="activitySetDefId" type="long-varchar"></field>
+
       <prim-key field="eventAuditId"/>
     </entity>
     <entity entity-name="WfStateEventAudit"
             package-name="org.ofbiz.shark.audit"
             title="">
-      <field name="eventAuditId" type="id-ne"></field>
+      <field name="eventAuditId" type="long-varchar"></field>
       <field name="oldState" type="long-varchar"></field>
       <field name="newState" type="long-varchar"></field>
       <prim-key field="eventAuditId"/>
@@ -94,30 +97,30 @@
     <entity entity-name="SharkGroup"
             package-name="org.ofbiz.shark.auth"
             title="">
-      <field name="groupName" type="id-vlong"></field>
+      <field name="groupName" type="long-varchar"></field>
       <field name="description" type="description"></field>
       <prim-key field="groupName"/>
     </entity>
     <entity entity-name="SharkGroupMember"
             package-name="org.ofbiz.shark.auth"
             title="">
-      <field name="groupName" type="id-vlong"></field>
-      <field name="userName" type="id-vlong"></field>
+      <field name="groupName" type="long-varchar"></field>
+      <field name="userName" type="long-varchar"></field>
       <prim-key field="groupName"/>
       <prim-key field="userName"/>
     </entity>
     <entity entity-name="SharkGroupRollup"
             package-name="org.ofbiz.shark.auth"
             title="">
-      <field name="parentGroupName" type="id-vlong"></field>
-      <field name="groupName" type="id-vlong"></field>
+      <field name="parentGroupName" type="long-varchar"></field>
+      <field name="groupName" type="long-varchar"></field>
       <prim-key field="parentGroupName"/>
       <prim-key field="groupName"/>
     </entity>
     <entity entity-name="SharkUser"
             package-name="org.ofbiz.shark.auth"
             title="">
-      <field name="userName" type="id-vlong"></field>
+      <field name="userName" type="long-varchar"></field>
       <field name="firstName" type="long-varchar"></field>
       <field name="lastName" type="long-varchar"></field>
       <field name="passwd" type="long-varchar"></field>
@@ -131,21 +134,25 @@
     <entity entity-name="WfActivity"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="activityId" type="id-vlong"></field>
-      <field name="processId" type="id-vlong"></field>
-      <field name="setDefinitionId" type="id-long"></field>
-      <field name="definitionId" type="id-long"></field>
-      <field name="subFlowId" type="id-vlong"></field>
-      <field name="blockId" type="id-vlong"></field>
+      <field name="userName" type="long-varchar"></field>
+      <field name="activityId" type="long-varchar"></field>
+      <field name="processId" type="long-varchar"></field>
+      <field name="setDefinitionId" type="long-varchar"></field>
+      <field name="definitionId" type="long-varchar"></field>
+      <field name="subFlowId" type="long-varchar"></field>
+      <field name="blockId" type="long-varchar"></field>
       <field name="isSubAsync" type="indicator"></field>
       <field name="resourceUser" type="long-varchar"></field>
+        <field name="processMgrName" type="long-varchar"></field>
       <field name="activityName" type="long-varchar"></field>
       <field name="description" type="long-varchar"></field>
       <field name="currentState" type="long-varchar"></field>
       <field name="priority" type="numeric"></field>
-      <field name="activatedTime" type="date-time"></field>
-      <field name="acceptedTime" type="date-time"></field>
-      <field name="lastStateTime" type="date-time"></field>
+        <field name="accepted" type="indicator"></field>
+        <field name="timeLimit" type="long"></field>
+        <field name="activatedTime" type="long"></field>
+        <field name="acceptedTime" type="long"></field>
+        <field name="lastStateTime" type="long"></field>
       <prim-key field="activityId"/>
       <relation type="one" fk-name="WF_ACT_PROC" rel-entity-name="WfProcess">
           <key-map field-name="processId"/>
@@ -154,37 +161,43 @@
           <key-map field-name="subFlowId" rel-field-name="processId"/>
       </relation>
     </entity>
+    
     <entity entity-name="WfActivityVariable"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="activityVariableId" type="id"></field>
-      <field name="activityId" type="id-vlong"></field>
-      <field name="definitionId" type="id-long"></field>
+      <field name="activityVariableId" type="long-varchar"></field>
+      <field name="activityId" type="long-varchar"></field>
+      <field name="definitionId" type="long-varchar"></field>
       <field name="valueField" type="name"></field>
-      <field name="strValue" type="very-long"></field>
+      <field name="strValue" type="long-varchar"></field>
       <field name="numValue" type="numeric"></field>
       <field name="dblValue" type="floating-point"></field>
       <field name="objValue" type="blob"></field>
       <field name="isModified" type="indicator"></field>
       <prim-key field="activityVariableId"/>
     </entity>
+    
+    
     <entity entity-name="WfAndJoin"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="andJoinId" type="id-ne"></field>
-      <field name="processId" type="id-vlong"></field>
-      <field name="activityId" type="id-vlong"></field>
-      <field name="activityDefId" type="id-vlong"></field>
-      <field name="activitySetDefId" type="id-vlong"></field>
+      <field name="andJoinId" type="long-varchar"></field>
+      <field name="processId" type="long-varchar"></field>
+      <field name="activityId" type="long-varchar"></field>
+      <field name="activityDefId" type="long-varchar"></field>
+      <field name="activitySetDefId" type="long-varchar"></field>
       <prim-key field="andJoinId"/>
     </entity>
     <entity entity-name="WfAssignment"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="activityId" type="id-vlong"></field>
-      <field name="processId" type="id-vlong"></field>
-      <field name="userName" type="id-vlong"></field>
+      <field name="activityId" type="long-varchar"></field>
+      <field name="processId" type="long-varchar"></field>
+      <field name="userName" type="long-varchar"></field>
       <field name="isValid" type="indicator"></field>
+        <field name="mgrName" type="long-varchar"></field>
+        <field name="accepted" type="indicator"></field>
+
       <prim-key field="activityId"/>
       <prim-key field="userName"/>
       <relation type="one" fk-name="WF_ASSIGN_PROC" rel-entity-name="WfProcess">
@@ -197,11 +210,11 @@
     <entity entity-name="WfDeadline"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="deadlineId" type="id-ne"></field>
-      <field name="processId" type="id-vlong"></field>
-      <field name="activityId" type="id-vlong"></field>
+      <field name="deadlineId" type="long-varchar"></field>
+      <field name="processId" type="long-varchar"></field>
+      <field name="activityId" type="long-varchar"></field>
       <field name="exceptionName" type="long-varchar"></field>
-      <field name="timeLimit" type="numeric"></field>
+      <field name="timeLimit" type="long"></field>
       <field name="isExecuted" type="indicator"></field>
       <field name="isSync" type="indicator"></field>
       <prim-key field="deadlineId"/>
@@ -215,22 +228,24 @@
     <entity entity-name="WfProcess"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="processId" type="id-vlong"></field>
-      <field name="packageId" type="id-long"></field>
+      <field name="processId" type="long-varchar"></field>
+      <field name="packageId" type="long-varchar"></field>
       <field name="packageVer" type="long-varchar"></field>
-      <field name="mgrName" type="id-vlong"></field>
-      <field name="definitionId" type="id-long"></field>
-      <field name="activityReqProcessId" type="id-long"></field>
-      <field name="activityReqId" type="id-long"></field>
-      <field name="resourceReqId" type="id-long"></field>
+      <field name="mgrName" type="long-varchar"></field>
+      <field name="definitionId" type="long-varchar"></field>
+      <field name="activityReqProcessId" type="long-varchar"></field>
+      <field name="activityReqId" type="long-varchar"></field>
+      <field name="resourceReqId" type="long-varchar"></field>
+        <field name="timeLimit" type="long"></field>
       <field name="processName" type="long-varchar"></field>
       <field name="description" type="long-varchar"></field>
       <field name="currentState" type="long-varchar"></field>
       <field name="priority" type="numeric"></field>
       <field name="externalReq" type="blob"></field>
-      <field name="createdTime" type="date-time"></field>
-      <field name="startedTime" type="date-time"></field>
-      <field name="lastStateTime" type="date-time"></field>
+      <field name="createdTime" type="long"></field>
+      <field name="startedTime" type="long"></field>
+      <field name="lastStateTime" type="long"></field>
+            <field name="ExternalRequesterClassName" type="long-varchar"></field>
       <prim-key field="processId"/>
       <relation type="one" fk-name="WF_PROC_MGR" rel-entity-name="WfProcessMgr">
           <key-map field-name="mgrName"/>
@@ -239,22 +254,22 @@
     <entity entity-name="WfProcessMgr"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="mgrName" type="id-vlong"></field>
-      <field name="packageId" type="id-long"></field>
+      <field name="mgrName" type="long-varchar"></field>
+      <field name="packageId" type="long-varchar"></field>
       <field name="packageVer" type="long-varchar"></field>
-      <field name="definitionId" type="id-long"></field>
-      <field name="created" type="long-varchar"></field>
+      <field name="definitionId" type="long-varchar"></field>
+      <field name="created" type="long"></field>
       <field name="currentState" type="numeric"></field>
       <prim-key field="mgrName"/>
     </entity>
     <entity entity-name="WfProcessVariable"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="processVariableId" type="id"></field>
-      <field name="processId" type="id-vlong"></field>
-      <field name="definitionId" type="id-long"></field>
+      <field name="processVariableId" type="long-varchar"></field>
+      <field name="processId" type="long-varchar"></field>
+      <field name="definitionId" type="long-varchar"></field>
       <field name="valueField" type="name"></field>
-      <field name="strValue" type="very-long"></field>
+      <field name="strValue" type="long-varchar"></field>
       <field name="numValue" type="numeric"></field>
       <field name="dblValue" type="floating-point"></field>
       <field name="objValue" type="blob"></field>
@@ -263,8 +278,8 @@
     <entity entity-name="WfResource"
             package-name="org.ofbiz.shark.instance"
             title="">
-      <field name="userName" type="id-vlong"></field>
-      <field name="resourceName" type="id-vlong"></field>
+      <field name="userName" type="long-varchar"></field>
+      <field name="resourceName" type="long-varchar"></field>
       <prim-key field="userName"/>
     </entity>
 
@@ -274,11 +289,11 @@
     <entity entity-name="WfApplicationMap"
             package-name="org.ofbiz.shark.mapping"
             title="">
-      <field name="packageId" type="id-vlong"></field>
-      <field name="processDefId" type="id-vlong"></field>
-      <field name="applicationDefId" type="id-vlong"></field>
+      <field name="packageId" type="long-varchar"></field>
+      <field name="processDefId" type="long-varchar"></field>
+      <field name="applicationDefId" type="long-varchar"></field>
       <field name="toolAgentName" type="long-varchar"></field>
-      <field name="userName" type="id-vlong"></field>
+      <field name="userName" type="long-varchar"></field>
       <field name="passwd" type="long-varchar"></field>
       <field name="applicationName" type="long-varchar"></field>
       <field name="applicationMode" type="numeric"></field>
@@ -289,11 +304,11 @@
     <entity entity-name="WfParticipantMap"
             package-name="org.ofbiz.shark.mapping"
             title="">
-      <field name="participantMapId" type="id"></field>
-      <field name="packageId" type="id-vlong"></field>
-      <field name="processDefId" type="id-vlong"></field>
-      <field name="participantId" type="id-vlong"></field>
-      <field name="userName" type="id-vlong"></field>
+      <field name="participantMapId" type="long-varchar"></field>
+      <field name="packageId" type="long-varchar"></field>
+      <field name="processDefId" type="long-varchar"></field>
+      <field name="participantId" type="long-varchar"></field>
+      <field name="userName" type="long-varchar"></field>
       <field name="isGroupUser" type="indicator"></field>
       <prim-key field="participantMapId"/>
     </entity>
@@ -304,19 +319,22 @@
     <entity entity-name="WfRepository"
             package-name="org.ofbiz.shark.repository"
             title="">
-      <field name="xpdlId" type="id-ne"></field>
-      <field name="xpdlVersion" type="id-vlong"></field>
+      <field name="xpdlId" type="long-varchar"></field>
+      <field name="xpdlVersion" type="long-varchar"></field>
       <field name="xpdlData" type="blob"></field>
       <field name="isHistorical" type="indicator"></field>
+        <field name="XPDLClassVersion" type="long-varchar"></field>
+        <field name="serializedPkg" type="blob"></field>
       <prim-key field="xpdlId"/>
       <prim-key field="xpdlVersion"/>
     </entity>
     <entity entity-name="WfRepositoryRef"
             package-name="org.ofbiz.shark.repository"
             title="">
-      <field name="xpdlId" type="id-ne"></field>
-      <field name="xpdlVersion" type="id-vlong"></field>
-        <field name="refXpdlId" type="id-ne"></field>
+      <field name="xpdlId" type="long-varchar"></field>
+      <field name="xpdlVersion" type="long-varchar"></field>
+      <field name="refXpdlId" type="long-varchar"></field>
+        <field name="refNumber" type="long-varchar"></field>
       <prim-key field="xpdlId"/>
       <prim-key field="xpdlVersion"/>
       <prim-key field="refXpdlId"/>
@@ -328,12 +346,12 @@
     <entity entity-name="WfRequester"
             package-name="org.ofbiz.shark.requester"
             title="">
-      <field name="requesterId" type="id-ne"></field>
-      <field name="processId" type="id-vlong"></field>
-      <field name="fromDate" type="date-time"></field>
-      <field name="thruDate" type="date-time"></field>
-      <field name="className" type="id-vlong"></field>
-      <field name="classData" type="very-long"></field>
+      <field name="requesterId" type="long-varchar"></field>
+      <field name="processId" type="long-varchar"></field>
+      <field name="fromDate" type="long"></field>
+      <field name="thruDate" type="long"></field>
+      <field name="className" type="long-varchar"></field>
+      <field name="classData" type="long-varchar"></field>
       <prim-key field="requesterId"/>
       <prim-key field="processId"/>
       <prim-key field="fromDate"/>

Modified: ofbiz/trunk/framework/shark/src/org/enhydra/shark/ThreadedToolAgentManager.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/shark/src/org/enhydra/shark/ThreadedToolAgentManager.java?view=diff&rev=498425&r1=498424&r2=498425
==============================================================================
--- ofbiz/trunk/framework/shark/src/org/enhydra/shark/ThreadedToolAgentManager.java (original)
+++ ofbiz/trunk/framework/shark/src/org/enhydra/shark/ThreadedToolAgentManager.java Sun Jan 21 10:48:58 2007
@@ -18,453 +18,246 @@
  *******************************************************************************/
 package org.enhydra.shark;
 
-import java.util.List;
+
 import java.util.ArrayList;
-import java.util.Properties;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.HashMap;
-import java.util.Collection;
+import java.util.Properties;
 
-import org.enhydra.shark.api.internal.working.ToolAgentManager;
-import org.enhydra.shark.api.internal.working.WfActivityInternal;
-import org.enhydra.shark.api.internal.working.CallbackUtilities;
-import org.enhydra.shark.api.internal.working.WfProcessInternal;
+//import org.enhydra.jawe.xml.elements.Implementation;
+//import org.enhydra.jawe.xml.elements.Tools;
+import org.enhydra.shark.SharkEngineManager;
+import org.enhydra.shark.api.ApplicationMappingTransaction;
+import org.enhydra.shark.api.RootException;
+import org.enhydra.shark.api.SharkTransaction;
+import org.enhydra.shark.api.client.wfbase.BaseException;
+import org.enhydra.shark.api.internal.appmappersistence.ApplicationMap;
+import org.enhydra.shark.api.internal.appmappersistence.ApplicationMappingManager;
 import org.enhydra.shark.api.internal.toolagent.AppParameter;
+import org.enhydra.shark.api.internal.toolagent.ConnectFailed;
 import org.enhydra.shark.api.internal.toolagent.SessionHandle;
 import org.enhydra.shark.api.internal.toolagent.ToolAgent;
-import org.enhydra.shark.api.internal.toolagent.ConnectFailed;
+
 import org.enhydra.shark.api.internal.toolagent.ToolAgentGeneralException;
-import org.enhydra.shark.api.internal.appmappersistence.ApplicationMap;
-import org.enhydra.shark.api.internal.appmappersistence.ApplicationMappingManager;
-import org.enhydra.shark.api.SharkTransaction;
-import org.enhydra.shark.api.RootException;
-import org.enhydra.shark.api.TransactionException;
-import org.enhydra.shark.api.ApplicationMappingTransaction;
-import org.enhydra.shark.api.client.wfbase.BaseException;
-import org.enhydra.shark.api.client.wfmodel.InvalidData;
-import org.enhydra.shark.api.client.wfmodel.UpdateNotAllowed;
-import org.enhydra.shark.api.client.wfmodel.CannotComplete;
-import org.enhydra.shark.xpdl.elements.Tool;
-import org.enhydra.shark.xpdl.elements.WorkflowProcess;
-import org.enhydra.shark.xpdl.elements.Application;
+import org.enhydra.shark.api.internal.working.CallbackUtilities;
+import org.enhydra.shark.api.internal.working.ToolAgentManager;
+import org.enhydra.shark.api.internal.working.WfActivityInternal;
+import org.enhydra.shark.api.internal.working.WfProcessInternal;
+
+import org.enhydra.shark.xpdl.XMLComplexElement;
+import org.enhydra.shark.xpdl.XPDLConstants;
+import org.enhydra.shark.xpdl.XMLUtil;
+import org.enhydra.shark.xpdl.elements.Activity;
+import org.enhydra.shark.xpdl.elements.ActivityTypes;
+import org.enhydra.shark.xpdl.elements.ActualParameter;
 import org.enhydra.shark.xpdl.elements.ActualParameters;
-import org.enhydra.shark.xpdl.elements.FormalParameters;
+import org.enhydra.shark.xpdl.elements.Application;
 import org.enhydra.shark.xpdl.elements.FormalParameter;
-import org.enhydra.shark.xpdl.elements.ActualParameter;
-import org.enhydra.shark.xpdl.XMLComplexChoice;
-import org.enhydra.shark.xpdl.XMLComplexElement;
+import org.enhydra.shark.xpdl.elements.FormalParameters;
+import org.enhydra.shark.xpdl.elements.ImplementationTypes;
+import org.enhydra.shark.xpdl.elements.Tool;
+import org.enhydra.shark.xpdl.elements.WorkflowProcess;
 
+/**
+ * Executes tool agents for Tool activities.
+ */
 public class ThreadedToolAgentManager implements ToolAgentManager {
 
-    private final static String TOOL_AGENT_PREFIX = "ToolAgent.";
-    private final static String DEFAULT_TOOL_AGENT = "DefaultToolAgent";
-    private final static long APP_STATUS_INVALID = -1;
-    private static List toolMonitors = new ArrayList();
-
-    private String defaultToolAgentClassName = null;
-    private List toolAgents = null;
-    private CallbackUtilities cus = null;
-
-    ThreadedToolAgentManager() {
-        this.cus = SharkEngineManager.getInstance().getCallbackUtilities();
-        createToolAgentList();
-    }
-
-    public void executeActivity(SharkTransaction t, WfActivityInternal act) throws BaseException, ToolAgentGeneralException {
-        ThreadedToolAgentManager.toolMonitors.add(new ToolRunnerManager(t, act));
-    }
-
-    /**
-     * Returns all tool agents registered at nameserver.
-     */
-    public String[] getDefinedToolAgents() {
-        String[] ata = new String[toolAgents.size()];
-        toolAgents.toArray(ata);
-        return ata;
-    }
-
-    private void createToolAgentList() {
-        this.toolAgents = new ArrayList();
-        String taName = null;
-        String className = null;
-        Properties props = cus.getProperties();
-
-        Iterator it = props.entrySet().iterator();
-        while (it.hasNext()) {
-            try {
-                Map.Entry me = (Map.Entry) it.next();
-                taName = me.getKey().toString();
-                if (taName.startsWith(TOOL_AGENT_PREFIX)) {
-                    taName = taName.substring(TOOL_AGENT_PREFIX.length());
-                    className = me.getValue().toString();
-                    toolAgents.add(className);
-                }
-            } catch (Throwable ex) {
-                //ex.printStackTrace();
-                cus.error("ToolAgentManager -> Creation of Tool Agent " + taName + " from clas " + className + " failed !!!");
-            }
-        }
-
-        // setting default tool agent
-        try {
-            defaultToolAgentClassName = (String) props.get(DEFAULT_TOOL_AGENT);
-
-        } catch (Throwable ex) {
-            cus.error("ToolAgentManager -> Creation of Default Tool Agent failed !!!");
-        }
-    }
-
-    public static int howManyActivitiesRunning() {
-        return ThreadedToolAgentManager.toolMonitors.size();
-    }
-
-    private synchronized static void removeToolMonitor(ToolRunnerManager monitor) {
-        ThreadedToolAgentManager.toolMonitors.remove(monitor);
-    }
-
-    class ToolContext {
-
-        private Tool tool;
-        private Application app;
-        private ApplicationMap appMap;
-        private String packageId;
-        private String processId;
-        private String activityId;
-        private String resource;
-        private AppParameter[] params;
-
-        public ToolContext(Tool tool, Application app, ApplicationMap appMap, String pkgId,
-                String procId, String actId, String resource, AppParameter[] params) {
-            this.tool = tool;
-            this.app = app;
-            this.appMap = appMap;
-            this.packageId = pkgId;
-            this.processId = procId;
-            this.activityId = actId;
-            this.resource = resource;
-            this.params = params;
-        }
-
-        public Tool getTool() {
-            return tool;
-        }
-
-        public Application getApplication() {
-            return app;
-        }
-
-        public ApplicationMap getApplicationMap() {
-            return appMap;
-        }
-
-        public String getPackageId() {
-            return packageId;
-        }
-
-        public String getProcessId() {
-            return processId;
-        }
+   private final static long APP_STATUS_INVALID=-1;
 
-        public String getActivityId() {
-            return activityId;
-        }
-
-        public String getActivityResource() {
-            return resource;
-        }
+   private final static String DEFAULT_TOOL_AGENT="DefaultToolAgent";
 
-        public AppParameter[] getParameters() {
-            return params;
-        }
-    }
-
-    class ToolRunnerManager implements Runnable {
-
-        private String packageKey;
-        private String packageVer;
-        private String processKey;
-        private String activityKey;
-        private String resource;
-        private List tools;
-        private Map context;
-
-        private Map toolResults;
-        private List runners;
-        private Thread thread;
-        private boolean isRunning = false;
-
-        public ToolRunnerManager(SharkTransaction trans, WfActivityInternal activity) throws BaseException {
-            this.packageKey = activity.container(trans).package_id(trans);
-            this.packageVer = activity.container(trans).manager_version(trans);
-            this.processKey = activity.container(trans).key(trans);
-            this.packageKey = activity.container(trans).package_id(trans);
-            this.activityKey = activity.key(trans);
-            this.resource = activity.getResourceUsername(trans);
-            this.context = activity.process_context(trans);
-            this.tools = this.getTools(trans, activity);
-            this.toolResults = new HashMap();
-            this.runners = new ArrayList();
-
-            // start the thread
-            thread = new Thread(this);
-            thread.setDaemon(false);
-            thread.setName(this.getClass().getName());
-            thread.start();
-        }
+   private String defaultToolAgentClassName;
 
-        private Collection getToolObjs(SharkTransaction trans, WfActivityInternal activity) throws BaseException {
-            WfProcessInternal pr = activity.container(trans);
-            WorkflowProcess wp = SharkUtilities.getWorkflowProcess(pr.manager(trans).package_id(trans),
-                    pr.manager_version(trans), pr.manager(trans).process_definition_id(trans));
+   private CallbackUtilities cus;
 
-            return SharkUtilities.getActivityDefinition(trans, activity, wp,
-                    activity.block_activity(trans)).getTools().toCollection();
-        }
-
-        private List getTools(SharkTransaction trans, WfActivityInternal activity) throws BaseException {
-            Collection tools = getToolObjs(trans, activity);
-
-            List toolList = null;
-            if (tools != null) {
-                toolList = new ArrayList();
-                Iterator i = tools.iterator();
-                while (i.hasNext()) {
-                    Tool tool = (Tool) i.next();
-                    String toolId = tool.getID();
-
-                    Application app = (Application) ((XMLComplexChoice) tool.get("Application")).getChoosen();
-                    ApplicationMap appMap = null;
-                    try {
-                        appMap = getApplicationMap(app, toolId);
-                    } catch (Exception e) {
-                        throw new BaseException(e);
-                    }
-
-                    AppParameter[] params = null;
-                    try {
-                        params = makeParameters(trans, tool, app);
-                    } catch (Exception e) {
-                        throw new BaseException(e);
-                    }
-                    ToolContext ctx = new ToolContext(tool, app, appMap, packageKey, processKey, activityKey, resource, params);
-                    toolList.add(ctx);
-                }
-            }
-            return toolList;
-        }
+   protected ThreadedToolAgentManager () {
+      this.cus=SharkEngineManager.getInstance().getCallbackUtilities();
+      Properties props= cus.getProperties();
+      // setting default tool agent
+      try {
+         defaultToolAgentClassName=(String)props.get(DEFAULT_TOOL_AGENT);
+      } catch (Throwable ex) {
+         cus.error("ToolAgentManagerImpl -> Can't read default tool agent name - can't work without mappings !!!");
+      }
+   }
+
+   public void executeActivity (SharkTransaction t,WfActivityInternal act) throws BaseException, ToolAgentGeneralException {
+      ToolRunner tr=new ToolRunner(t,act);
+      tr.run();
+   }
+
+   protected class ToolRunner{// implements Runnable {
+      protected WfActivityInternal activity;
+      protected Activity actDef;
+      protected SharkTransaction transaction;
+
+      protected ToolRunner (SharkTransaction t,WfActivityInternal wai) throws BaseException {
+         this.transaction=t;
+         this.activity=wai;
+         WfProcessInternal pr=wai.container(t);
+         WorkflowProcess wp=SharkUtilities.
+            getWorkflowProcess(pr.package_id(t),
+                               pr.manager_version(t),
+                               pr.process_definition_id(t));
+         this.actDef=SharkUtilities.getActivityDefinition(t,wai,wp,wai.block_activity(t));
+      }
+
+      public void run () throws BaseException, ToolAgentGeneralException {
+          Iterator tools = null;
+          try{
+         ActivityTypes acTypes = actDef.getActivityTypes();
+         org.enhydra.shark.xpdl.elements.Implementation impl = acTypes.getImplementation();
+         ImplementationTypes implt = impl.getImplementationTypes();
+         org.enhydra.shark.xpdl.elements.Tools tolls = implt.getTools();
+         ArrayList al = tolls.toElements();
+         tools = al.iterator();
+          }catch (Exception e) {
+              e.printStackTrace();
+              throw new BaseException(e);
+        }
+        
+         while(tools.hasNext()) {
+            Tool tool = (Tool)tools.next();
+            cus.info("Activity"+activity.toString()+" - Executing tool [id="+tool.getId()+"]");
+            // implement me
+            /*if (tool.get("Type").toValue().toString().equals("APPLICATION")){
+             } else {*/
+            try {
+               invokeApplication(tool);
+               // if some application is not executed, throw an exception
+            } catch (Throwable ex) {
+               cus.error("Activity"+activity.toString()+" - failed to execute tool [id="+tool.getId()+"]");
+               if (ex instanceof ToolAgentGeneralException) {
+                  throw (ToolAgentGeneralException)ex;
+               } else {
+                  throw new BaseException(ex);
+               }
+            }
+            //}
+         }
+      }
+
+      protected Map createContextMap (ActualParameters aps,FormalParameters fps) throws Exception {
+         return SharkUtilities.createContextMap(transaction,activity,aps,fps);
+      }
+
+      protected String getAssignmentId (String procId,String actId) throws Exception {
+         String actRes=activity.getResourceRequesterUsername(transaction);
+         String assId=SharkUtilities.createAssignmentKey(actId,actRes);
+         return assId;
+      }
+
+      protected void invokeApplication(Tool tool) throws Throwable {
+         String applicationId = tool.getId();
+         Application app=SharkUtilities.getApplication(tool, applicationId);
+
+          ArrayList parameters = new ArrayList();
+
+         // the extended attributes are always the first parameter passed to tool agent
+         String appPStr=app.getExtendedAttributes().getExtendedAttributesString();
+          AppParameter param=new AppParameter("ExtendedAttributes","ExtendedAttributes",XPDLConstants.FORMAL_PARAMETER_MODE_IN,appPStr,String.class);
+         parameters.add(param);
+
+         ActualParameters aps=tool.getActualParameters();
+         FormalParameters fps=app.getApplicationTypes().getFormalParameters();
+         Map m=createContextMap(aps,fps);
+         Iterator itFps=fps.toElements().iterator();
+         Iterator itAps=aps.toElements().iterator();
+         while (itFps.hasNext() && itAps.hasNext()) {
+            FormalParameter fp=(FormalParameter)itFps.next();
+            ActualParameter ap=(ActualParameter)itAps.next();
+            String fpMode=fp.getMode();
+            String fpId=fp.getId();
+            Object paramVal=m.get(fpId);
 
-        private AppParameter[] makeParameters(SharkTransaction transaction, Tool tool, Application app) throws Exception {
-            // build up the parameters
-            List parameters = new ArrayList();
-
-            // the extended attributes are always the first parameter passed to tool agent
-            String appPStr = app.getExtendedAttributesString();
-            AppParameter param = new AppParameter("ExtendedAttributes", "ExtendedAttributes", AppParameter.MODE_IN, appPStr, String.class);
+            param=new AppParameter(ap.toValue(),fpId,fpMode,paramVal,SharkUtilities.getJavaClass(fp));
             parameters.add(param);
-
-            ActualParameters aps = (ActualParameters) tool.get("ActualParameters");
-            FormalParameters fps = (FormalParameters) ((XMLComplexChoice) app.get("Choice")).getChoosen();
-            Map ctxMap = SharkUtilities.createContextMap(transaction, context, aps, fps, packageKey, packageVer);
-
-            Iterator itFps = fps.toCollection().iterator();
-            Iterator itAps = aps.toCollection().iterator();
-            while (itFps.hasNext() && itAps.hasNext()) {
-                FormalParameter fp = (FormalParameter) itFps.next();
-                ActualParameter ap = (ActualParameter) itAps.next();
-                String fpMode = fp.get("Mode").toValue().toString();
-                String fpId = fp.getID();
-                Object paramVal = ctxMap.get(fpId);
-
-                // JAWE's CLASSES DataField and FormalParameter RETURNS ITs
-                // Id ATTRIBUTE WHEN METHOD toString() is CALLED (when calling
-                // ap.toValue().toString(), it can be called toString() method of
-                // these two classes)
-                param = new AppParameter(ap.toValue().toString(), fpId, fpMode, paramVal, SharkUtilities.getJavaClass(fp));
-                parameters.add(param);
-            }
-
-            return (AppParameter[]) parameters.toArray(new AppParameter[parameters.size()]);
-        }
-
-        private ApplicationMap getApplicationMap(Application app, String applicationId) throws Exception {
-            // find mapped procedure - but we can also live without mapping
-            // manager (but we can't without ToolAgentFactory
-            ApplicationMappingManager mm = SharkEngineManager.getInstance().getApplicationMapPersistenceManager();
-            ApplicationMap tad = null;
-            if (mm != null) {
-                XMLComplexElement cOwn = app.getCollection().getOwner();
-                boolean isProcessApp = (cOwn instanceof WorkflowProcess);
-                ApplicationMappingTransaction t = null;
-                try {
-                    t = SharkUtilities.createApplicationMappingTransaction();
-                    tad = SharkEngineManager.getInstance().getApplicationMapPersistenceManager().
-                            getApplicationMap(t, app.getPackage().get("Id").toString(),
-                                    ((isProcessApp) ? cOwn.get("Id").toString() : null), applicationId);
-                } catch (RootException e) {
-                    throw e;
-                } finally {
-                    SharkUtilities.releaseMappingTransaction(t);
-                }
-            }
-
-            return tad;
-        }
-
-        public void run() {
-            this.isRunning = true;
-
-            // start the tools
-            Iterator ti = tools.iterator();
-            while (ti.hasNext()) {
-                ToolContext tool = (ToolContext) ti.next();
-                runners.add(new ToolRunner(tool));
-            }
-
-            // monitor the tools
-            while (isRunning) {
-                // check tool status
-                Iterator ri = runners.iterator();
-                while (ri.hasNext()) {
-                    ToolRunner runner = (ToolRunner) ri.next();
-                    if (!runner.isRunning()) {
-                        // check for errors
-                        Throwable toolError = runner.getError();
-                        if (toolError != null) {
-                            // handle tool error
-                        } else {
-                            // get the results
-                            Map thisResult = runner.getResults();
-                            if (thisResult != null) {
-                                toolResults.putAll(thisResult);
-                            }
-                        }
-                        // remove the runner from the waiting list
-                        ri.remove();
-                    }
-                }
-
-                // sleep for a while then run again
-                try {
-                    Thread.sleep(5000);
-                } catch (InterruptedException e) {
-                }
-            }
-
-            // all tools finished - need a transaction and internal activity object
-            SharkTransaction trans = null;
-            WfActivityInternal act = null;
-
+         }
+         ApplicationMappingManager mm=SharkEngineManager.getInstance().getApplicationMapPersistenceManager();
+         ApplicationMap tad=null;
+         if (mm!=null) {
+            XMLComplexElement cOwn=(XMLComplexElement)app.getParent().getParent();
+            boolean isProcessApp=(cOwn instanceof WorkflowProcess);
+            ApplicationMappingTransaction t=null;
             try {
-                trans = SharkUtilities.createTransaction();
-                act = SharkUtilities.getActivity(trans, processKey, activityKey);
-                act.set_process_context(trans, toolResults);
-                act.finish(trans);
-            } catch (TransactionException e) {
-                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-            } catch (BaseException e) {
-                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-            } catch (UpdateNotAllowed e) {
-                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-            } catch (InvalidData e) {
-                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-            } catch (CannotComplete e) {
-                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-            }
-
-            // clear out the reference in parent class
-            ThreadedToolAgentManager.removeToolMonitor(this);
-        }
-
-        class ToolRunner implements Runnable {
-
-            private Thread thread;
-            private ToolContext tool;
-
-            private boolean isRunning = false;
-            private Throwable error = null;
-            private Map results = null;
-
-            ToolRunner(ToolContext tool) {
-                this.tool = tool;
-
-                // run the tool
-                thread = new Thread(this);
-                thread.setDaemon(false);
-                thread.setName(this.getClass().getName());
-                thread.start();
-            }
-
-            public void run() {
-                this.isRunning = true;
-                try {
-                    this.results = this.runTool(null);
-                } catch (Exception e) {
-                    this.error = e;
-                }
-                this.isRunning = false;
-            }
-
-            public boolean isRunning() {
-                return this.isRunning;
-            }
-
-            public Throwable getError() {
-                return this.error;
-            }
+               t = SharkUtilities.createApplicationMappingTransaction();
+               tad= mm.getApplicationMap(
+                                    t,
+                                    XMLUtil.getPackage(app).getId(),
+                                       ((isProcessApp)? cOwn.get("Id").toValue() : null),
+                                    applicationId
+                                   );
+               SharkUtilities.commitMappingTransaction(t);
+            } catch (RootException e) {
+               SharkUtilities.rollbackMappingTransaction(t,e);
+               throw e;
+            } finally {
+               SharkUtilities.releaseMappingTransaction(t);
+            }
+         }
+         SessionHandle shandle=null;
+         String tacn=(tad!=null) ? tad.getToolAgentClassName() : defaultToolAgentClassName;
+         String uname=(tad!=null) ? tad.getUsername() : "";
+         String pwd=(tad!=null) ? tad.getPassword() : "";
+         String appN=(tad!=null) ? tad.getApplicationName() : "";
+         Integer appM=(tad!=null) ? tad.getApplicationMode() : null;
+         ToolAgent ta=SharkEngineManager.getInstance().
+            getToolAgentFactory().
+            createToolAgent(transaction,tacn);
+         // try to connect to the tool agent
+         try {
+            shandle=ta.connect(transaction,uname,pwd,cus.getProperty("enginename","imaobihostrezube"),"");
+         } catch (ConnectFailed cf) {
+            cus.error("Activity"+activity.toString()+" - connection to Tool agent "+tacn+" failed !");
+            throw cf;
+         }
+
+         String procId=activity.container(transaction).key(transaction);
+         String actKey=activity.key(transaction);
+         String assId=getAssignmentId(procId,actKey);
+
+         // invoke the procedure with the specified parameters
+         AppParameter[] aprs=(AppParameter[])parameters.toArray(
+                                                                new AppParameter[parameters.size()]);
+         ta.invokeApplication(transaction,
+                              shandle.getHandle(),
+                              appN,
+                              procId,
+                              assId,
+                              aprs,
+                              appM);
+         long appStatus;
+
+
+         appStatus=ta.requestAppStatus(transaction,
+                                       shandle.getHandle(),
+                                       procId,
+                                       assId,
+                                       aprs);
+         if (appStatus==APP_STATUS_INVALID) {
+            ta.disconnect(transaction,shandle);
+            throw new Exception("Tool agent status is invalid!");
+         }
+         ta.disconnect(transaction,shandle);
+
+         AppParameter[] returnValues=aprs;
+
+         // copy the return values into the workflow data
+         Map newData=new HashMap();
+         for(int i = 0; i < returnValues.length; i++){
+            if (returnValues[i].the_mode.equals(XPDLConstants.FORMAL_PARAMETER_MODE_OUT) ||
+                   returnValues[i].the_mode.equals(XPDLConstants.FORMAL_PARAMETER_MODE_INOUT)) {
+               String name = returnValues[i].the_actual_name;
+               Object value = returnValues[i].the_value;
+               newData.put(name,value);
+            }
+         }
+         activity.set_result(transaction,newData);
+      }
+   }
+}
 
-            public Map getResults() {
-                return this.results;
-            }
 
-            private Map runTool(SharkTransaction transaction) throws Exception {
-                // get the application to run
-                ApplicationMap tad = tool.getApplicationMap();
-
-                // connect to the tool
-                String tacn = (tad != null) ? tad.getToolAgentClassName() : defaultToolAgentClassName;
-                String uname = (tad != null) ? tad.getUsername() : "";
-                String pwd = (tad != null) ? tad.getPassword() : "";
-                String appN = (tad != null) ? tad.getApplicationName() : "";
-                Integer appM = (tad != null) ? tad.getApplicationMode() : null;
-                ToolAgent ta = SharkEngineManager.getInstance().getToolAgentFactory().createToolAgent(transaction, tacn);
-
-                SessionHandle shandle = null;
-                // try to connect to the tool agent
-                try {
-                    shandle = ta.connect(transaction, uname, pwd, cus.getProperty("enginename", "imaobihostrezube"), "");
-                } catch (ConnectFailed cf) {
-                    cus.error("Activity[" + tool.getActivityId() + "] - connection to Tool agent " + tacn + " failed !");
-                    throw cf;
-                }
-
-                String assId = SharkUtilities.createAssignmentKey(tool.getActivityId(), resource);
-
-                // invoke the application
-                ta.invokeApplication(transaction, shandle.getHandle(), appN, tool.getProcessId(), assId, tool.getParameters(), appM);
-
-                // check the status
-                long appStatus = ta.requestAppStatus(transaction, shandle.getHandle(), tool.getProcessId(), assId, tool.getParameters());
-                if (appStatus == APP_STATUS_INVALID) {
-                    ta.disconnect(transaction, shandle);
-                    throw new Exception();
-                }
-                ta.disconnect(transaction, shandle);
-
-                // return the result parameters
-                AppParameter[] returnValues = tool.getParameters();
-                Map newData = new HashMap();
-                for (int i = 0; i < returnValues.length; i++) {
-                    if (returnValues[i].the_mode.equals(AppParameter.MODE_OUT) ||
-                            returnValues[i].the_mode.equals(AppParameter.MODE_INOUT)) {
-                        String name = returnValues[i].the_actual_name;
-                        Object value = returnValues[i].the_value;
-                        newData.put(name, value);
-                    }
-                }
 
-                return newData;
-            }
-        }
-    }
-}

Added: ofbiz/trunk/framework/shark/src/org/ofbiz/shark/SharkConstants.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/shark/src/org/ofbiz/shark/SharkConstants.java?view=auto&rev=498425
==============================================================================
--- ofbiz/trunk/framework/shark/src/org/ofbiz/shark/SharkConstants.java (added)
+++ ofbiz/trunk/framework/shark/src/org/ofbiz/shark/SharkConstants.java Sun Jan 21 10:48:58 2007
@@ -0,0 +1,146 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+
+package org.ofbiz.shark;
+
+public class SharkConstants {
+
+    public static String WfAssignmentEventAudit = new String("WfAssignmentEventAudit");
+    public static String eventAuditId = new String("eventAuditId");
+    public static String oldUserName = new String("oldUserName");
+    public static String oldName = new String("oldName");
+    public static String newUserName = new String("newUserName");
+    public static String newName = new String("newName");
+    public static String isAccepted = new String("isAccepted");
+    public static String WfCreateProcessEventAudit = new String("WfCreateProcessEventAudit");
+    public static String pActivityId = new String("pActivityId");
+    public static String pActivityDefId = new String("pActivityDefId");
+    public static String pActivitySetDefId = new String("pActivitySetDefId");
+    public static String pProcessId = new String("pProcessId");
+    public static String pProcessName = new String("pProcessName");
+    public static String pProcessDefId = new String(