`

JBPM入门介绍

阅读更多
Jbpm是一种工作流引擎,常用来做OA系统等。

工作流系统研究切入点(如何去学习工作流的一个思路,这是一个业务流程的思路)

1.编写流程定义

2.部署流程

3.加载流程

4.启动流程

5.执行任务

6.完成任务

流程的定义:预定义的业务流转逻辑

流程实例:业务的一次实际流转过程

参与者:任务的执行者

活动(任务):组成流程定义的节点

活动实例:组成流程实例的元素

流转:从一个节点到另一个节点这一行为

工作列表:当前需要办理的任务集合

工作流的核心组件,对流程实例进行管理

Token是和指针(运行期的概念)代表着一条执行路径,指向当前流程中正在执行的节点在实例运行期间,tokens可能是一个树形结构,同一时刻可能存在多个token但是只有一个root token

-------------------------------------------------------------

针对Jbpm如何去按上面的思路去做呢?

1.流程的定义:可以用图形化的工具也可以自己手工写。

2.部署流程:通过加载xml文件,把xml信息转换成java信息。发布流程

JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();

GraphSession graphSession=jbpmContext.getGraphSession();

ProcessDefinition processDefinition=ProcessDefinition.parseXmlResource("org/test/a.xml");

//部署流程定义,如果已经存在同名的定义,则版本号会自动累加

graphSession.deployProcessDefinition(processDefinition);

jbpmContext.close();

3.加载流程和启动流程:

JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();

GraphSession graphSession=jbpmContext.getGraphSession();

//加载流程的定义

ProcessDefinition processDefinition=graphSession.loadProcessDefinition(processDefinitionID);//这个Id是流程的Id

//创建流程实例,启动流程

ProcessInstance processInstance=new ProcessInstance(processDefinition);

//此时,rootToken指向流程定义的第一个节点

jbpmContext.save(processInstance);

jbpmContext.close();

4.获取工作列表

JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();

TaskMgmtSession mgmtSession=jbpmContext.getTaskMgmtSession();

//只能获取尚未完成的任务列表(代办任务)

List list=taskMgmtSession.findTaskInstance(userId);//userid为参与者的id

//如果需要灵活的列表获取接口,需要直接使用hibernate session对象对数据进行查询

TaskInstance instance=mgmtSession.getTaskInstance(Long.parseLong(taskId));

//这两种获取列表的方式不太一样,第一个返回List,第二个返回TaskInstance对象

5.执行任务

JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();

TaskMgmtSession mgmtSession=jbpmCotext.getTaskMgmtSession();

TaskInstance taskInstance=mgmtSession.getTaskInstance(Long.parseLong(taskId));

taskInstance.start();    //start方法的调用标识着一个任务执行的开始,任务的开始时间会被填充

jbpmContext.save(taskInstance);

jbpmContext.close();

6.结束任务

JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();

TaskMgmtSession mgmtSession=jbpmContext.getTaskMgmtSession();

TaskInstance taskInstance=mgmtSession.getTaskInstance(Long.parseLong(taskId));

taskInstance.end();

jbpmContext.save(taskInstance);

jbpmContext.close();

//end方法的调用1.当前的任务实例结束,任务结束时间会被填充。2.下一个节点的初始化3.当前任务的结束和下一

//个流程的开始是在一个事物内完成,从而保证了数据的完成性

-------------------------

如何给任务设置参与者

1.用变量传递参与者Id

值一般的web层确定

2.定义配置

<task-node name="collection">

<task>

<assignment class="com.modern.Test">

<assignment actor-id='#{userid}'>

</task>

</task-node>

3.Handler实现

public class F implements AssignmentHandler{

public void assign(Assignable arg0,ExecutionContext arg1)throws Exception{

String actorId=(String)arg1.getVariable("userId");

arg0.setActorId(actorId);

}

}



---------------------

Context标识着事物

它的的底层序列化是用hibernate实现的,createContext是开启hibernatesession的过程,close 是关闭hibernatesession的过程

JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();

try{

TaskInstance taskInstance=

.............do your process operations.............

}catch(Exception e){

}finally{

jbpmContext.close();

}

---------------------------------------

两种session的用法:

GraphSession的典型用法

职责;GraphSession处理相关的数据持久化操作,主要是ProcessDefinition 和ProcessInstance

TaskMgmtSession 的典型用法:

职责:1.TaskInstance相关的数据的查询操作

         2.TaskInstance数据通过ProcessInstance进行保存它没有save方法,save是通过对processInstance的操作实现的

**********************************

jbpm是工作流的一种

jbpm_processdefinition 是工作流的流程定义

jbpm_processInstance是工作流的实例

jbpm_id_user是一个参与者

jbpm_token是这Token的一个表,其中node记录正在执行的节点

jbpm_bytearray存所上传的3个文件,生成图片是为了流程跟踪

jbpm_byteblock存的是上传文件里的内容

分享到:
评论

相关推荐

    jbpm白皮书 介绍jbpm 入门

    ### jBPM 白皮书:介绍 jBPM 入门 #### 一、引言与背景 在当今数字化转型的时代背景下,业务流程管理(Business Process Management,简称 BPM)成为了企业提升效率、优化流程的关键技术之一。BPM 提供了一种程序...

    JBPM入门

    【JBPM入门】 JBPM,全称是Java Business Process Management,是一个开源的工作流管理系统,用于实现业务流程自动化。它提供了一套完整的工具集,包括设计、建模、执行和监控业务流程,支持BPMN2.0标准,使得业务...

    jbpm入门学习资料

    斯坦福特jbpm入门资料,内容不错,由浅入深,系统讲解了jbpm,是不错的入门资料噢

    jbpm的入门1--简单实例

    【jbpm的入门1--简单实例】 jbpm(Java Business Process Management)是一个开源的工作流管理系统,它提供了完整的业务流程管理解决方案,包括流程设计、执行、监控和优化。本实例将带你初探jbpm的世界,通过一个...

    jbpm 入门及帮助文档

    首先,"jBPM 开发入门指南"提供了一个系统性的引导,涵盖了jBPM的基本概念、安装配置、工作流设计、任务管理和事件处理等内容。它通常会讲解如何创建第一个流程定义,以及如何使用jBPM提供的工具进行流程建模。通过...

    JBPM4.4入门开发实例

    **JBPM4.4入门开发实例** JBPM(Java Business Process Management)是一个开源的工作流程管理系统,专注于业务流程的建模、执行和监控。版本4.4是JBPM的一个早期版本,尽管现在已经有更新的版本,但这个入门实例...

    jbpm入门例子收藏

    jbpm入门例子收藏 jBPM(Java Business Process Management)是一个开源的工作流管理系统,由JBoss组织开发。它主要用于管理业务流程,支持流程定义、执行、监控和优化。jBPM提供了一整套工具,包括Eclipse插件,...

    jbpm4.4入门编程小例子

    **jbpm4.4入门编程小例子** Jbpm(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jbpm4.4是该系统的较早版本,但它仍然是许多开发人员学习工作流...

    JBPM4.4 入门小例子

    JPBM4.4入门小例子,适合刚开始准备学工作流的筒子们。。

    jbpm入门实践

    **jbpm入门实践** jbpm 是一款开源的工作流管理系统,主要用于设计、执行和管理业务流程。本文主要针对jbpm 5.2版本进行入门实践,适合初级用户学习。首先,我们要进行必要的安装与配置。 **一、jbpm的准备工作** ...

    jbpm5入门学习

    jbpm5入门学习资料

    jbpm开发入门指南的例子

    三、jbpm入门示例 在这个"myjbpm"压缩包中,你可能找到了一个简单的jbpm流程示例,通常包括以下组成部分: 1. 流程定义文件(.bpmn20.xml):用BPMN 2.0标准定义的流程图,描述了流程的任务和流转规则。 2. 图形文件...

    jbpm入门,详细文档,附小例子

    在jbpm入门过程中,首先需要理解的是它的核心概念: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process Model and Notation)标准来定义流程。BPMN是一种图形化的语言,用于描述业务流程的逻辑,包括开始事件、...

    jBPM4用户指南入门教程

    **jBPM4用户指南入门教程** jBPM4是一个基于Java的企业级工作流管理系统,它为业务流程管理(BPM)提供了全面的解决方案。本教程将引导您逐步了解如何安装配置、使用流程设计器、部署业务归档以及利用服务和jpdl...

    JBPM4.4 工作流 入门 例子

    **JBPM4.4工作流入门例子 - HelloWorld** ...总之,JBPM4.4提供了一个强大且灵活的工作流平台,通过"HelloWorld"这样的入门实例,你可以逐步掌握如何构建和管理业务流程,从而实现企业流程的自动化和优化。

    jbpm入门指南和开发指南

    《jbpm开发入门指南》和《jbpm开发指南》是两本针对jbpm框架的重要参考资料,对于初学者和有经验的开发者来说都是宝贵的资源。它们通常会涵盖以下核心知识点: 1. **jbpm概述**:介绍jbpm的基本概念,包括它的工作...

    jbpm入门案例.docx

    jBPM,全称Java Business Process Management,是一个由JBoss组织开发的开源工作流管理系统,主要负责业务流程的建模、执行和管理。它提供了一套完整的工具链,包括Eclipse插件,使得开发者能够方便地设计、部署和...

    jbpm开发入门指南

    jbpm(Java Business Process Management)是一款开源的工作流程管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。jbpm以其强大的功能、灵活性和社区支持,深受开发者和企业的欢迎,尤其适合在...

Global site tag (gtag.js) - Google Analytics