Как добавить и вызвать пользовательский класс Java внутри процесса jBPM? - PullRequest
2 голосов
/ 12 марта 2020

У меня есть локальная jBPM 7.33 с простым процессом. В какой-то момент процесса мне нужно создать файл PDF.

Я хочу сделать это, создав базовый c Java класс, который запускается в Задаче. Класс получит переменные из области процесса, сгенерирует PDF и сохранит созданный BLOB-объект (или путь файловой системы) в качестве переменной процесса.

Как добавить пользовательский класс и затем вызвать этот класс?

1 Ответ

2 голосов
/ 12 марта 2020

это то, что мы называем WorkItemHandler, ваш класс java будет настраиваемой задачей jbpm

  1. Прежде всего установите jbpm в затмении

  2. Создать проект jBPM в Eclipse (отметьте «Построить проект с помощью Maven»)

  3. создать класс java, который реализует WorkItemHandler. это будет в этом формате.

    package com.example;
    import org.kie.api.runtime.process.WorkItem;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.drools.core.process.instance.WorkItemHandler;
    import org.kie.api.runtime.process.WorkItemManager;
    
    public class WorkItemTest implements WorkItemHandler {
    
        @Override
        public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
            workItem.getParameters().toString();
    
            /**Input Variables***/
            String stringVar = (String) workItem.getParameter("stringVar");
    
    
            /***
             * 
             * 
             * YOUR CODE
             * 
             */
    
            String msg = "done";
    
            /**Output Variables in a HashMap***/
            Map<String, Object> resultMap = new HashMap<String, Object>();
            resultMap.put("Result", msg); //("name of variable", value)
            manager.completeWorkItem(workItem.getId(), resultMap);
        }
    
        @Override
        public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
            System.out.println("Aborted ! ");
    
        }
    
    }
    
  4. Создайте файл jar этого проекта.

  5. Из рабочей среды go в Артефакт, загрузите банку
    , нажмите на этот значок, затем артефакты enter image description here

  6. из настроек вашего проекта, go в зависимости и добавьте из репозитория загруженный артефакт enter image description here

  7. из настроек вашего проекта, go в Deployments / Work Item Handler и добавьте новый рабочий обработчик Item : введите его имя и способ его создания (new com.example.WorkItemTest()) enter image description here

  8. Наконец, go для актива "WorkDefinitions", определите свою работу элемент (чтобы его можно было увидеть в инструменте конструктора рабочих процессов) следующим образом

  [
    "name" : "WorkItemTest",
    "parameters" : [ //inputs
        "stringVar " : new StringDataType(),
    ],
    "results" : [ //outputs
        "Result" : new ObjectDataType(),
    ],
    "displayName" : "WorkItemTest",
    "icon" : "defaultservicenodeicon.png"
  ]
Теперь вы можете найти эту задачу в «сервисных задачах» вашего инструмента конструктора рабочих процессов (см. sh before)
...