zoukankan      html  css  js  c++  java
  • JBPM4.4_核心概念与相关API

    1. 核心概念与相关APIService API

    1.1. 概念:Process definition, process instance ,  execution

    1.1.1. Process definition

    ProcessDefinition,流程定义:

    一个流程的步骤说明。如一个请假流程、报销流程、借款流程,是一个规则

    例:

    1.1.2. Process instance

    ProcessInstance,流程实例:

    代表流程定义的一次执行。如张三昨天按请假流程请了一次假。一个流程实例包括了所有运行阶段, 其中最典型的属性就是跟踪当前节点的指针。

    1.1.3. Execution

    Execution,执行:

    一般情况下,一个流程实例是一个执行树的根节点。

    使用树状结构的原因在于, 这一概念只有一条执行路径, 使用起来更简单。 业务API不需要了解流程实例和执行之间功能的区别。 因此, API里只有一个执行类型来引用流程实例和执行。

    假设汇款和存档可以同时执行,那么主流程实例就包含了2个用来跟踪状态的子节点:

    1.1. ProcessEngine与Service API

    1.1.1. Configuration与ProcessEngine

    Interacting with jBPM occurs through services. The service interfaces can be obtained from the ProcessEngine which is build from a Configuration. A ProcessEngine is thread safe and can be stored in a static member field.

     

    使用默认的配置文件(jbpm.cfg.xml)生成Configuration并构建ProcessEngine:

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

    或是使用如下代码获取使用默认配置文件的、单例的ProcessEngine对象:

    ProcessEngine processEngine = Configuration.getProcessEngine();

    或是使用指定的配置文件(要放到classPath下):

    ProcessEngine processEngine = new Configuration().setResource("my-own-configuration-file.xml")

          .buildProcessEngine();

     

    1.1.2. jBPM Service API

    jBPM所有的操作都是通过Service完成的以下是获取Service的方式:

    RepositoryService repositoryService = processEngine.getRepositoryService();

    ExecutionService executionService = processEngine.getExecutionService();

    TaskService taskService = processEngine.getTaskService();

    HistoryService historyService = processEngine.getHistoryService();

    ManagementService managementService = processEngine.getManagementService();

    Service的作用:

    RepositoryService

    管理流程定义

    ExecutionService

    管理执行,包括启动、推进、删除Execution等操作

    TaskService

    管理任务

    HistoryService

    历史管理(执行完的数据管理,主要是查询

    IdentityService

    jBPM的用户、组管理

    ManagementService

     

    1.1.3. API风格

    方法调用链

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

    1.1.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(); 表示查询唯一的结果

    c) 调用方法xxQuery.count(); 表示查询符合条件的记录数量

  • 相关阅读:
    Sum of Medians
    MINSUB
    Girls Love 233
    How Many Answers Are Wrong
    Sorting It All Out
    Cube Stacking
    Boolean Expressions
    表达式求值
    #1301 : 筑地市场
    用seaborn对数据可视化
  • 原文地址:https://www.cnblogs.com/justdoitba/p/8001631.html
Copyright © 2011-2022 走看看