zl程序教程

您现在的位置是:首页 >  其他

当前栏目

使用JBPM4实现一个简单的工作流例子详解编程语言

编程语言 实现 使用 详解 简单 一个 工作 例子
2023-06-13 09:20:42 时间

使用JBPM4实现一个简单的工作流例子详解编程语言

test.jpdl.xml

?xml version= 1.0 encoding= UTF-8 ?  

process name= test xmlns= http://jbpm.org/4.4/jpdl  

  start g= 247,9,48,48 name= start1  

  transition g= -69,-22 name= to 员工提交申请 to= 员工提交申请 /  

  /start  

  end g= 244,326,48,48 name= end1 /  

  task assignee= 员工 g= 223,84,92,52 name= 员工提交申请  

  transition g= -93,-22 name= to 部门经理审批 to= 部门经理审批 /  

  /task  

  task assignee= 部门经理 g= 226,161,92,52 name= 部门经理审批  

  transition g= -81,-22 name= to 总经理审批 to= 总经理审批 /  

  /task  

  task assignee= 总经理 g= 222,244,92,52 name= 总经理审批  

  transition g= -50,-22 name= to end1 to= end1 /  

  /task  

/process  


使用JBPM4实现一个简单的工作流例子详解编程语言


1.部署流程定义

a) 通过直接拿到.jpdl.xml和.png方式部署

private ProcessEngine processEngine = new Configuration().setResource( jbpm.cfg.xml ).buildProcessEngine();  

  @Test  

  public void createSchema() { // hbm2ddl.auto=update  

  new org.hibernate.cfg.Configuration().configure( jbpm.hibernate.cfg.xml ).buildSessionFactory();  

  }  

  // 一、部署流程定义  

  @Test  

  public void deployProcessDefinition() {  

  processEngine.getRepositoryService()//  

  .createDeployment()//  

  .addResourceFromClasspath( helloworld/test.jpdl.xml )//  

  .addResourceFromClasspath( helloworld/test.png )//  

  .deploy();  

  }  

b) 部署完后,在jbpm4_ployment表中有一条记录;在jbpm4_lob表有两条记录,分别为test.jpdl.xml和test.png。


2.启动流程实例

a) 通过key启动流程实例,.jpdl.xml中key不写默认为name属性

@Test  

public void startProcessInstance() {  

  processEngine.getExecutionService().startProcessInstanceByKey( test );  

}  

b) 启动流程实例后:jbpm4_execution表中有一条员工提交申请的活动记录,此时进行到to员工提交申请环节。


3.员工操作

a) 查询未办理的任务列表

@Test  

public void findMyTaskList() {  

  // 查询任务  

  String userId = 员工  

  List Task list = processEngine.getTaskService().findPersonalTasks(userId);  

  // 显示任务  

  System.out.println( +userId+ 的未办理的任务列表 );  

  for (Task task : list) {  

  System.out.println( id= + task.getId()//  

  + , name= + task.getName()//  

  + , assignee= + task.getAssignee()//  

  + , createTime= + task.getCreateTime());  

  }  

}  

b) 查看到信息如下:有一条任务id为20002


员工的未办理的任务列表

id=20002, name=员工提交申请, assignee=员工, createTime=2014-05-02 16:48:04.0

c) 员工办理任务:提交申请环节

@Test  

public void completeTask() {  

  String taskId = 20002  

  processEngine.getTaskService().completeTask(taskId);  

}  

d) 员工执行完任务,即员工提交申请环节结束,环节进行到to部门经理审批,此时员工再查询个人任务列表结果为空。


4.部门经理操作

a) 查询未办理的任务列表

@Test  

public void findMyTaskList() {  

  // 查询任务  

  String userId = 部门经理  

  List Task list = processEngine.getTaskService().findPersonalTasks(userId);  

  // 显示任务  

  System.out.println( +userId+ 的未办理的任务列表 );  

  for (Task task : list) {  

  System.out.println( id= + task.getId()//  

  + , name= + task.getName()//  

  + , assignee= + task.getAssignee()//  

  + , createTime= + task.getCreateTime());  

  }  

}  

b) 查看到信息如下:有一条任务id为30001


部门经理的未办理的任务列表

id=30001, name=部门经理审批, assignee=部门经理, createTime=2014-05-02 16:49:06.0

c) 部门经理办理任务:提交申请环节

@Test  

public void completeTask() {  

  String taskId = 30001  

  processEngine.getTaskService().completeTask(taskId);  

}  

d) 部门经理执行完任务,即部门经理审批环节结束,环节进行到to总经理审批,此时部门经理再查询个人任务列表结果为空。


5.总经理操作

a) 查询未办理的任务列表

@Test  

public void findMyTaskList() {  

  // 查询任务  

  String userId = 总经理  

  List Task list = processEngine.getTaskService().findPersonalTasks(userId);  

  // 显示任务  

  System.out.println( +userId+ 的未办理的任务列表 );  

  for (Task task : list) {  

  System.out.println( id= + task.getId()//  

  + , name= + task.getName()//  

  + , assignee= + task.getAssignee()//  

  + , createTime= + task.getCreateTime());  

  }  

}  

b) 查看到任务id为40001


总经理的未办理的任务列表

id=40001, name=总经理审批, assignee=总经理, createTime=2014-05-02 16:49:33.0

c) 总经理办理任务:提交申请环节

@Test  

public void completeTask() {  

  String taskId = 40001  

  processEngine.getTaskService().completeTask(taskId);  

}  

d) 总经理执行完任务,即总经理审批环节结束,环节进行到to end1,此时总经理再查询个人任务列表结果为空。


6.流程实例执行完毕,此时jbpm4_execution表为空,历史记录表:jbpm4_hist_procinst出现一条记录。

使用JBPM4实现一个简单的工作流例子详解编程语言

转载请注明来源网站:blog.ytso.com谢谢!

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/14686.html

cxml