如何在Camunda JavaScript服务任务中实例化`execution`对象?

时间:2018-06-04 10:18:26

标签: javascript bpmn camunda

我在论坛/文档(like this one)上看到了很多JavaScript引用和代码片段,其中execution.createIncident(String incidentType, String configuration); execution.resolveIncident(String incidentId); execution.setVariable("name", value); 对象用于一系列有用的事情,例如:

execution

但是,我没有看到如何实例化The process could not be started. : Cannot instantiate process definition Finswitch_Tx:14:42ef803b-67df-11e8-a127-0242ac11001b: Unable to evaluate script: ReferenceError: "execution" is not defined in <eval> at line number 7 对象的示例,当我尝试使用它时,我收到如下错误:

df = pd.DataFrame(np.array(L).reshape(5, 22).T, columns = list("abcde"))

请问您能举例说明如何实例化对该对象的访问权限吗?

2 个答案:

答案 0 :(得分:0)

您从camunda获得的delegateExecution / delegateTask对象是非常复杂的上下文挂钩,camunda根据当前执行状态创建它并将其交给挂钩(侦听器和委托)。 你无法自己创造。 如果您需要访问它,请将代码放在Task / ExecutionListener或委托中,而不是自动访问它。

答案 1 :(得分:0)

在一些help on the Camunda forum之后,对此进行更全面的回答。

根据this documentation当前作用域中可用的所有过程变量都可以按名称使用,以及一些特殊变量:executiontask和{ {1}}

文档中不清楚的是连接器的输出变量中的脚本是在子(连接器)范围内运行的,所以当connector对象可用时,{ {1}}不是。执行实例上的一些功能可以像这样访问:

connector

但是,我看到返回的对象实际上是execution所以我不知道可以使用多远。

同样,在任务侦听器的脚本中,任务实例可用,它对应于DelegateTask接口。这里可以按如下方式访问var execution = connector.getParentVariableScope(); var activityId = execution.getCurrentActivityId(); 实例:

AbstractVariableScope

执行侦听器中,可以直接访问execution实例。

task.execution.getCurrentActivityId();