今天汤阳光老师给我们对JBPM基本用法进行的基本的学习!
工作流基本知识
JBPM基本用法
JBPM高级用法
各种类型节点的用法及应用场景
JBPM实现原理
系统架构和数据结构
基于JBPM的工作流应用平台开发
工作流应用平台介绍
设计和实现策略
工作流基本知识
概念和术语
JBPM基本概况
jBPM中与工作流领域对应的概念
JBPM基本用法
基本API的用法以及应用策略
实例开发
实例编写一个报销审批流程的相关代码
课堂交流和答疑
ljBPM是什么
•是基于java实现的流程业务处理框架(Business Process Management)
ljBPM能做什么
•支撑企业的流程性业务应用:解释业务规则,使得协作自动化
l特点
•没有采用WFMC的规范xPDL(尤其是业务定义部分)
•强大的业务逻辑描述能力(jPDL)
•核心组件是流程调度引擎
•轻量级,core engine无须运行于JEEContainer
•采用hibernate作为数据持久化的工具,兼容多种数据库
•简单易用,灵活、可扩展,同一需求有多种解决策略
l区别
•Workflow更侧重于对流程的处理模型,属于技术领域范畴
•BPM除了对流程的处理,还要提供灵活的编程模型,易于企业应用的集成,更侧重于业务范畴
l用workflow替代BPM
•我们在后面的课程中将以workflow名词为主
l什么是工作流?
•WFMC定义:The automation of a business process, in whole or part, during which documents, information or tasks are passed from one participant to another for action, according to a set of procedural rules.
•要素:任务(task),参与者(participant )
l什么是工作流管理系统
•WFMC定义:A system that defines, creates and manages the execution of workflows through the use of software, running on one or more workflow engines, which is able to interpret the process definition, interact with workflow participants and, where required, invoke the use of IT tools and applications.
•要素:工作流的管理、工作流的调度执行、工作流引擎
l工作流带来的益处
•实现了无纸化的工作模式;
•过程可监控:便于对执行过程的跟踪和监控
•数据可管理:便于对数据进行检索、分析
•可靠性:减少人-人交互的主观错误的机率
l常见应用领域
•行政管理:行政、事业单位、大中型(国有)企业
•产品研发和制造:用于对整个研发、生产制造过程的管理和调度
•电子商务:订单处理
•其他 如大型内容管理系统的多步审核
l常见场景
•公文流转、行政审批、订单处理、产品研发、制造过程
•其他需要多个角色协作、多步完成的活动
请假条得实例:
package cn.itcast.jbpm.init;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class CreateSchema {
/**
* 建表
*/
@Test
public void createSchema(){
new Configuration().configure().buildSessionFactory();
}
}
/**
* <pre>
* 任务实例的状态:已创建、已开始、已完成
* </pre>
*/
// 3,获取任务列表(未完成的任务实例列表)
@SuppressWarnings("unchecked")
@Test
public void getTaskList() {
// String actorId = "员工(张三)";
String actorId = "部门经理(李四)";
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
// List<TaskInstance> taskList = jbpmContext.getTaskList(actorId);
List<TaskInstance> taskList = jbpmContext.getTaskMgmtSession().findTaskInstances(actorId);
for (TaskInstance ti : taskList) {
System.out.println("id=" + ti.getId()//
+ ",name=" + ti.getName()//
+ ",actorId=" + ti.getActorId()//
+ ",create=" + ti.getCreate()//
+ ",start=" + ti.getStart()//
+ ",end=" + ti.getEnd());
}
jbpmContext.close();
}
private long taskInstanceId = 2;
// 4-1,办理任务_开始任务
@Test
public void startTask() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
TaskInstance ti = jbpmContext.getTaskInstance(taskInstanceId);
ti.start();
jbpmContext.close();
}
// 4-2,办理任务_结束任务
@Test
public void endTask() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
TaskInstance ti = jbpmContext.getTaskInstance(taskInstanceId);
ti.end();
jbpmContext.close();
}
}
package cn.itcast.jbpm.variable;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.junit.Test;
public class VariableTest {
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
// 0,部署流程定义
@Test
public void deploy() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); // 创建Session,开始事务
String xmlResource = "cn/itcast/jbpm/variable/leave/processdefinition.xml";
ProcessDefinition pd = ProcessDefinition.parseXmlResource(xmlResource);
jbpmContext.getGraphSession().deployProcessDefinition(pd);
jbpmContext.close(); // 提交/回滚 事务,关闭Session
}
// 1,启动流程实例
@Test
public void startProcess() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
ProcessDefinition pd = jbpmContext.getGraphSession().findLatestProcessDefinition("leave");
ProcessInstance pi = pd.createProcessInstance(); // new ProcessInstance(pd);
// jbpmContext.save(pi);
// 设置变量
pi.getContextInstance().setVariable("employee", "张三");
pi.getContextInstance().setVariable("manager", "李四");
// 离开开始节点
Token token = pi.getRootToken(); // 根令牌
token.signal();
jbpmContext.close();
}
private long taskInstanceId = 6;
// 2,办理任务:提交申请
@Test
public void submit() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
TaskInstance ti = jbpmContext.getTaskInstance(taskInstanceId);
ti.start();
ProcessInstance pi = ti.getProcessInstance();
pi.getContextInstance().setVariable("days", 3); // 请假天数
ti.end();
jbpmContext.close();
}
// 2,办理任务:部门经理审批
@Test
public void audit() {
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
TaskInstance ti = jbpmContext.getTaskInstance(taskInstanceId + 1);
ti.start();
ProcessInstance pi = ti.getProcessInstance();
int days = (Integer) pi.getContextInstance().getVariable("days");
System.out.println("请假的天数为:" + days + "天");
ti.end();
jbpmContext.close();
}
}
分享到:
相关推荐
传智播客jbpm教程,分四部由浅入深的讲解jbpm的基础知识,到应用开发,对于初学者和想要提高的人有很大帮助
传智播客 jbpm 21讲 第一天(共4天),孙文举主讲,论坛上有人求的,特上传一下,希望对你有帮助。
传智播客 jbpm 21讲 第2天(共4天),孙文举主讲,论坛上有人求的,特上传一下,希望对你有帮助。
传智播客 jbpm 21讲 第3天(共4天),孙文举主讲,论坛上有人求的,特上传一下,希望对你有帮助。
传智播客 汤阳光 OA 12天 含Jbpm 源码 笔记 ppt
传智播客 jbpm oa系统
传智播客 jbpm 21讲 第4天(共4天)及源代码,孙文举主讲,论坛上有人求的,特上传一下,希望对你有帮助。
传智播客OA系统完整源代码 附带JBPM源码完整 SSH方案可供参考学习
传智播客OA+工作流实战_工作流中的概念与JBPM相关API调用
传智播客汤阳光 JBPM+OA 页面静态代码传智播客汤阳光 JBPM+OA 页面静态代码
传智播客OA系统的静态html文件,含JBPM的java源码找了好久找不到,只找到这个,给有需要的人。
传智播客汤阳光OA项目完整12天(包含4天JBPM工作流),完整视频!
传智播客2010OA全部源码包括JBPM
传智播客汤阳光JBPM3源码,这是本人对照汤阳光OA项目视频自己手工编写的代码
传智播客JBPM_Basics_new.ppt
传智播客oa系统java源码 技术 jbpm 工作流
jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍
jeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202.zipjeecg-jbpm-framework 20130202....
jbpm-jpdl-designer-3.0.13 关于jbpm的jpdl 设计器
jbpm-eclipse插件,这个插件随jbpm4.4 一起发布,位于 jbpm-4.4/install/src/gpd 目录下,由于许多人找不到这个包,所有传上来,赚点积分。