Как установить параметр в WorkItem для достижения в процессе BPMN в jbpm-WorkBench

Я создал пользовательский WorkItem с некоторыми параметрами, которые я зарегистрировал в файле WorkDefinitions.wid. Затем в бизнес-процессе я также создаю определения переменных для всего процесса и ссылаюсь на них из WD.wid моего пользовательского WorkItem на созданные в BP.

WorkItem выполняет код, который берет эти параметры из формы после запуска процесса. Для этого я использую getParameter()- метод; Это выглядит следующим образом:

public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {

String payload = workItem.getParameter("id") + ... ;
...
manager.completeWorkItem(workItem.getId(), null);
}

Все выглядит и работает нормально, потому что WorkItem будет успешно выполнен, и я получаю результат (на стороне сервера после выполнения workItem в BP); Но теперь мне нужно получить ответ после выполнения метода POST с введенными параметрами. В коде я создал новую переменную, которая получает параметр из тела ответа, и я вижу результат в консоли IDE, когда я выполняю чистый код (без BPMN -процесса), но мне также нужно зарегистрировать эту переменную в WorkItem, чтобы использовать это далее для следующей задачи в моем BProcess.

Так что мой вопрос: есть ли что-то похожее на метод getParameter (), но что-то вроде setParameter()? Как я могу зарегистрировать его в WorkItem и как я могу получить / добраться до этого параметра / переменной в BProcess в jbpm (что-то вроде глобальной переменной, я считаю).

Большое спасибо!

2 ответа

Решение

Посмотрите на Javadoc WorkItemManager и посмотрите параметры completeWorkItem метод. Вы можете передать свои результаты на карте. Затем вы получите эти значения в качестве выходных параметров выполняемой задачи и сможете сопоставить их с некоторыми переменными процесса, чтобы следующая задача могла их использовать.

Я не знаю, какую версию вы используете, но для jBPM 6.3 я делал то же самое, определяя пользовательский рабочий элемент java с другим определением метода execute. Для меня это выглядит так:

public Map<String, Object> execute(WorkItem workItem) throws Exception {
    Map<String, Object> result = new HashMap<String, Object>();
    result.put("outputparam", "hello world");
    return result;
}

Используя это, я могу ссылаться на "outputparam" как назначение "Вывод данных" в процессе рабочего процесса для моего узла пользовательской службы.

Другие вопросы по тегам