Преобразование пользовательской задачи в JBPM

Я использую Business Central (JBPM) и пытаюсь использовать пользовательскую задачу Transform, которая преобразует входной объект Java в выходной объект.

Как видите, я установил рабочую задачу и соответствующий обработчик на месте.

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

В соответствующих назначениях данных я установил объекты ввода и вывода, но когда я запускаю процесс, я получаю следующее.

09:57:05,321 ERROR [org.jbpm.process.workitem.transform.TransformWorkItemHandler] (default task-44) Failed to find a transform

Это означает, что я не включил связанные методы преобразования, отмеченные @Transformer. В классе-обработчике я вижу, что есть метод registerTransformer(Class<?> transformer), который нужно вызвать, чтобы загрузить преобразователи.

Я не знаю, как вызвать упомянутый выше метод в Business Central. Есть ли какое-то конкретное меню, в которое я должен зайти, чтобы пройти регистрацию?

Заранее спасибо!


person Themis Pyrgiotis    schedule 18.11.2020    source источник


Ответы (1)


Если вы говорите об этом обработчике: https://github.com/jhonfx/jbpm-examples/blob/master/krisv-jbpm/jbpm-workitems/src/main/java/org/jbpm/process/workitem/transform/TransformWorkItemHandler.java Это очень старый файл, который не поддерживается уже 8 лет. Это больше не часть основного репозитория jBPM. Однако, если вам действительно нужно его использовать...

Вот как это используется:

        TransformWorkItemHandler transformWorkItemHandler = new TransformWorkItemHandler();
        transformWorkItemHandler.registerTransformer(FileTransformer.class);
        ksession.getWorkItemManager().registerWorkItemHandler("Transform", transformWorkItemHandler);

К сожалению, этот способ вызова метода registerTransformer не может быть легко воспроизведен в RHPAM 7 (jBPM7), где регистрация обработчиков осуществляется декларативно. Поэтому я бы посоветовал расширить этот обработчик, ввести новый параметр в конструктор (т.е. преобразователь класса) и зарегистрировать этот преобразователь в конструкторе (в основном скопируйте и вставьте код registerTransformer внутри конструктора).

person Anton Giertli    schedule 18.11.2020
comment
Большое спасибо за ваш ответ, это сработало! Хотя я использую не упомянутую вами библиотеку, а https://github.com/kiegroup/jbpm-work-items, но они почти одинаковы. Спасибо - person Themis Pyrgiotis; 19.11.2020