zoukankan      html  css  js  c++  java
  • JBPM (三) 服务和实例介绍

    • jbpm提供的服务
    jbpm提供了很多的服务来处理流程,这些服务也是这个jbpm引擎的核心对象,通过服务接口可以完成流程的部署、创建、以及增、删、改、查等操作,框架这东西似乎都是向别人提供服务、接口来供别人使用,当自己想要写一个框架了也要按着标准框架的规范来开发,遵循一个通用的标准做出来的东西才会有人愿意使用。

    来看看下面这张图,清晰的展示出了jbpm核心服务对象的关系以及每个对象的作用。


    • 服务的使用--流程例子
    每个流程实例的创建基本都遵循这三个步骤
      1.部署流程定义
    2.创建流程实例
    3.提交任务

    在部署流程实例中首先要做的事定义流程,一般定义信息都写在了jbpm.hibernate.cfg.xml文件里了,该文件的信息对应Configuration对象,即通过Configuration对象可以获得该文件的所有配置信息,包括数据库连接、用户名、事务管理、日志等,下图为一个简单流程定义:

                      
    部署流程代码
    	public void testDeploy()
    	{
    		//得到服务引擎,管理服务的创建
    		ProcessEngine processEngine=Configuration.getProcessEngine();
    		//创建repositoryService服务,可以实现部署、删除流程等
    		RepositoryService repositoryService=processEngine.getRepositoryService();
    		//部署流程
    		repositoryService.createDeployment().addResourceFromClasspath("test.jpdl.xml").deploy();
    	}


    创建流程实例
    	//创建流程实例
    	public void testCreateInstance()
    	{
    		ProcessEngine processEngine=Configuration.getProcessEngine();
    		ExecutionService executionService=processEngine.getExecutionService();
    		//通过已经存在的实例的key值,获得实例
    		ProcessInstance processInstance=executionService.startProcessInstanceByKey("test");
    		System.out.println("流程实例ID===="+processInstance.getId());
    	}


    查询当前实例的人员对应的任务
    	public void testGetTask()
    	{
    		ProcessEngine processEngine=Configuration.getProcessEngine();
    		TaskService taskService=processEngine.getTaskService();
    		List<Task> tasks=taskService.findPersonalTasks("李四");
    		
    		Task task=tasks.get(0);
    		
    		System.out.println("任务数量:"+tasks.size());
    		System.out.println("任务名称:"+task.getActivityName());
    		System.out.println("任务人员:"+task.getAssignee()+"任务ID"+task.getId());
    		
    	}


    提交任务
    	public void testCompeleteTask()
    	{
    		ProcessEngine processEngine=Configuration.getProcessEngine();
    		TaskService taskService=processEngine.getTaskService();
    		
    		taskService.completeTask("8");
    		
    	}


    • 结束语
    jbpm在流程方面有独到之处,用着也很方便,在工作流上也是一个很好的解决方案,里面的操作记录处理也值得相似的功能借鉴。


  • 相关阅读:
    java中map接口hashMap以及Enty之间的用法和关系
    Collection集合总结,List和set集合的用法,HashSet和LinkedHashSetde用法
    微信小程序开发攻略
    Java闰年的计算,Calendar的用法
    Java计算计算活了多少天
    Java用代码演示String类中的以下方法的用法
    Java判断一个字符串中有多少大写字母、小写字母和数字
    Java将一个字符串的首位改为大写后边改为小写的实现,String
    Java 获取一个字符串中,另一个字符串出现的次数
    linux下重命名文件或文件夹(linux)
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978544.html
Copyright © 2011-2022 走看看