Activiti是一个流程引擎框架,可以轻松地在应用中集成工作流管理,使得复杂流程变得简单。Activiti-Explorer是Activiti的一个Web应用程序,提供了一种基于Web的用户界面,方便用户进行流程定义、部署、执行以及流程实例管理等操作。
一、数据源配置
在使用Activiti-Explorer之前,需要对数据源进行配置。在activiti-explorer.war/WEB-INF/classes/activiti-standalone-context.xml文件中,可以配置JNDI数据源或直接使用数据库连接信息,如下所示:
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_explorer?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"/> <property name="jdbcDriver" value="com.mysql.jdbc.Driver"/> <property name="jdbcUsername" value="root"/> <property name="jdbcPassword" value="123456"/> </bean>
在配置数据源之后,启动Activiti-Explorer时就可以根据上述配置连接数据库。
二、流程定义与部署
Activiti-Explorer支持流程的定义与部署操作。在页面上,可以使用左侧的菜单“Deployment”进行部署相关操作。用户可以上传BPMN2.0格式的流程定义文件或在页面上进行流程定义。在上传或定义完成后,用户可以通过“Process Definitions”查看当前部署的流程定义信息。
<deployment name="expense reimbursement"> <process name="expense reimbursement"> <startEvent id="start" name="提交申请"/> <userTask id="audit" name="审核"/> <exclusiveGateway id="gateway" name="审核结果"> <condition expression="${approved}"/> </exclusiveGateway> <userTask id="pay" name="支付"/> <endEvent id="end" name="完成"/> <sequenceFlow id="flow1" sourceRef="start" targetRef="audit"/> <sequenceFlow id="flow2" sourceRef="audit" targetRef="gateway"/> <sequenceFlow id="flow3" sourceRef="gateway" targetRef="pay"> <conditionExpression>${approved}</conditionExpression> </sequenceFlow> <sequenceFlow id="flow4" sourceRef="gateway" targetRef="end"> <conditionExpression>${!approved}</conditionExpression> </sequenceFlow> </process> </deployment>
上述代码为一个BPMN2.0流程定义文件的示例,定义了Expense Reimbursement的流程。
三、流程实例管理
Activiti-Explorer可以管理流程实例的启动、暂停、恢复、删除等操作。在页面上,可以使用左侧的菜单“Process Instances”进行相关操作。用户可以查看当前流程实例执行情况,包括执行状态、执行时间、执行人等信息。
<processInstance id="1" processDefinitionId="expense_reimbursement"> <variable name="applicant" value="张三"/> <variable name="amount" value="1000"/> <variable name="approved" value="true"/> <activity name="提交申请" assignee="张三" startTime="2019-12-01 10:00:00" endTime="2019-12-01 10:30:00"/> <activity name="审核" assignee="李四" startTime="2019-12-01 10:30:00" endTime="2019-12-01 11:00:00"/> <activity name="支付" assignee="王五" startTime="2019-12-01 11:00:00" endTime="2019-12-01 11:30:00"/> <activity name="完成" assignee=""/> </processInstance>
上述代码为一个流程实例示例,记录了当前实例的执行情况,包括流程变量、执行活动、执行人、开始时间、结束时间等信息。
四、历史记录查询
Activiti-Explorer可以查询流程的历史记录,包括流程定义、流程实例、任务、变量等信息。用户可以使用左侧的菜单“History”进行相关查询操作。用户可以查询指定时间段内的历史记录。
<historicProcessInstance id="1" processDefinitionId="expense_reimbursement"> <startTime>2019-12-01 10:00:00</startTime> <endTime>2019-12-01 11:30:00</endTime> <durationInMillis>5400000</durationInMillis> <processVariables> <variable name="applicant" value="张三"/> <variable name="amount" value="1000"/> <variable name="approved" value="true"/> </processVariables> </historicProcessInstance>
上述代码为一个历史记录示例,记录了流程实例的开始时间、结束时间、执行时间、流程变量等信息。
五、任务管理
Activiti-Explorer可以管理任务的认领、办理、委托、转交等操作。在页面上,可以使用左侧的菜单“Task”进行相关操作。用户可以查看当前任务及任务的执行情况,包括执行状态、执行时间、执行人等信息。
<task id="1" name="审核" assignee="李四" createTime="2019-12-01 10:30:00"> <processDefinitionId>expense_reimbursement</processDefinitionId> <processInstanceId>1</processInstanceId> <description>审核张三的报销单</description> <dueDate>2019-12-02 10:30:00</dueDate> </task>
上述代码为一个任务示例,记录了当前任务的执行情况,包括任务名称、任务描述、任务执行人、任务创建时间、任务到期时间等信息。
六、用户管理
Activiti-Explorer可以管理用户的账号、角色、组等信息。在页面上,可以使用左侧的菜单“Identity”进行相关操作。用户可以添加、修改、删除用户及用户组等信息。
<user id="1" firstName="张" lastName="三" email="zs@163.com"> <groups> <group id="2" name="审批组"/> </groups> </user>
上述代码为一个用户示例,记录了用户的基本信息及所属用户组信息。
总结
通过本篇文章的介绍,我们了解了Activiti-Explorer的主要功能及使用方法。Activiti-Explorer提供了丰富的流程定义、部署、实例、历史、任务及用户管理等功能,使得用户能够轻松地进行工作流管理。