01-jbpm工作流实现
来源:互联网 发布:java api 在线 编辑:程序博客网 时间:2024/06/05 21:56
第一步:导入jbpm需要的jar包
第二步:导入需要的配置文件:jbpm.cfg.xml,jbpm.hibernate.cfg.xml,logging.properties
jbpm.hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- 数据库信息 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///jbpm_20130709?characterEncoding=utf8</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 其它信息 --> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.format_sql">true</property> <!-- 映射文件 --> <mapping resource="jbpm.repository.hbm.xml" /> <mapping resource="jbpm.execution.hbm.xml" /> <mapping resource="jbpm.history.hbm.xml" /> <mapping resource="jbpm.task.hbm.xml" /> <mapping resource="jbpm.identity.hbm.xml" /> </session-factory></hibernate-configuration>
logging.properties:
handlers= java.util.logging.ConsoleHandlerredirect.commons.logging = enabledjava.util.logging.ConsoleHandler.level = SEVEREjava.util.logging.ConsoleHandler.formatter = org.jbpm.internal.log.LogFormatterorg.jbpm.level=SEVERE# org.jbpm.pvm.internal.tx.level=FINE# org.jbpm.pvm.internal.wire.level=FINE# org.jbpm.pvm.internal.util.level=FINE#org.hibernate.level=INFO#org.hibernate.cfg.SettingsFactory.level=SEVERE#org.hibernate.cfg.HbmBinder.level=SEVERE#org.hibernate.SQL.level=FINEST#org.hibernate.type.level=FINEST# org.hibernate.tool.hbm2ddl.SchemaExport.level=FINEST# org.hibernate.transaction.level=FINEST
<?xml version="1.0" encoding="UTF-8"?><jbpm-configuration> <import resource="jbpm.default.cfg.xml" /> <import resource="jbpm.businesscalendar.cfg.xml" /> <import resource="jbpm.tx.hibernate.cfg.xml" /> <import resource="jbpm.jpdl.cfg.xml" /> <import resource="jbpm.bpmn.cfg.xml" /> <import resource="jbpm.identity.cfg.xml" /> <!-- Job executor is excluded for running the example test cases. --> <!-- To enable timers and messages in production use, this should be included. --> <!-- <import resource="jbpm.jobexecutor.cfg.xml" /> --></jbpm-configuration>
java代码:
package cn.edu.zust.itee;import java.util.List;import org.jbpm.api.Configuration;import org.jbpm.api.ProcessEngine;import org.jbpm.api.task.Task;import org.junit.Test;/** * @author 郑勇 * 2013-07-09 10:43 */public class HelloWord {ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();//初始化:建表(创建18张)@Testpublic void createSchema(){new org.hibernate.cfg.Configuration().configure("jbpm.hibernate.cfg.xml").buildSessionFactory();}//一、部署流程定义(jbpm4_lob和jbpm4_deployment拥有数据)@Testpublic void deployProcessDefinition(){processEngine.getRepositoryService() .createDeployment() .addResourceFromClasspath("helloword/test.jpdl.xml") .addResourceFromClasspath("helloword/test.png") .deploy();}//二、启动流程定义(jbpm4_execution拥有数据)@Testpublic void startProcessInstance(){processEngine.getExecutionService().startProcessInstanceByKey("test");}//三、查询我的未办理的任务列表@Testpublic void findMyTaskList(){//查询任务String usrid = "员工";//String usrid = "部门经理";//String usrid = "总经理";List<Task> list = processEngine.getTaskService().findPersonalTasks(usrid);System.out.println("============="+usrid+"未办理的任务列表=============");//显示任务for(Task task:list){System.out.println("id="+task.getId()+",name="+task.getName()+",assignee="+task.getAssignee()+",createTime="+task.getCreateTime());}}//四、办理完成任务//id=10002//id=20001//id=30001@Testpublic void completeTask(){String userid = "30001";processEngine.getTaskService().completeTask(userid);}//任务全部执行完,表jbpm4_execution记录删除,jbpm4_hist_procinst表显示历史记录}
流程定义:
<?xml version="1.0" encoding="UTF-8"?><process name="test" xmlns="http://jbpm.org/4.4/jpdl"> <start g="37,3,48,48" name="start1"> <transition g="-52,-22" name="to 提交申请" to="提交申请"/> </start> <task assignee="员工" g="16,96,92,52" name="提交申请"> <transition g="-52,-22" name="to 部门经理审批" to="部门经理审批"/> </task> <task assignee="部门经理" g="16,180,92,52" name="部门经理审批"> <transition g="-52,-22" name="to 总经理审批" to="总经理审批"/> </task> <task assignee="总经理" g="16,264,92,52" name="总经理审批"> <transition g="-50,-22" name="to end1" to="end1"/> </task> <end g="38,348,48,48" name="end1"/></process>
数据库:
Jbpm工作流活动介绍:
1.预定义活动
开始活动 Start
结束活动 End
状态活动 State (cn.zust.edu.itee.state.ProcessStateActivity.java)
任务活动 Task (cn.edu.zust.itee.task.TaskVariable.java)
个人 任务分配:
* 1.使用流程变量: assignee="#{manager}" 在Expression设置#{manager}
* 2.使用类处理AssignmentHandler :assignable.setAssignee(userId);
* 3.TaskService.assignTask(taskId,userId);
组任务活动分配 (cn.edu.zust.itee.groupTask.GroupTaskVariable.java)
* 1.使用流程变量: candidate-users="#{userIdsString}" 在Expression设置#{userIdsString}(String类型的变量,多用户用","分隔)
* 2.使用类处理AssignmentHandler :assignable.addCandidateUser(userId);
* 3.processEngine.getTaskService().addTaskParticipatingUser(taskId, userId, Participation.CANDIDATE);
判断活动 Decision (cn.zust.edu.itee.decision.ProcessDecisionActivity.java)
* 1.实现DecisionHandler接口
分支/聚合 Fork/Join (cn.edu.zust.itee.joinFork.JoinFork.java)
2.自定义活动 Custom
* Custom活动 + ExternalActivityBehaviour接口
demo源代码下载地址:http://download.csdn.net/detail/zhengyong15984285623/5747773
- 01-jbpm工作流实现
- JBPM工作流
- JBPM工作流
- JBPM工作流
- JBPM工作流
- JBPM工作流
- JBPM工作流
- JBPM工作流
- jBPM工作流
- JBPM工作流
- JBPM-工作流
- 【工作流】:JBPM
- 工作流--JBPM
- JBPM工作流
- 工作流引擎(JBPM)实现企业内部信息化建设
- JBPM学习(一):实现一个简单的工作流例子全过程
- JBPM学习(一):实现一个简单的工作流例子全过程
- JBPM学习(一):实现一个简单的工作流例子全过程
- 暑假集训第二场
- cci-Q1.5 空格替换为%20
- solr4.3.0 配置在 tomcat6
- printf()格式化输出详解
- 1295. Crazy Notions
- 01-jbpm工作流实现
- MYSQL学习笔记 第三讲:数据类型
- RDLC 矩阵实现复杂统计
- linux shell编程语句if、case.
- 如何使用PS曲线调整对比度、亮度及色调
- lsmod
- 成都传智播客Java培训
- android中的ellipsize
- maven