2016-09-02 16 views
0

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

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

public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { 

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

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

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

спасибо!

ответ

1

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

+0

Да, я уже пробовал это и сегодня, вместо того, чтобы использовать HashMap вместо null как второй параметр completeWorkItem(), но как я могу достичь этой переменной в BP-модели? Должен ли я записывать имя HashMap-ключа в .wid-файл в свой WorkItem как все остальные параметры?Должен ли я создать новую переменную для этого параметра в переменных Определения всего BProcess, а затем ссылаться на нее в WorkItem-Node в качестве выходного параметра? Не могли бы вы описать этот процесс, потому что после выполнения моего процесса эта переменная все еще пуста. – user3467471

+1

Если вы создаете определение рабочего элемента в KIE Workbench, вы можете увидеть, что он автоматически сгенерирует код с ** переменной Result ** ('java.util.Map') в разделе ** results **. Я считаю, что вы можете получить свои выходные параметры из этого (хотя я и не пробовал). Вам просто нужно сопоставить эту переменную с некоторой переменной процесса, а затем получить доступ к ней позже в некоторой задаче. – livthomas

+0

ведь это ничего не будет автоматически сгенерировано, но с РЕЗУЛЬТАТАМИ это была правильная точка !!! – user3467471

0

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

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» как присвоение вывода данных в процессе рабочего процесса для моего узла пользовательских услуг.

+0

Извините, не могу проверить его прямо сейчас: этот метод ссылается на метод реализации класса (execute()), или это только самосозданный метод. Если это самосоздание, следует ли использовать его как static в executeWorkItem? Потому что я пробовал что-то сегодня, я имею в виду HashMap, но вместо того, чтобы использовать его как отдельный метод возврата, я только что добавил HashMap внутри executeWorkItem (..), а затем добавил его вместо null в completeWorkItem (..) как следует: Карта params = new HashMap <>(); params.put (..); manager.completeWorkItem (workItem.getId(), params); – user3467471

+0

Затем я попытался связаться с ним в моем BProcess, я зарегистрировал также имя-ключ HashMap своим CustomWorkItem внутри .wid-файла. Но я не получаю никакого результата для этой переменной, даже после установки ее на вывод workItem - task (я имею в виду внутри BP-Model) и ссылаясь на нее на созданную переменную, специальную для этого поля в Определениях переменных. И я использую 6.4.-версию – user3467471

+0

А, ну, 6.4 отличается. 6.3 должен иметь метод execute (...) вместо executeWorkitem (...), и он возвращал карту, а не передавал ее в fullWorkItem. Использование возвращаемых значений на стороне определения процесса одинаково, я верю. – mikereem

 Смежные вопросы

  • Нет связанных вопросов^_^