Как создать экземпляр объекта `execute` в задаче службы Camunda JavaScript? - PullRequest
0 голосов
/ 04 июня 2018

Я вижу множество ссылок на 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

Пожалуйста, не могли бы вы датьмне пример того, как создать экземпляр доступа к этому объекту?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Итак, более полный ответ на этот вопрос после некоторой справки на форуме Camunda .

Согласно этой документации , все переменные процесса доступны втекущая область видимости доступна для сценария по имени, а также некоторые специальные переменные: execution, task и connector.

Что не ясно в документации, так это то, что сценарии в выходные переменные соединителя работают в дочерней (соединительной) области, поэтому, пока доступен объект connector, execution нет.К некоторым функциям экземпляра выполнения можно получить доступ следующим образом:

var execution = connector.getParentVariableScope();
var activityId = execution.getCurrentActivityId();

Однако я вижу, что возвращаемый объект на самом деле является AbstractVariableScope, поэтому я не уверен, насколько далеко это можно использовать.

Аналогично, внутри скрипта Task Listener доступен экземпляр задачи, соответствующий интерфейсу DelegateTask.Здесь к экземпляру execution можно получить доступ следующим образом:

task.execution.getCurrentActivityId();

Внутри Listener Execution , экземпляр execution доступен напрямую.

execution.setVariable("testVar", true);
0 голосов
/ 04 июня 2018

Объекты DelegateExecution / DelegateTask, которые вы получаете от camunda, являются очень сложными контекстными хуками, которые camunda создает на основе текущего состояния выполнения и передает их хукам (слушателю и делегату).Вы не можете создать это самостоятельно.Если вам нужно получить к нему доступ, поместите свой код в Task / ExecutionListener или в делегат, после чего вы получите к нему доступ автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...