如何在jBPM流程中添加和调用自定义Java类? [英] How do I add and call a custom Java class inside a jBPM Process?

查看:97
本文介绍了如何在jBPM流程中添加和调用自定义Java类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a local jBPM 7.33 with a simple process. At one point in the process, I need to generate a PDF file.

我想通过创建一个在Task中运行的非常基本的Java类来做到这一点.该类将从流程范围中获取变量,生成PDF并将生成的Blob(或文件系统路径)保存为流程变量.

I want to do it by creating a very basic Java class that is run in a Task. The class would get variables from the process scope, generate the PDF and save the generated blob (or filesystem path) as a process variable.

如何添加自定义类,然后调用该类?

How do I add a custom class and then call that class?

推荐答案

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

that's what we call it WorkItemHandler , your java class will be a customized jbpm task

  1. 首先在日食中安装jbpm

在eclipse中创建一个jBPM项目(勾选使用Maven构建项目)

Create a jBPM project in eclipse (tick Build the project using Maven)

创建一个实现WorkItemHandler的Java类.将会是这种格式.

create a java class that implements WorkItemHandler. it will be in this format.

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文件.

  • Build a jar file of this project.

    从工作台转到Artifact,上载jar
    单击此图标,然后单击工件

    From the workbench, go to Artifact, upload the jar
    click on this icon, then artifacts

    转到依赖项,并从存储库中添加已上传的工件

    from the settings of your project, go to dependencies, and add from repository the uploaded artifact

    从项目的设置中,转到部署/工作项处理程序"并添加一个新的工作项处理程序:键入其名称以及如何实例化它(new com.example.WorkItemTest())

    from the settings of your project, go to Deployments / Work Item Handler and add a new work Item Handler : type its name and how to instantiate it (new com.example.WorkItemTest())

    最后,转到资产"WorkDefinitions",按如下所示定义工作项(以便您可以在工作流设计器工具中看到它)

    Finally, go to the Asset "WorkDefinitions" , define your work item (so you can see it in the workflow designer tool) as follow

      [
        "name" : "WorkItemTest",
        "parameters" : [ //inputs
            "stringVar " : new StringDataType(),
        ],
        "results" : [ //outputs
            "Result" : new ObjectDataType(),
        ],
        "displayName" : "WorkItemTest",
        "icon" : "defaultservicenodeicon.png"
      ]
    

    1. 您现在可以在工作流设计器工具的服务任务"中找到此任务(请先刷新)

    这篇关于如何在jBPM流程中添加和调用自定义Java类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆