如何在 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 任务
-
在eclipse中创建一个jBPM项目(勾选Build the project using Maven)
创建一个实现 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 ! ");
}
}
构建该项目的 jar 文件(使用 maven)。
从workbench,转到Artifact,上传jar
单击此图标,然后单击工件
从项目的设置中,转到依赖项,然后从存储库中添加上传的工件
从您的项目设置中,转到 Deployments / Work Item Handler 并添加一个新的工作 Item Handler:键入其名称和实例化方式 (new com.example.WorkItemTest()
)
最后,转到资产“WorkDefinitions”,定义您的工作项(以便您可以在工作流设计器工具中看到它)如下
[
"name" : "WorkItemTest",
"parameters" : [ //inputs
"stringVar " : new StringDataType(),
],
"results" : [ //outputs
"Result" : new ObjectDataType(),
],
"displayName" : "WorkItemTest",
"icon" : "defaultservicenodeicon.png"
]
- 您现在可以在工作流设计器工具的“服务任务”中找到此任务(之前刷新)
我有一个带有简单流程的本地 jBPM 7.33。在此过程中的某一时刻,我需要生成一个 PDF 文件。
我想通过在任务中创建一个非常基本的 Java class 即 运行 来实现。 class 将从流程范围获取变量,生成 PDF 并将生成的 blob(或文件系统路径)保存为流程变量。
如何添加自定义 class 然后调用它 class?
这就是我们所说的 WorkItemHandler
,您的 java class 将是一个自定义的 jbpm 任务
在eclipse中创建一个jBPM项目(勾选Build the project using Maven)
创建一个实现
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 ! "); } }
构建该项目的 jar 文件(使用 maven)。
从workbench,转到Artifact,上传jar
单击此图标,然后单击工件从项目的设置中,转到依赖项,然后从存储库中添加上传的工件
从您的项目设置中,转到 Deployments / Work Item Handler 并添加一个新的工作 Item Handler:键入其名称和实例化方式 (
new com.example.WorkItemTest()
)最后,转到资产“WorkDefinitions”,定义您的工作项(以便您可以在工作流设计器工具中看到它)如下
[
"name" : "WorkItemTest",
"parameters" : [ //inputs
"stringVar " : new StringDataType(),
],
"results" : [ //outputs
"Result" : new ObjectDataType(),
],
"displayName" : "WorkItemTest",
"icon" : "defaultservicenodeicon.png"
]
- 您现在可以在工作流设计器工具的“服务任务”中找到此任务(之前刷新)