zoukankan      html  css  js  c++  java
  • JBPM工作流(三)——ProcessEngine与Service API

    1.获取processEngine的方法:

    a) 方法一

    private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();

    b) 方法二

    // 获取单例的ProcessEngine对象,使用的是默认的配置文件(jbpm.cfg.xml)

    private ProcessEngine processEngine = Configuration.getProcessEngine(); 

    2.常用的Service API(JBPM所有的操作都是通过Service完成的)

    a) processEngine.getRepositoryService();//管理流程定义的相关操作(部署,查询,删除等)

    b) processEngine.getExecutionService();//管理执行的,流程实例的管理操作,一次具体执行的信息,包括启动、推进、删除Execution等操作

    c) processEngine.getTaskService();//管理任务的(查询任务,办理任务)

    d) processEngine.getHistoryService();//管理历史的数据(执行完的数据管理,主要是查询)

    3.API风格

    a) 方法调用链.

    b) 每一个方法都是流程有关的一个业务操作,默认是一个独立的事务.

    4.查询的有关API            

    功能说明

    相应的查询API

    查询“流程定义”

    ProcessDefinitionQuery processDefinitionQuery = 

    processEngine.getRepositoryService()

    .createProcessDefinitionQuery();

    查询“执行对象”

    (流程实例)

    ProcessInstanceQuery processInstanceQuery = 

    processEngine.getExecutionService() //

    .createProcessInstanceQuery();

    查询“任务”

    TaskQuery taskQuery = //

    processEngine.getTaskService()//

    .createTaskQuery();

    查询“执行历史”

    (流程实例历史)

    HistoryProcessInstanceQuery historyProcessInstanceQuery = 

    processEngine.getHistoryService()

    .createHistoryProcessInstanceQuery();

    查询“任务历史”

    HistoryTaskQuery historyTaskQuery = 

    processEngine.getHistoryService()

    .createHistoryTaskQuery();

    以上列出的Query对象有:

    1. ProcessDefinitionQuery

    2. ProcessInstanceQuery

    3. TaskQuery

    4. HistoryProcessInstanceQuery

    5. HistoryTaskQuery

    这些Query对象的使用方法都是一致的,如下所示:

    1, 添加过滤条件:调用其中的有关方法指定条件即可。如:

    a) processDefinitionQuery.processDefinitionKey("请假")是指定查询key为”请假”的流程定义;

    b) taskQuery.assignee("张三")是指定办理人为”张三”的任务。

    2, 添加排序条件:

    a) 调用 xxQuery.orderAsc(property),表示按某属性升序排列

    b) 调用 xxQuery.orderDesc(property),表示按某属性降序排列

    c) 可指定多个排序条件,就是代表第1顺序,第2顺序…等。

    d) 属性名在各自的Query对象(接口)中有常量定义,如:

    i. ProcessDefinitionQuery.PROPERTY_ID

    ii. ProcessDefinitionQuery.PROPERTY_KEY

    iii. TaskQuery.PROPERTY_NAME

    iv. TaskQuery.PROPERTY_ASSIGNEE

    3, 指定分页有关信息:

    a) 调用方法xxQuery.page(firstResult, maxResults);

    b) 这是指定first与max的值(就是Hibernate中的Query.setFirstResult()与Query.setMaxResults())

    c) 如果没有调用这个方法,代表要查询出符合条件的所有记录。

    4, 查询得到结果:

    a) 调用方法xxQuery.list(); 表示查询列表

    b) 调用方法 xxQuery.uniqueResult(); 表示查询唯一的结果调用方法xxQuery.count(); 表示查询符合条件的记录数量

  • 相关阅读:
    大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础
    大数据技术之_16_Scala学习_03_运算符+程序流程控制
    大数据技术之_16_Scala学习_01_Scala 语言概述
    通过创建一个简单的骰子游戏来探究 Python
    在Linux系统中创建SSH服务器别名
    DNS原理及劫持问题
    详细介绍:Kubernetes1.4版本的新功能
    Linux系统中五款好用的日志分析工具
    wc命令——Linux系统高效数据统计工具
    Linux系统内核正式进入5.0版本时代
  • 原文地址:https://www.cnblogs.com/HHR-SUN/p/7220548.html
Copyright © 2011-2022 走看看