zoukankan      html  css  js  c++  java
  • 【Activiti工作流】2.activiti介绍

    【Activiti工作流】2.activiti介绍

    我们开发工作流系统,肯定要编写一套完整的可以操作工作流的程序,业内
    已经拥有了成熟的工作流框架,我们可以借助这些框架来完成我们的工作流
    类型的软件开发任务。我们要介绍的就是基于Java的Activiti工作流框架。

    1.Activiti介绍
    Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。
    如:


    我们可以看上一个图,也是请假的一个流程图,有一个开始节点,然后一个请假
    的申请被提出,之后黑色叉叉代表判断,有两种决策,一个是同意,一个是拒绝。
    当同意的时候,发送同意信息即可,然后结束。如果拒绝,先判断一下请假申请
    是否需要修改还是直接否决,需要修改,就返回开始节点,让申请人修改后再重
    新发起申请;如果否决,流程结束,至结束节点。

    2.工作流引擎
    ProcessEngine对象,这是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
    工作流的API所有的调用都要用到工作流引擎。

    3.BPMN
    业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)

    我们可以在Eclipse中使用工作流插件,来绘制bpmn图,用来描述具体的业务流程:


    4.数据库
    Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
    ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
    ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
    ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
    ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
    ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

    表结构操作:
    4.1:资源库流程规则表
    1)act_re_deployment 部署信息表
    2)act_re_model   流程设计模型部署表
    3)act_re_procdef   流程定义数据表

    4.2:运行时数据库表
    1)act_ru_execution 运行时流程执行实例表
    2)act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息
    3)act_ru_task 运行时任务节点表
    4)act_ru_variable 运行时流程变量数据表

    4.3:历史数据库表
    1)act_hi_actinst 历史节点表
    2)act_hi_attachment 历史附件表
    3)act_hi_comment 历史意见表
    4)act_hi_identitylink 历史流程人员表
    5)act_hi_detail 历史详情表,提供历史变量的查询
    6)act_hi_procinst 历史流程实例表
    7)act_hi_taskinst 历史任务实例表
    8)act_hi_varinst 历史变量表

    4.4:组织机构表
    1)act_id_group 用户组信息表
    2)act_id_info 用户扩展信息表
    3)act_id_membership 用户与用户组对应信息表
    4)act_id_user 用户信息表

    这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足 

    4.5:通用数据表
    1)act_ge_bytearray 二进制数据表
    2)act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,

    5.activiti.cfg.xml(activiti的配置文件)
    Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
    定义数据库配置参数:
     jdbcUrl: 数据库的JDBC URL。
     jdbcDriver: 对应不同数据库类型的驱动。
     jdbcUsername: 连接数据库的用户名。
     jdbcPassword: 连接数据库的密码。
    基于JDBC参数配置的数据库连接 会使用默认的MyBatis连接池。 下面的参数可以用来配置连接池(来自MyBatis参数):
     jdbcMaxActiveConnections: 连接池中处于被使用状态的连接的最大值。默认为10。
     jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最大值。
     jdbcMaxCheckoutTime: 连接被取出使用的最长时间,超过时间会被强制回收。 默认为20000(20秒)。
     jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。
    示例数据库配置:

    也可以使用javax.sql.DataSource。 (比如,Apache Commons的DBCP):


    6.logging.properties(日志处理)
    日志的配置文件,Activiti操作数据库的时候,整合的日志文件

    7.一个工作流的产生和使用过程:
    1)定义工作流
    首先使用插件绘制工作流的流程图,此时分别生成bpmn和png格式的文件:

    其中bpmn文件用图片方式打开类似这样:

    使用xml编辑器打开,可以看到bpmn格式文件的XML格式的内容:


    所以,bpmn文件是给计算机进行流程和信息的传递使用的,
    而png文件是给用户查看的。

    以上两个文件都可以使用Eclipse插件来绘制。不需要研究他们
    的生成原理,根据业务需要画出流程图即可,我们要研究的重点
    是定义和管理工作流。

    2)定义和管理工作流
    Activiti用来存放流程数据一共使用了23张表,都是Act底层操作默认
    使用MyBatis操作。

    工作流Activiti的表是用来存放流程数据的,而业务数据都需要
    用户自己创建和维护。

    一定需要业务去关联流程,才能开发工作流系统。

    阶段性总结如图:


    我们接下来介绍Activiti的开发环境和API,来逐步开发基于Activiti框架的工作流系统。

    转载请注明出处:http://blog.csdn.net/acmman/article/details/56495272

  • 相关阅读:
    TCP源码—连接建立
    TCP系列02—连接管理—1、三次握手与四次挥手
    TCP系列01—概述及协议头格式
    ubuntu软件管理apt与dpkg
    318. Maximum Product of Word Lengths
    317. Shortest Distance from All Buildings
    316. Remove Duplicate Letters
    315. Count of Smaller Numbers After Self
    314. Binary Tree Vertical Order Traversal
    313. Super Ugly Number
  • 原文地址:https://www.cnblogs.com/handsome1013/p/8403669.html
Copyright © 2011-2022 走看看