JBPM 5 - 流程实例变量命令

时间:2013-04-24 07:17:12

标签: drools jbpm

如何在JBPM中设置/修改正在运行的流程实例的流程实例变量? 是否有任何预定义的命令类来设置process-instance-variables?

我可以看到一些命令,例如org.drools.command.SetVariableCommandFromLastReturn&&  org.drools.command.SetVariableCommandFromCommand

我可以使用这些命令吗?如何使用此命令?

1 个答案:

答案 0 :(得分: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;
            }
        });