如何在 jBPM 流程中添加和调用自定义 Java class?

How do I add and call a custom Java class inside a jBPM Process?

我有一个带有简单流程的本地 jBPM 7.33。在此过程中的某一时刻,我需要生成一个 PDF 文件。

我想通过在任务中创建一个非常基本的 Java class 即 运行 来实现。 class 将从流程范围获取变量,生成 PDF 并将生成的 blob(或文件系统路径)保存为流程变量。

如何添加自定义 class 然后调用它 class?

这就是我们所说的 WorkItemHandler ,您的 java class 将是一个自定义的 jbpm 任务

  1. 首先install jbpm in eclipse

  2. 在eclipse中创建一个jBPM项目(勾选Build the project using Maven)

  3. 创建一个实现 WorkItemHandler 的 java class。它将采用这种格式。

     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 文件(使用 maven)。

  5. 从workbench,转到Artifact,上传jar
    单击此图标,然后单击工件

  6. 从项目的设置中,转到依赖项,然后从存储库中添加上传的工件

  7. 从您的项目设置中,转到 Deployments / Work Item Handler 并添加一个新的工作 Item Handler:键入其名称和实例化方式 (new com.example.WorkItemTest())

  8. 最后,转到资产“WorkDefinitions”,定义您的工作项(以便您可以在工作流设计器工具中看到它)如下

  [
    "name" : "WorkItemTest",
    "parameters" : [ //inputs
        "stringVar " : new StringDataType(),
    ],
    "results" : [ //outputs
        "Result" : new ObjectDataType(),
    ],
    "displayName" : "WorkItemTest",
    "icon" : "defaultservicenodeicon.png"
  ]
  1. 您现在可以在工作流设计器工具的“服务任务”中找到此任务(之前刷新)