工作流工作流简介工作流(Workflow): 工作流就是通过计算机技术对业务流程进行自动化治理。实现多个参与者依照预约的流程去主动执行业务流程。
定义: 通过计算机对业务流程自动化执行治理次要解决的是: 使在多个参与者之间依照某种预约义的规定主动进行传递文档,信息或工作的过程.从而实现某个预期的业务指标,或者促使此指标的实现工作流管理系统的指标:
管理工作的流程以确保工作在正确的工夫被冀望的人员所执行在自动化进行的业务过程中插入人工的执行和干涉工作流框架:
Activiti,JBPM,OSWorkFlow,WorkFlow工作流框架底层须要有数据库提供反对
工作流术语工作流引擎ProcessEngine对象: 这是Activiti工作的外围.负责生成流程运行时的各种实例及数据,监控和治理流程的运行
BPM业务流程治理:
是一种以规范化的结构端到端的卓越业务流程为核心,以继续的进步组织业务绩效为目标的系统化办法常见商业治理教育如EMBA,MBA等均将BPM蕴含在内
BPMN业务流程建模与标注:
这些图如何组合成一个业务流程图(Business Process Diagram)探讨BPMN的各种的用处:包含以何种精度来影响一个流程图中的模型BPMN作为一个规范的价值BPMN将来倒退的近景
流对象一个业务流程图有三个流对象的外围元素
事件
一个事件用圆圈来形容,示意一个业务流程期间产生的货色事件影响流程的流动.个别有一个起因(触发器)或一个影响(后果)基于它们对流程的影响,有三种事件:开始事件,两头事件,终止事件流动
用圆角矩形示意,一个流程由一个流动或多个流动组成条件
条件用菱形示意,用于管制序列流的分支与合并。能够作为抉择,包含门路的分支与合并外部的标记会给出控制流的类型
Activiti开源工作流框架Activiti简介Activiti是一个开源的工作流引擎,它实现了BPMN 2.0标准,能够公布设计好的流程定义,并通过api进行流程调度Activiti 作为一个听从 Apache 许可的工作流和业务流程治理开源平台,其外围是基于Java的超疾速,超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员Activiti 流程引擎重点关注在零碎开发的易用性和轻量性上.每一项BPM业务性能Activiti流程引擎都以服务的模式提供给开发人员.通过应用这些服务,开发人员可能构建出功能丰富,轻便且高效的BPM应用程序
Activiti服务构造Activiti零碎服务结构图外围类:
ProcessEngine: 流程引擎的形象,能够通过此类获取须要的所有服务服务类:
XxxService: 通过ProcessEngine获取,Activiti将不同生命周期的服务封装在不同Service中,包含定义,部署,运行.通过服务类可获取相干生命周期中的服务信息
==RepositoryService==
Repository Service提供了对repository的存取服务Activiti中每一个不同版本的业务流程的定义都须要应用一些定义文件,部署文件和反对数据(例如BPMN2.0XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中==RuntimeService==
Runtime Service提供了启动流程,查问流程实例,设置获取流程实例变量等性能.此外它还提供了对流程部署,流程定义和流程实例的存取服务==TaskService==
Task Service提供了对用户Task和Form相干的操作.它提供了运行时工作查问,支付,实现,删除以及变量设置等性能==HistoryService==
History Service用于获取正在运行或曾经实现的流程实例的信息,与Runtime Service中获取的流程信息不同,历史信息蕴含曾经长久化存储的永恒信息,并曾经被针对查问优化==FormService==
应用Form Service能够存取启动和实现工作所需的表单数据并且依据须要来渲染表单Activiti中的流程和状态Task均能够关联业务相干的数据==IdentityService==
Identity Service提供了对Activiti零碎中的用户和组的治理性能Activiti中内置了用户以及组治理的性能,必须应用这些用户和组的信息能力获取到相应的TaskManagementService
Management Service提供了对Activiti流程引擎的治理和保护性能这些性能不在工作流驱动的应用程序中应用,次要用于 Activiti 零碎的日常保护外围业务对象:
org.activiti.engine.impl.persistence.entity包下的类,包含Task,ProcessInstance,Execution等依据不同职责实现相应接口的办法(如须要长久化则继承PersistentObject接口),与传统的实体类不同
Activiti组件==Activiti上下文组件Context:== 用来保留生命周期比拟长,全局性的信息,相似Application.次要包含如下三类:
CommandContext: 命令上下文-保留每个命令必要的资源,如长久化须要的sessionProcessEngineConfigurationImpl: 流程引擎相干配置信息-整个引擎全局的配置信息.如数据源DataSource等.该对象为单例,在流程引擎创立的时候初始化ExecutionContext: 持有ExecutionEntity对象==长久化组件:==
Activiti应用mybatis作OR映射,并在此基础上减少设计了本人的长久化框架在流程引擎创立时初始化,顶层接口Session,SessionFactorySession有两个实现类:
DbSqlSession: 负责sql表达式的执行AbstractManager: 负责对象的长久化操作SessionFactory有两个实现类:
DbSqlSessionFactory: 负责DbSqlSession相干操作GenericManagerFactory: 负责AbstractManager相干操作==Event-Listener组件:==
Activiti容许客户代码染指流程执行,提供了事件监听组件监听的事件类型:
TaskListenerJavaDelegateExpressionExecutionListenerProcessEngineConfigurationImpl持有DelegateInterceptor的某个实例,不便调用handleInvocation==Cache组件==
DbSqlSession中有cache的实现Activiti基于List和Map来做缓存:如查问时先查缓存,没有则间接查问并放入缓存==异步执行组件==
Activiti能够执行工作,JobExecutor为其外围类,JobExecutor蕴含三个次要属性:
...