如何在 Camunda JavaScript 服务任务中实例化“执行”对象?
How can I instantiate the `execution` object in a Camunda JavaScript service task?
我在 forum/documentation (like this one) 上看到很多 JavaScript 参考资料和代码片段,其中 execution
对象用于一系列有用的事情,例如如:
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
请举例说明如何实例化对该对象的访问?
你从camunda获得的delegateExecution/delegateTask对象是camunda根据当前执行状态创建的非常复杂的上下文挂钩,并将其交给挂钩(监听器和委托)。
你不能自己创建它。
如果您需要访问它,请将您的代码放在 Task/ExecutionListener 或委托中,这样您就可以自动访问它。
所以经过一些 help on the Camunda forum.
更全面的回答
根据 this documentation,当前作用域中可用的所有流程变量都可以按名称用于脚本,还有一些特殊变量:execution
,task
和 connector
.
文档中不清楚的是,连接器的输出变量中的脚本在子(连接器)作用域中运行,所以虽然connector
对象可用,execution
不可用。可以像这样访问执行实例上的一些功能:
var execution = connector.getParentVariableScope();
var activityId = execution.getCurrentActivityId();
但是,我看到返回的对象实际上是一个 AbstractVariableScope
,所以我不确定它能用到什么程度。
同理,在一个TaskListener的脚本里面,有任务实例可用,对应DelegateTask接口。这里的 execution
实例可以按如下方式访问:
task.execution.getCurrentActivityId();
在 Execution Listener 中,可以直接访问 execution
实例。
execution.setVariable("testVar", true);
我在 forum/documentation (like this one) 上看到很多 JavaScript 参考资料和代码片段,其中 execution
对象用于一系列有用的事情,例如如:
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
请举例说明如何实例化对该对象的访问?
你从camunda获得的delegateExecution/delegateTask对象是camunda根据当前执行状态创建的非常复杂的上下文挂钩,并将其交给挂钩(监听器和委托)。 你不能自己创建它。 如果您需要访问它,请将您的代码放在 Task/ExecutionListener 或委托中,这样您就可以自动访问它。
所以经过一些 help on the Camunda forum.
更全面的回答根据 this documentation,当前作用域中可用的所有流程变量都可以按名称用于脚本,还有一些特殊变量:execution
,task
和 connector
.
文档中不清楚的是,连接器的输出变量中的脚本在子(连接器)作用域中运行,所以虽然connector
对象可用,execution
不可用。可以像这样访问执行实例上的一些功能:
var execution = connector.getParentVariableScope();
var activityId = execution.getCurrentActivityId();
但是,我看到返回的对象实际上是一个 AbstractVariableScope
,所以我不确定它能用到什么程度。
同理,在一个TaskListener的脚本里面,有任务实例可用,对应DelegateTask接口。这里的 execution
实例可以按如下方式访问:
task.execution.getCurrentActivityId();
在 Execution Listener 中,可以直接访问 execution
实例。
execution.setVariable("testVar", true);