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( |
Free forum by Nabble | Edit this page |