工作流总结(二)JBPM 入门示例

来源:互联网 发布:python readlines 编辑:程序博客网 时间:2024/05/19 23:27

上一遍文章主要总结了一下关于JBPM的基本的概念,主要是JBPM环境的搭建和一些主要的配置。这次主要是结合一个例子来总结下工作流的中常用的API。

示例

场景:请假。

这里写图片描述

通过JBPM的流程设计器,拖拽就可以直接生成一个xml文件。保存后,即能生成一个对应好的png图片文件。JBPM 4.4 有时候在生成流程图片时不时出现些问题,这个时候直接把流程图片删了即可。

常用操作

部署流程实例

public void testDeploy(){
ProcessEngine processengine=Configuration.getProcessEngine();
RepositoryService repositoryService=processengine.getRepositoryService();
repositoryService.createDeployment().addResourceFromClasspath("test1.jpdl.xml").deploy();
}

ProccessEngine:jbpm的核心引擎,是一个线程安全的对象。能够通过ProcessEngine创建jbpm的各种服务接口,类似一个工厂。
RepositoryService:部署的接口,通过部署创建deployment对象来负责流程的部署。
部署可以通过很多的方式来部署:包括直接加载流程定义文件xml格式的文件。或者还有

  • addResourceFromUrl(URL url);
  • addResourcesFromZipInputStream(ZipInputStream zipInputStream);
  • addResourceFromFile(File file);

推进流程实例

public void testCompleteTask(){        ProcessEngine processEngine=Configuration.getProcessEngine();        TaskService taskService=processEngine.getTaskService();        taskService.completeTask("20001");     }

TaskService:包括task的一系列的crud操作。以及根据需要将当前节点推进到下一个状态,并可以通过

  void completeTask(String taskId, Map<String, ?> variables);

来传入业务数据变量以此来绑定业务信息。

获取当前流程实例信息

public void testGetCurrentActivity() {        executionService=super.executionService;        String activityName=executionService.createProcessInstanceQuery().processInstanceId("offJbpm.20001").uniqueResult().findActiveActivityNames().toString();        System.out.println("当前流程ID:"+activityName);    }

ExecutionService:通过该对象来获取执行流程,或者获取当前流程id的流程实例信息。

0 0