在一个公司业务中,每一个业务的开始和结束,都可以理解成为一个工作流。例如公司请假的基本流程。,,如图所示,员工先提出请假申请,提交该申请给直属领导审批,直属领导审批后,再提交给人事部门审批,审批完成后,通知提出申请的员工,即请假流程结束。整个步骤按照正常工作方式一步步完成,这就是一个简单而又完整的工作流;工作流可以理解为从开始节点发起流程,然后经过其中多个节点,完成动作,最后到结束节点的整个过程。,在没有工作流引擎之前,为了实现上述的流程控制,开发人员最常用的做法是采用状态值跟踪流程的状态变化,假设初始值为0,每一个流程的流转,状态值+1,然后给出相应的处理逻辑。可以看出工作的流程和业务高度耦合,当流程发生变化时,我们的业务代码也要做出同等的调整。,如果有一个工具帮助我们管理工作流,当业务流程变化后,程序不需要发生变化,最终将会让我们的开发能力和业务能力大幅提升。于是乎,工作流引擎应运而生!,,activiti.cfg.xml:,Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数,核心类:,ProcessEngine: 流程引擎的抽象,可以通过此类获取需要的所有服务,服务类:,组件,Activiti使用mybatis作OR映射,并在此基础上增加设计了自己的持久化框架在流程引擎创建时初始化,顶层接口Session,SessionFactorySession有两个实现类:DbSqlSession: 负责sql表达式的执行AbstractManager: 负责对象的持久化操作SessionFactory有两个实现类:DbSqlSessionFactory: 负责DbSqlSession相关操作GenericManagerFactory: 负责AbstractManager相关操作,Activiti允许客户代码介入流程执行,提供了事件监听组件监听的事件类型:TaskListener、JavaDelegate、Expression、ExecutionListener、ProcessEngineConfigurationImpl持有DelegateInterceptor的某个实例,方便调用handleInvocation,DbSqlSession中有cache的实现Activiti基于List和Map来做缓存:如查询时先查缓存,没有则直接查询并放入缓存,Activiti可以执行任务,JobExecutor为其核心类,JobExecutor包含三个主要属性:JobAcquisitionThread、BlockingQueue、ThreadPoolExecutor,方法ProcessEngines在引擎启动时调用JobExecutor.start,JobAcquisitionThread 线程即开始工作,其run方法不断循环执行AcquiredJobs中的job,执行一次后线程等待一定时间直到超时或者JobExecutor.jobWasAdded方法,因为有新任务而被调用。,用来保存生命周期比较长,全局性的信息,类似Application.主要包括如下三类:CommandContext: 命令上下文-保存每个命令必要的资源,如持久化需要的sessionProcessEngineConfigurationImpl: 流程引擎相关配置信息-整个引擎全局的配置信息.如数据源DataSource等.该对象为单例,在流程引擎创建的时候初始化ExecutionContext: 持有ExecutionEntity对象,资源库流程规则表说明:,运行时数据库表说明:,组织结构表说明:,BPM(Business Process Management),即业务流程管理,是一种规范化的构造端到端的业务流程,以持续的提高组织业务效率。常见商业管理教育如EMBA、MBA等均将BPM包含在内。BPMN(Business Process Model AndNotation)即业务流程模型和符号,是一套标准的业务流程建模符号,使用 BPMN 提供的符号可以创建业务流程。Activiti 就是使用 BPMN 进行流程建模、流程执行管理的。BPMN2.0 是业务流程建模符号 2.0 的缩写,它由 Business Process Management Initiative 这个非营利协会创建并不断发展。BPMN2.0 是使用一些符号来明确业务流程设计流程图的一套符号规范,能增进业务建模时的沟通效率。目前 BPMN2.0 是最新的版本,它用于在 BPM 上下文中进行布局和可视化的沟通,BPMN2.0基本符号介绍,简要列表如下:,,,,,,,,打开该文件,右键选中如图:,,最终会生成xml文件:,, 通过读取png和bmnp获取请假流程:,,1、关键业务流程: 订单、报价处理、合同审核、客户电话处理、供应链管理等,2、行政管理类:出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报周报等,3、人事管理类: 员工培训安排、绩效考评、职位变动处理、员工档案信息管理等。,4、财务相关类: 付款请求、应收款处理、日常报销处理、出差报销、预算和计划申请等。,5、客户服务类: 客户信息管理、客户投诉、请求处理、售后服务管理等。,从公司讲,工作流系统规范了公司的业务流程,优化了企业内部的管理,提高了团队间地协作效率,能够帮助企业向知识型企业转变。,作为技术开发人员,Activiti在小项目中基于串行并行流转能够基本满足业务和开发的需求;但是Activiti对于技术的要求门槛相对较高,二次开发难度大,需要技术人员不断提升和学习,在实战中研发出具有极高价值的工作流系统。,
© 版权声明
文章版权归作者所有,未经允许请勿转载。