大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
第一步:导入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.ConsoleHandler
redirect.commons.logging = enabled
java.util.logging.ConsoleHandler.level = SEVERE
java.util.logging.ConsoleHandler.formatter = org.jbpm.internal.log.LogFormatter
org.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
jbpm.cfg.xml:
<?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张)
@Test
public void createSchema(){
new org.hibernate.cfg.Configuration().configure("jbpm.hibernate.cfg.xml").buildSessionFactory();
}
//一、部署流程定义(jbpm4_lob和jbpm4_deployment拥有数据)
@Test
public void deployProcessDefinition(){
processEngine.getRepositoryService()
.createDeployment()
.addResourceFromClasspath("helloword/test.jpdl.xml")
.addResourceFromClasspath("helloword/test.png")
.deploy();
}
//二、启动流程定义(jbpm4_execution拥有数据)
@Test
public void startProcessInstance(){
processEngine.getExecutionService().startProcessInstanceByKey("test");
}
//三、查询我的未办理的任务列表
@Test
public 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
@Test
public 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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195531.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...