0

我正在努力通过一个简单的“完整”ScriptTaskListner 在我的任务中获取“bpm:outcome”变量。我补充说我正在使用 Activi WorkFlow Engine。

这是我的尝试:

var import = task.getVariable('bpm_outcome');

奇怪……返回的值是“Next”(!!?!?)

无论如何......我读过也许这可以完成这项工作:

TaskInstance ti = ... ti.getVariableLocally("bpm_outcome");

或者

ti.getVariable("bpm_outcome");

但我无法获得任务实例......有什么建议吗?其他“wf:...”变量可以通过简单的 task.getvariable 尝试完美捕获。

提前致谢!

4

1 回答 1

3

在 Activity(与 JBPM 不同)中,除了 Next/Done 没有其他结果。

如果您查看 Alfresco 的默认审核和批准工作流程,您会注意到他们引入了一个新变量来查看结果是什么:

<activiti:taskListener event="complete" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener">
                  <activiti:field name="script">
                     <activiti:string>
                        execution.setVariable('wf_reviewOutcome', task.getVariable('wf_reviewOutcome'));
                     </activiti:string>
                  </activiti:field>
               </activiti:taskListener>

任务模型:

<property name="wf:reviewOutcome">
                    <type>d:text</type>
                    <default>Reject</default>
                    <constraints>
                        <constraint name="wf:reviewOutcomeOptions" type="LIST">
                            <parameter name="allowedValues">
                                <list>
                                    <value>Approve</value>
                                    <value>Reject</value>
                                </list>
                            </parameter>
                        </constraint>
                    </constraints>
                </property>

共享配置:

<field id="wf:reviewOutcome" label-id="workflow.field.outcome" set="response">
                  <control template="/org/alfresco/components/form/controls/workflow/activiti-transitions.ftl" />
               </field>

所以 Alfresco 只是使用一个正常的字段来确定结果。所以你的语法没问题,你只需要得到正确的变量。在这种情况下,它是task.getVariable('wf_reviewOutcome')

于 2013-07-28T13:06:08.153 回答