Activiti是一个工作流引擎(框架,组件,jar包),通常activiti引擎需要嵌入到业务系统中去运行。使用专门的建模语言进行定义,业务系统按照预先定义的流程进行相关的执行,实现了业务系统的业务流程由activiti进行管理,兼少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护的成本。
说说自己怎么理解这个东西的把。其实相当于第三方jar包或者插件,和eclipse或者MyEclipse集成后,然后做一些连接设置,从而更好的管理业务流程。积极的应对用户的需求变更,让换需求来的更简单吧。根据自己的理解大致分为以下几步:
第一步:配置activiti到eclipse;
第二步:流程定义,绘制业务流程图,并且设置相关的变量;
第三步:配置activiti数据库;
第四步:流程部署,部署该bpm文件,并且保存生成png或者其他格式的文件,用于后期修改需求或者用户流程查看。
第五步:采用IO操作或者其他操作,读写该文件的变量值从而显示的展示出,工作流到哪一级别。
下面是原理图:
简单的来说一下每个部分的作用:
activiti.cfg.xml:这里面的配置其实就是流程化图像通过xml格式展现出来的,是activiti核心配置文件。为Spring配置文件,配置数据源。
ProcessEngineConfiguration:通过activiti.cfg.xml创建。
ProcessEngine:通过ProcessEngineConfiguration创建。
Service层包括:RepositoryService、TaskService、IdentityService、FormService、RuntmeService、ManagementService、HistoryService。
RepositoryService:activiti的资源管理类,用于流程部署,获取流程部署的资源。
TaskService:任务管理类,操作个人任务,组任务。
IdentityService:用户身份管理类,设置用户、组(角色)、用户和组关系。
FormService:表单管理类,实现activiti中配置表单数据。
RuntmeService:流程运行管理类,用于启动一个流程实例,操作当前运行的流程信息。
ManagementService:引擎管理类,用于activiti运行的监控,给超级管理员使用。
HistoryService:历史管理类,用于操作历史流程信息。
activiti和Spring整合后,直接从Spring容器中获取ProcessEngine及各个service:
<!-- 工作流引擎配置bean -->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 使用spring事务管理器 -->
<property name="transactionManager" ref="transactionManager" />
<!-- 数据库策略 -->
<property name="databaseSchemaUpdate" value="drop-create" />
<!-- activiti的定时任务关闭 -->
<property name="jobExecutorActivate" value="false" />
</bean>
<!-- 流程引擎 -->
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
<property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!-- 资源服务service -->
<bean id="repositoryService" factory-bean="processEngine"
factory-method="getRepositoryService" />
<!-- 流程运行service -->
<bean id="runtimeService" factory-bean="processEngine"
factory-method="getRuntimeService" />
<!-- 任务管理service -->
<bean id="taskService" factory-bean="processEngine"
factory-method="getTaskService" />
<!-- 历史管理service -->
<bean id="historyService" factory-bean="processEngine"
factory-method="getHistoryService" />
<!-- 用户管理service -->
<bean id="identityService" factory-bean="processEngine"
factory-method="getIdentityService" />
<!-- 引擎管理service -->
<bean id="managementService" factory-bean="processEngine"
factory-method="getManagementService" />
创建方式:
1、通过ProcessEngine创建service;
2、调用ProcessEngine.getXXX方法获取service。(如果activiti和Spring整合后,可以直接从Spring中获取所需要的service)