2013-04-24 51 views
0

如何在JBPM中設置/修改正在運行的流程實例的流程實例變量? 是否有任何預定義的命令類來設置流程實例變量?JBPM 5 - 流程實例變量更改命令

我可以看到像org.drools.command.SetVariableCommandFromLastReturn & & org.drools.command.SetVariableCommandFromCommand

我可以使用這些命令的一些命令?如何使用這個命令?

回答

0

截至目前,我正在用GenericCommand更新像這樣的變量。

kSession.execute(new GenericCommand<Boolean>() { 
      public Boolean execute(Context context) { 
       //Get session in the command context 
       StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession(); 
       //Get the process instance 
       ProcessInstance processInstance = (ProcessInstance) ksession.getProcessInstance(processInstanceId); 
       //Get variable scoprts 
       VariableScopeInstance variableScope = (VariableScopeInstance) processInstance.getContextInstance(VariableScope.VARIABLE_SCOPE); 
       Iterator<String> piStateItr=piStateVariables.keySet().iterator(); 
       //Modify required variables 
       while(piStateItr.hasNext()){ 
        String variableName=piStateItr.next(); 
        String variableValue=piStateVariables.get(variableName); 
        logger.debug(">>> Setting State - key "+variableName +" , to "+variableValue); 
        variableScope.setVariable(variableName, variableValue); 
       } 
       return true; 
      } 
     }); 
+0

匿名GenericCommand工作正常。 – 2013-04-28 09:25:01

+0

嗨,感謝您的代碼,我面臨同樣的問題。你如何檢索'processInstanceId'變量? – ocramot 2013-08-07 13:10:11

+0

@ocramot,爲包含給定代碼的方法輸入processInstanceId。 – 2013-08-15 09:45:21