[rules-users] ProcessInstance Does Not Complete With User Task and Rule Task

Kris Verlaenen Kris.Verlaenen at cs.kuleuven.be
Tue Dec 15 11:17:38 EST 2009


Hi,

I executed the process you provided and do not seem to have any problems
with it.  This is the output:

### Starting process ###
### Completing second work item ###
Finished!!!

Could you try your code with the latest snapshot releases?

Kris

Quoting nfox241 <nfox at dragonflyware.com>:

> 
> I have a flow: start -- User Task - Rule Task - User Task - Action -
> end. 
> 
> I complete the 1st User Task, next the rules which are part of the
> RuleFlowGroup in the Rule Task fire correctly, then I complete the
> next User
> Task. However, my final action node is never reached and the
> processInstance
> never completes.  
> 
> Here is my Rule Flow:
> ?xml version="1.0" encoding="UTF-8"?> 
> <process xmlns="http://drools.org/drools-5.0/process"
>          xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
>          xs:schemaLocation="http://drools.org/drools-5.0/process
> drools-processes-5.0.xsd"
>          type="RuleFlow" name="droolsflow"
> id="org.plugtree.labs.droolsflow"
> package-name="org.plugtree.labs" >
> 
>   <header>
>     <imports>
>       <import name="org.plugtree.labs.variablepersistence.MyEntity"
> />
>       <import
> name="org.plugtree.labs.variablepersistence.MyVariableSerializable"
> />
>     </imports>
>   </header>
> 
>   <nodes>
>     <ruleSet id="17" name="ruleMe" x="410" y="123" width="80"
> height="48"
> ruleFlowGroup="fox" />
>     <start id="1" name="Start" x="16" y="16" width="48" height="48"
> />
>     <end id="3" name="End" x="665" y="312" width="48" height="48" />
>     <humanTask id="23" name="User Task" x="279" y="237" width="100"
> height="48" >
>       <work name="Human Task" >
>         <parameter name="ActorId" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Comment" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Content" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Priority" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Skippable" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="TaskName" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>       </work>
>     </humanTask>
>     <humanTask id="22" name="User Task" x="145" y="86" width="100"
> height="48" >
>       <work name="Human Task" >
>         <parameter name="ActorId" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Comment" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Content" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Priority" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="Skippable" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>         <parameter name="TaskName" >
>           <type
> name="org.drools.process.core.datatype.impl.type.StringDataType" />
>         </parameter>
>       </work>
>     </humanTask>
>     <actionNode id="12" name="Finish" x="494" y="254" width="80"
> height="48"
> >
>         <action type="expression" dialect="mvel"
> >System.out.println("Finished!!!");</action>
>     </actionNode>
>   </nodes>
> 
>   <connections>
>     <connection from="22" to="17" />
>     <connection from="12" to="3" />
>     <connection from="17" to="23" />
>     <connection from="1" to="22" />
>     <connection from="23" to="12" />
>   </connections>
> 
> </process>
> 
> 
> And test code:
>         KnowledgeBuilder kbuilder =
> KnowledgeBuilderFactory.newKnowledgeBuilder();
>         kbuilder.add( new ClassPathResource(
> "VariablePersistenceStrategyProcess.rf" ), ResourceType.DRF );
>         kbuilder.add( new ClassPathResource( "myRules.drl" ),
> ResourceType.DRL );
>         
>         for (KnowledgeBuilderError error: kbuilder.getErrors()) {
>         	System.out.println(error);
>         }
>         KnowledgeBase kbase =
> KnowledgeBaseFactory.newKnowledgeBase();
>         kbase.addKnowledgePackages( kbuilder.getKnowledgePackages()
> );
> 
>         EntityManagerFactory emf =
> 			Persistence.createEntityManagerFactory("org.drools.persistence.jpa");
>         Environment env = KnowledgeBaseFactory.newEnvironment();
>         env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
> 
>         StatefulKnowledgeSession ksession =
> JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
>         int id = ksession.getId();
> 
>         System.out.println("### Starting process ###");
>         WorkflowProcessInstance processInstance =
> (WorkflowProcessInstance)
>         	ksession.startProcess( "org.plugtree.labs.droolsflow"
> /*,parameters*/ );
> 
>         
>         TestWorkItemHandler handler =
> TestWorkItemHandler.getInstance();
>         WorkItem workItem = handler.getWorkItem();
> 
>         ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(
> id,
> kbase, null, env );
>         processInstance = (WorkflowProcessInstance)
> ksession.getProcessInstance( processInstance.getId() );
> 
>         ksession.getWorkItemManager().completeWorkItem(
> workItem.getId(),
> null );
>         workItem = handler.getWorkItem();
> 
>         ksession =
> JPAKnowledgeService.loadStatefulKnowledgeSession(id,
> kbase, null, env);
> 	processInstance = (WorkflowProcessInstance)
> ksession.getProcessInstance(processInstance.getId());
>  
> 	System.out.println("### Completing second work item ###");
> 	ksession.getWorkItemManager().completeWorkItem(workItem.getId(),
> null);
> 
> 
> 
> -- 
> View this message in context:
>
http://n3.nabble.com/ProcessInstance-Does-Not-Complete-With-User-Task-and-Rule-Task-tp90667p90667.html
> Sent from the Drools - User mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 




Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



More information about the rules-users mailing list