`
newqinhao
  • 浏览: 140758 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

传智播客-----JBPM基本用法得介绍

阅读更多
今天汤阳光老师给我们对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();

}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics