mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
- jBPM 3.1.2 to 3.2 upgrade
- Implementation of Workflow Timers (primarily for WCM content launch, but also useful in other scenarios) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5578 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -34,14 +34,23 @@
|
||||
<mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>
|
||||
|
||||
<!-- following mapping files have a dependendy on -->
|
||||
<!-- 'jbpm-identity-{version}.jar', mapping files -->
|
||||
<!-- 'jbpm-identity.jar', mapping files -->
|
||||
<!-- of the pluggable jbpm identity component. -->
|
||||
<!-- comment out the following 3 lines if you don't-->
|
||||
<!-- want to use the default jBPM identity mgmgt -->
|
||||
<!-- component -->
|
||||
<!-- Uncomment the following 3 lines if you -->
|
||||
<!-- want to use the jBPM identity mgmgt -->
|
||||
<!-- component. -->
|
||||
<!-- identity mappings (begin) -->
|
||||
<mapping resource="org/jbpm/identity/User.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/identity/Group.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/identity/Membership.hbm.xml"/>
|
||||
<!-- identity mappings (end) -->
|
||||
|
||||
<!-- following mapping files have a dependendy on -->
|
||||
<!-- the JCR API -->
|
||||
<!-- jcr mappings (begin) ===
|
||||
<mapping resource="org/jbpm/context/exe/variableinstance/JcrNodeInstance.hbm.xml"/>
|
||||
==== jcr mappings (end) -->
|
||||
|
||||
|
||||
<!-- ###################### -->
|
||||
<!-- # jbpm mapping files # -->
|
||||
@@ -115,13 +124,11 @@
|
||||
<mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>
|
||||
|
||||
<!-- msg.db mapping files -->
|
||||
<mapping resource="org/jbpm/msg/Message.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/msg/db/TextMessage.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/command/ExecuteActionCommand.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/command/ExecuteNodeCommand.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/command/SignalCommand.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/command/TaskInstanceEndCommand.hbm.xml"/>
|
||||
<!-- job mapping files -->
|
||||
<mapping resource="org/jbpm/job/Job.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/job/Timer.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>
|
||||
|
||||
<!-- taskmgmt.exe mapping files -->
|
||||
<mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
|
||||
@@ -129,9 +136,6 @@
|
||||
<mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>
|
||||
|
||||
<!-- scheduler.exe mapping files -->
|
||||
<mapping resource="org/jbpm/scheduler/exe/Timer.hbm.xml"/>
|
||||
|
||||
<!-- logging mapping files -->
|
||||
<mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
|
||||
<mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
|
||||
|
14
source/test-resources/jbpmresources/test-messages.properties
Normal file
14
source/test-resources/jbpmresources/test-messages.properties
Normal file
@@ -0,0 +1,14 @@
|
||||
test.workflow.title=Test
|
||||
test.workflow.description=Workflow for testing purposes
|
||||
|
||||
test.node.start.title=Start
|
||||
test.node.start.description=The Start
|
||||
test.node.review.title=Review
|
||||
test.node.review.description=The Review
|
||||
test.node.end.title=End
|
||||
test.node.end.description=The End
|
||||
|
||||
test.node.start.transition.review=Review
|
||||
|
||||
test.task.submit.title=Submit Review Title
|
||||
test.task.submit.description=Submit Review Description
|
52
source/test-resources/jbpmresources/test_decision.xml
Normal file
52
source/test-resources/jbpmresources/test_decision.xml
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="test_decision_patch">
|
||||
|
||||
<swimlane name="initiator" />
|
||||
|
||||
<start-state name="start">
|
||||
<task name="wf:submitTask" swimlane="initiator" />
|
||||
<transition name="" to="decide" />
|
||||
<event type="node-leave">
|
||||
<script>
|
||||
<variable name="value" access="write"/>
|
||||
<expression>value = false</expression>
|
||||
</script>
|
||||
</event>
|
||||
</start-state>
|
||||
|
||||
<swimlane name="assignee">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<actor>#{bpm_assignee}</actor>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<decision name="decide">
|
||||
<event type="node-enter">
|
||||
<script>System.out.println("Value = " + value);</script>
|
||||
</event>
|
||||
<transition name="true" to="true">
|
||||
<condition>#{value == true}</condition>
|
||||
</transition>
|
||||
<transition name="false" to="false">
|
||||
<condition>#{value == false}</condition>
|
||||
</transition>
|
||||
</decision>
|
||||
|
||||
<node name="true">
|
||||
<event type="node-enter">
|
||||
<script>System.out.println("TRUE");</script>
|
||||
</event>
|
||||
<transition name="" to="end" />
|
||||
</node>
|
||||
|
||||
<node name="false">
|
||||
<event type="node-enter">
|
||||
<script>System.out.println("FALSE");</script>
|
||||
</event>
|
||||
<transition name="" to="end" />
|
||||
</node>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
48
source/test-resources/jbpmresources/test_groups.xml
Normal file
48
source/test-resources/jbpmresources/test_groups.xml
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:grouptasks">
|
||||
|
||||
<swimlane name="initiator" />
|
||||
|
||||
<start-state name="start">
|
||||
<task name="wf:submitGroupReviewTask" swimlane="initiator" />
|
||||
<transition name="" to="review" />
|
||||
<transition name="parallel" to="parallel" />
|
||||
</start-state>
|
||||
|
||||
<swimlane name="reviewer">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<pooledactors>#{bpm_groupAssignee}</pooledactors>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<task-node name="review">
|
||||
<task name="wf:reviewTask" swimlane="reviewer"/>
|
||||
<transition name="reject" to="end" />
|
||||
<transition name="approve" to="end" />
|
||||
</task-node>
|
||||
|
||||
<node name="parallel">
|
||||
<action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
|
||||
<foreach>#{people.getMembers(bpm_groupAssignee)}</foreach>
|
||||
<var>reviewer</var>
|
||||
</action>
|
||||
<transition name="review" to="parallelreview" />
|
||||
</node>
|
||||
|
||||
<task-node name="parallelreview">
|
||||
<task name="wf:reviewTask">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<actor>#{reviewer}</actor>
|
||||
</assignment>
|
||||
</task>
|
||||
<transition name="" to="endparallel" />
|
||||
</task-node>
|
||||
|
||||
<join name="endparallel">
|
||||
<transition to="end" />
|
||||
</join>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
25
source/test-resources/jbpmresources/test_pooledtasks.xml
Normal file
25
source/test-resources/jbpmresources/test_pooledtasks.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:pooledtasks">
|
||||
|
||||
<swimlane name="initiator" />
|
||||
|
||||
<start-state name="start">
|
||||
<task name="wf:submitParallelReviewTask" swimlane="initiator" />
|
||||
<transition name="" to="review" />
|
||||
</start-state>
|
||||
|
||||
<swimlane name="reviewer">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<pooledactors>#{bpm_assignees}</pooledactors>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<task-node name="review">
|
||||
<task name="wf:reviewTask" swimlane="reviewer"/>
|
||||
<transition name="" to="end" />
|
||||
</task-node>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="test">
|
||||
<swimlane name="initiator"></swimlane>
|
||||
|
||||
<start-state name="start">
|
||||
<task name="submit" swimlane="initiator">
|
||||
<controller>
|
||||
<variable name="reviewer" access="write,required" />
|
||||
<variable name="testNode" access="write,required" />
|
||||
</controller>
|
||||
</task>
|
||||
<transition name="" to="review">
|
||||
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
|
||||
<script>
|
||||
<expression>
|
||||
function result()
|
||||
{
|
||||
return ("Initiator: " + initiator.properties["cm:userName"] + ", process instance = " + executionContext.processInstance.id + ", testNode children = " + testNode.children.length);
|
||||
}
|
||||
result();
|
||||
</expression>
|
||||
<variable name="scriptResult" access="write"/>
|
||||
</script>
|
||||
</action>
|
||||
</transition>
|
||||
<transition name="end" to="end"/>
|
||||
</start-state>
|
||||
|
||||
<swimlane name="reviewer">
|
||||
<assignment actor-id="#{reviewer}"></assignment>
|
||||
</swimlane>
|
||||
|
||||
<task-node name="review">
|
||||
<event type="node-enter">
|
||||
<script>
|
||||
System.out.println("company home: " + companyhome.name);
|
||||
System.out.println("initiator home: " + initiatorhome.name);
|
||||
System.out.println("the reviewer is " + reviewer);
|
||||
System.out.println("node " + testNode.name + " contains " + testNode.children.length + " children");
|
||||
System.out.println("scriptResult = " + scriptResult);
|
||||
</script>
|
||||
</event>
|
||||
<task name="review" duedate="1 business day" blocking="true" swimlane="reviewer">
|
||||
<controller>
|
||||
<variable name="comment" access="read,write,required"></variable>
|
||||
</controller>
|
||||
</task>
|
||||
<transition name="" to="end"></transition>
|
||||
</task-node>
|
||||
|
||||
<end-state name="end"></end-state>
|
||||
|
||||
</process-definition>
|
24
source/test-resources/jbpmresources/test_processevents.xml
Normal file
24
source/test-resources/jbpmresources/test_processevents.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="test_processevents">
|
||||
|
||||
<event type="process-start">
|
||||
<script>
|
||||
System.out.println("Process start");
|
||||
</script>
|
||||
</event>
|
||||
|
||||
<start-state name="start">
|
||||
<transition to="end"/>
|
||||
</start-state>
|
||||
|
||||
<end-state name="end"/>
|
||||
|
||||
<event type="process-end">
|
||||
<script>
|
||||
if (cancelled) { System.out.println("cancelled"); }
|
||||
System.out.println("Process end: " + cancelled);
|
||||
</script>
|
||||
</event>
|
||||
|
||||
</process-definition>
|
65
source/test-resources/jbpmresources/test_script.xml
Normal file
65
source/test-resources/jbpmresources/test_script.xml
Normal file
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="test_script">
|
||||
<swimlane name="initiator"></swimlane>
|
||||
|
||||
<start-state name="start">
|
||||
<task name="submit" swimlane="initiator">
|
||||
<event type="task-assign">
|
||||
<script>
|
||||
System.out.println("taskInstance.create: " + taskInstance.create);
|
||||
System.out.println("taskInstance.description: " + taskInstance.description);
|
||||
</script>
|
||||
</event>
|
||||
<controller>
|
||||
<variable name="testNode" access="write,required" />
|
||||
<variable name="bpm_workflowDescription" access="write" />
|
||||
</controller>
|
||||
</task>
|
||||
<transition name="" to="doit" />
|
||||
</start-state>
|
||||
|
||||
<node name="doit">
|
||||
<event type="node-enter">
|
||||
<script>
|
||||
<expression>
|
||||
System.out.println("testNode.created: " + testNode.properties{"cm:created"});
|
||||
System.out.println("test node " + testNode.name + " contains " + testNode.children.length + " children");
|
||||
</expression>
|
||||
<variable name="testNode" access="read" />
|
||||
</script>
|
||||
</event>
|
||||
<event type="node-enter">
|
||||
<action
|
||||
class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
|
||||
<script>
|
||||
<!-- following line fails as it attempts to convert properties of children to javascript objects -->
|
||||
<!-- except the beanshell line above has already pre-created the children without the javascript scope -->
|
||||
<!-- object -->
|
||||
<!-- var result = "testNode.created: " + testNode.properties["cm:created"] + ", testNode.children.length: " + testNode.children[0].properties["cm:name"]; -->
|
||||
<expression>
|
||||
var result = "testNode.created: " + theTestNode.properties["cm:created"] + ", theTestNode.children.length: " + theTestNode.children.length;
|
||||
if (logger.isLoggingEnabled())
|
||||
{
|
||||
logger.log(result);
|
||||
}
|
||||
result;
|
||||
</expression>
|
||||
<variable name="testNode" access="read" mapped-name="theTestNode" />
|
||||
<variable name="alfrescoScriptResult" access="write" />
|
||||
</script>
|
||||
</action>
|
||||
</event>
|
||||
<transition name="" to="end" />
|
||||
</node>
|
||||
|
||||
<end-state name="end">
|
||||
<event type="node-enter">
|
||||
<script>
|
||||
System.out.println("javascript: " + alfrescoScriptResult);
|
||||
System.out.println("bpm_workflowDescription: " + bpm_workflowDescription);
|
||||
</script>
|
||||
</event>
|
||||
</end-state>
|
||||
|
||||
</process-definition>
|
31
source/test-resources/jbpmresources/test_taskassign.xml
Normal file
31
source/test-resources/jbpmresources/test_taskassign.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:testtaskassign">
|
||||
|
||||
<swimlane name="initiator" />
|
||||
|
||||
<start-state name="start">
|
||||
<task name="bpm:startTask" swimlane="initiator" />
|
||||
<transition name="" to="assign" />
|
||||
</start-state>
|
||||
|
||||
<swimlane name="assignee">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<actor>#{bpm_assignee}</actor>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<task-node name="assign">
|
||||
<task name="wf:workflowTask" swimlane="assignee">
|
||||
<event type="task-assign">
|
||||
<script>
|
||||
System.out.println("Task assigned: " + executionContext.getTaskInstance().getActorId());
|
||||
</script>
|
||||
</event>
|
||||
</task>
|
||||
<transition name="" to="end" />
|
||||
</task-node>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
43
source/test-resources/jbpmresources/test_timers.xml
Normal file
43
source/test-resources/jbpmresources/test_timers.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:testtimers">
|
||||
|
||||
<swimlane name="initiator" />
|
||||
|
||||
<start-state name="start">
|
||||
<task name="bpm:startTask" swimlane="initiator" />
|
||||
<transition name="" to="launchpending">
|
||||
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
|
||||
<script>
|
||||
<expression>
|
||||
new Date(new Date().getTime() + 5000); // launch date = now + 1 minute
|
||||
</expression>
|
||||
<variable name="launchDate" access="write"/>
|
||||
</script>
|
||||
</action>
|
||||
</transition>
|
||||
</start-state>
|
||||
|
||||
<swimlane name="assignee">
|
||||
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
|
||||
<actor>#{bpm_assignee}</actor>
|
||||
</assignment>
|
||||
</swimlane>
|
||||
|
||||
<task-node name="launchpending">
|
||||
<task swimlane="assignee">
|
||||
<timer duedate="#{launchDate}" transition="launched">
|
||||
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
|
||||
<script>
|
||||
logger.log("Launched at " + launchDate + " by " + person.properties.userName);
|
||||
</script>
|
||||
</action>
|
||||
</timer>
|
||||
</task>
|
||||
<transition name="cancel" to="end" /> <!-- signalling this transition will cancel timer -->
|
||||
<transition name="launched" to="end" /> <!-- signalling this transition will cancel timer -->
|
||||
</task-node>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
62
source/test-resources/jbpmresources/test_xor.xml
Normal file
62
source/test-resources/jbpmresources/test_xor.xml
Normal file
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:xor">
|
||||
|
||||
<swimlane name="initiator" />
|
||||
|
||||
<start-state name="start">
|
||||
<task name="submit" swimlane="initiator" />
|
||||
<transition name="" to="orsplit" />
|
||||
</start-state>
|
||||
|
||||
<fork name="orsplit">
|
||||
<transition name="a" to="a" />
|
||||
<transition name="bc" to="bc" />
|
||||
</fork>
|
||||
|
||||
<task-node name="a">
|
||||
<task name="a">
|
||||
<assignment actor-id="usera" />
|
||||
</task>
|
||||
<transition name="" to="orjoin" />
|
||||
</task-node>
|
||||
|
||||
<fork name="bc">
|
||||
<transition name="b" to="b" />
|
||||
<transition name="c" to="c" />
|
||||
</fork>
|
||||
|
||||
<task-node name="b">
|
||||
<task name="b">
|
||||
<assignment actor-id="userb" />
|
||||
</task>
|
||||
<transition name="" to="bcjoin" />
|
||||
</task-node>
|
||||
|
||||
<task-node name="c">
|
||||
<task name="c">
|
||||
<assignment actor-id="userc" />
|
||||
</task>
|
||||
<transition name="" to="bcjoin" />
|
||||
</task-node>
|
||||
|
||||
<join name="bcjoin">
|
||||
<transition name="" to="orjoin" />
|
||||
</join>
|
||||
|
||||
<join name="orjoin">
|
||||
<event type="node-enter">
|
||||
<script>
|
||||
node.nOutOfM = 1;
|
||||
</script>
|
||||
</event>
|
||||
<transition name="" to="wait" />
|
||||
</join>
|
||||
|
||||
<state name="wait">
|
||||
<transition name="" to="end" />
|
||||
</state>
|
||||
|
||||
<end-state name="end" />
|
||||
|
||||
</process-definition>
|
Reference in New Issue
Block a user