• 工作流--JBPM(二) 简单的流程演示


      上篇介绍了一下JBPM的基本概念与插件的安装,本篇主要是用一个简单的demo来实现一个流程的处理。

      1、配置环境

         从官网上下载jbpm4.4的jar包,引入到MyEclipse。

         添加jbpm.cfg.xml和jbpm.hibernate.cfg.xml文件。

         创建日志文件log4j.properties。


       2、建立程序

         新建一个java项目,然后选择New-->Other-->jBoss JBPM,建立JBPM文件,命名为helloworld。如图:

                     

         创建好之后,开始画流程,打开helloworld文件,进行绘制流程,流程如下:

               

        流程绘制好之后,会产生两个文件:helloworld.jpdl.xml和helloworld.png


        3、编写程序

          首先创建一个HelloWordAPI的Java测试类,第一步就是创建JBPM所需要的数据库,如下:        

    //建表
    	@Test
    	public void createTables() throws Exception{
    		new org.hibernate.cfg.Configuration()  //
    		    .configure("jbpm.hibernate.cfg.xml") //配置文件,指定映射文件
    		    .buildSessionFactory();//创建sessionFactory
    	}

            创建流程引擎并部署流程、并启动流程:        

    //流程引擎
    	private static ProcessEngine processEngine =new Configuration() //
    	                      .setResource("jbpm.cfg.xml")  //
    	                      .buildProcessEngine();
    	
    	// 1、部署流程
    	@Test
    	public void deployProcessDefintion() throws Exception {
           processEngine.getRepositoryService() //
                  .createDeployment() //
                  .addResourceFromClasspath("helloworld/helloworld.jpdl.xml") //
                  .addResourceFromClasspath("helloworld/helloworld.png") //
                  .deploy();
    	}
    
    
    	// 2、启动流程实例
    	@Test
    	public void startProcessInstance() throws Exception {
           processEngine.getExecutionService().startProcessInstanceByKey("helloworld");
    	}
          启动之后,数据存入库中,如下:

            

         接下来进行办理任务,此次演示使用手动设置流程ID,为‘40002’,对应上图最后一条数据(该数据的主要标识是流程执行EXECUTION_ID,在下边的结果中会展示):        

    // 4、办理任务
    	@Test
    	public void completeTask() throws Exception {
          String taskId="40002";
          processEngine.getTaskService().completeTask(taskId);
    	}
         结果如下,流程流转到下一节点,即部门经理审批:

            


        也可以对每个流程进行任务列表的查询,如下:      

    // 3、查看我的个人任务列表
    	@Test
    	public void findMyProcessTaskList() throws Exception {
            String userId="员工";
    //      String userId="部门经理";
    //      String userId="总经理";
          
          //查询
          List<Task> taskList=processEngine.getTaskService().findPersonalTasks(userId);
          
          for(Task task:taskList){
        	  System.out.println("id="+task.getId()+",name="+task.getName()+",assignee="+task.getAssignee());
          }
    	}
         

        小结:

           JBPM流程处理,其实跟其他的工作流程的处理如Activity的处理过程基本类似。上述demo只是简单的介绍了一下一个流程从部署启动到结束的过程流转,通过实例演示,能够清晰的看到流转过程,在这个过程中还涉及到流程流转记录的存储问题及流程处理,还有待接下来的深入研究。

            

  • 相关阅读:
    redis的发布与订阅机制
    三次握手与四次挥手详解
    super的实例及实现原理
    【node.js】入门篇
    简单理解什么是数据库CDC?(以mysql为例)
    Java小工具类(一)json的K-V转换为Java类属性
    linux系统文件拷贝命令rsync
    linux系统配置常用命令top
    关于ganymed-ssh2版本262和build210的SCPClient类的区别
    阿里巴巴java-数据库开发手册(2020泰山版)
  • 原文地址:https://www.cnblogs.com/victor-grace/p/7253647.html
Copyright © 2020-2023  润新知