`
suhuanzheng7784877
  • 浏览: 708479 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47912
社区版块
存档分类
最新评论

JBPM4学习总结之2——发布流程模板、流程实例

    博客分类:
  • jbpm
阅读更多

1.       发布流程模板

当我们通过流程编辑器编辑好了流程之后就可以将这个流程模板发布到数据库中。我觉得定义一个流程模板更像是定义一个Java Class类,发布一个流程模板就好像是编译这个类成为class,而流程实例就好像是一个Java类的一个实例对象。

最常用的是用Java代码的方式发布流程~~~还有一个是利用Ant脚本发布流程,不过一般在开发阶段十分少用。

// 加载默认的jbpm.cfg.xml文件

ProcessEngine processEngine = new Configuration().buildProcessEngine();

 

/**

 * 发布流程

 */

public void test01Deploy() {

 

         String deployId = repositoryService.createDeployment()

                            .addResourceFromClasspath("decision.jpdl.xml").deploy();

 

         System.out.println(deployId);

}

这样就把流程模板为decision的流程发布到了数据库中,发布成功后,jbpm相关表会变化如下:

jbpm4_deployment

 jbpm4_deployprop

jbpm4_lob

jbpm4_property

 

比较重要的几个服务接口,其他服务接口都是从主接口——引擎服务接口ProcessEngine获得的。

// 引擎服务接口

ProcessEngine processEngine = new Configuration().buildProcessEngine();

 

// 资源服务,流程模板的部署、查询、删除

RepositoryService repositoryService = processEngine.getRepositoryService();

 

// 执行服务,设置流程实例的发起、执行

ExecutionService executionService = processEngine.getExecutionService();

 

// 流程管理接口、异步工作相关执行

ManagementService managementService = processEngine.getManagementService();

 

// 人工任务服务接口,对任务task的查询、提交、删除、保存

TaskService taskService = processEngine.getTaskService();

 

// 历史记录操作接口

HistoryService historyService = processEngine.getHistoryService();

 

// 身份验证服务

IdentityService identityService = processEngine.getIdentityService();

 

1.       根据流程模板发起一个流程实例

定义好了模板后,就可以建立此流程模板的实例对象了,实例对象就是现实中一个个真正的流程事件了。

1.       直接发起StateChoice流程实例

// 开始process流程

ProcessInstance processInstance = executionService.startProcessInstanceByKey("StateChoice");

 

2.       发起流程时加入流程实例变量

HashMap<String, Object> parm = new HashMap<String, Object>();

parm.put("MyId", "13000000000");

parm.put("MyName", "liuyan");

parm.put("MyDate", new Date());

 

ProcessInstance processInstance = executionService.startProcessInstanceById("StateChoice -1", parm);

这样在发起流程的时候通过一个HashMap将流程变量传到整个流程中,可能以后的某一个节点会用到“当初”传入的变量。

startProcessInstanceByKey:根据StateChoice找到最新的部署版本去发起流程。

startProcessInstanceById:根据StateChoice的版本(1就是第1版本)去发起流程。

如果传入流程实例的是一个自定义的复杂对象,则该对象必须实现Serializable接口,以便流程实例上下文的变量持久化。

  • 大小: 8.3 KB
  • 大小: 8.6 KB
  • 大小: 12.7 KB
  • 大小: 8 KB
分享到:
评论

相关推荐

    jBPM4 user guide

    - 描述了jBPM4的核心组件——进程引擎的作用和功能。 - 进程引擎负责解析流程定义,并驱动流程实例的执行。 - **5.3 部署流程** - 介绍了如何将定义好的流程部署到jBPM环境中。 - 包括上传文件、配置参数等步骤...

    JBPM案例详解(十)

    本篇案例将围绕具体的业务场景——"LeaveSchoolWorkflow",即学生退学流程,来阐述如何利用JBPM实现这一复杂业务流程。 首先,我们要理解JBPM的核心概念。JBPM支持基于BPMN 2.0(Business Process Model and ...

    jBPM-ProcessDefinition关系和区别

    **jbPM——过程定义的关系与区别** jbPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了业务流程建模、执行以及监控的功能。在jbPM中,过程定义是核心概念之一,它描述了业务流程的逻辑...

    工作流引擎详解

    ### 三、JBPM工作流引擎案例分析——请假流程管理 #### 1. 流程定义 以请假流程为例,工作流引擎通过图形化界面或脚本语言定义请假申请、审批、反馈等环节,形成一个完整的流程模型。这个模型不仅包含各环节的顺序...

    java多线程_设计模式_各种技术(我的书架)

    在这个“我的书架”集合中,我们有两个相关的PDF文档——jBPM4.1中文用户手册和jBPM4.0版本的手册,这些资源可以帮助我们深入理解流程管理和业务自动化,同时也可能涉及到多线程和设计模式的应用。 首先,让我们...

    spring+struts2+hibernate+简单工作流系统

    《构建基于Spring、Struts2、Hibernate的工作流系统——HRSystem》 在现代企业信息化建设中,工作流管理系统(Workflow Management System,WfMS)扮演着至关重要的角色,它能够自动化处理业务流程,提高工作效率。...

    drools入门(二)-----规则引擎Drools解决汽水问题

    此外,Drools 与 jBPM(Business Process Management)结合,可以实现更复杂的业务流程管理。 通过以上内容,我们可以看到 Drools 如何帮助我们解决汽水问题,将复杂的业务逻辑转化为易于管理和维护的规则。这种...

Global site tag (gtag.js) - Google Analytics