Activiti 学习总结内容

Activiti总结内容

常用方法汇总
sequenceFlow id='test' sourceRef='' targetRef=''
serviceTask id='serviceTaskId' activiti:expression='#{beanName.method}'
自动调用beanName对应的bean的method方法
<bean id='beanName' class='com.cn.xwL.Teyst'>
这个bean还需要在ProcessEngineConfiguration中进行配置
--部署一个流程图
repositoryService.createDeploy().addClasspathResource(resourceName).deploy();
--开启一个流程
runtimeService.startProcessInstanceByKey("processId");
--获得一个流程实例也是用runtimeService
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(findTaskById(taskId).getProcessInstanceId())
.singleResult();
-- Task对象可以转化成TaskEntity
TaskEntity taskEntity = (TaskEntity) taskService.createTaskQuery().taskId(taskId).singleResult();
-- 节点ID
String activityId = taskEntity.getTaskDefinitionKey();
-- 流程定义ID
String definitionId = taskEntity.getProcessDefinitionId();
-- 取得 流程定义对象
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(taskEntity.getProcessDefinitionId());
-- 获得所有节点定义
List<ActivityImpl> activityList = processDefinition.getActivities();
-- 根据节点ID,获取对应的活动节点
ActivityImpl activityImpl = ((ProcessDefinitionImpl) processDefinition).findActivity(activityId);
-- 获得某个节点流出的顺序流信
List<PvmTransition> pvmTransitionList = activityImpl.getOutgoingTransitions();
--获得一个任务
Task task = taskService.createTaskQuery().singleResult();
--获得表单信息
StartFormData sfd = FormService.getStartFormData(processDefinitionId) ;
TaskFormData tfd = FormService.getTaskFormData(taskId) ;
--可以获得配置好的表单地址
String formKey = tfd.getFormKey();
-- 查询taskId节点发起的任务集合
List<Task> tasks = taskService.createTaskQuery().parentTaskId(taskId)
.taskDescription("jointProcess").list();
--参数集合 并完成任务
HashMap<String, Object> variables = new HashMap<String, Object>();
taskService.complete(taskId,variables);
--查询流程实例中已经完成的任务集合 按完成时间降序排序
List<HistoricActivityInstance> historicActivityInstances = historyService
.createHistoricActivityInstanceQuery().activityType("userTask")
.processInstanceId(processInstance.getId())
.activityId(activityId).finished()
.orderByHistoricActivityInstanceEndTime().desc().list();

顺序流 sequenceFlow sourceRef targetRef

分支 排他分支 带X的菱形 不带X的菱形 都可以表示排他分支

<exclusiveGateway id='exclusive'>
<parallelGateway id='fork'> 都是有两个并行分支 分别表示拆分和合并 会签就是并行分支
<parallelGateway id='join'>

<sequenceFlow id='' sourceRef='exclusive' targetRef=''>
<conditionExpression xsi:type="tFormalExpression">${input==1}</conditionExpression> input表示从上一个节点所传的参数
</sequenceFlow>

<userTask id='' activiti:assignee="user1">  assignee是直接分配给某人 而 <userTask id=='' activiti:candidateUsers='user1,user2'> 是指定user1和user2为候选人两个都可以完成任务
activiti:candidateGroups指定任务候选组
同样可以在任务上面添加任务监听器 <activiti:taskListener event='create' class='XXX'>

public class XXX implements TaskListener{
       public void notify(DelegateTask delegateTask){
              delegateTask.setAssignee("");
              delegateTask.setCandidateUsers();
       }
}

java服务任务

serviceTask (用来调用外部类) 必须实现JavaDelegate或ActivitiBehavior类
<serviceTask id='' name='' activiti:class="xx.xx.xx.XXX" 或 activiti:delegateExpression="${beanName}">

exclusiveGateway
parallelGateway

指定人和候选人有区别  指定就是叫确定某个人

public class MyBehavior implements ActivityBehavior{
       public void execute(ActivitiExecution execution){
              String varValue = (String)execution.getVariable("var");
              PvmTransition transition = execution.getActivity().findOutgoingTransition("name");
              -- 执行某个顺序流
              execution.take(transition);
       }
}


任务监听器只能适用与用户任务(userTask) <extensionElements>的标签中
<activiti:taskListener event='' class=''>
event属性必须要有 选项有 create assignment complete


子流程的所有信息都必须在subProcess标签中实现
可以通过callActiviti标签把子流程嵌入到相应的流程当中


表单数据(FormData) 分别包括 StartFormData sfd = FormService.getStartFormData()
TaskFormData tfd = FormService.getTaskFormData(taskid);

外部表单可以通过<userTask activiti:formKey='xxxx.html' 来定义
可以通过TaskFormData.getFormKey()方法来获取

历史相关对象

HistoricProcessInstance -- 流程实例历史信息
HistoricActivitiInstance -- 节点实例历史信息(包括任务实例)
HistoricTaskInstance -- 任务实例历史信息
HistoricDetails  -- 流程中所使用的变量信息

历史信息配置
<bean id='processEngineConfiguration'>
<property name='history' value='audit'/>
</bean>

猜你喜欢

转载自forlan.iteye.com/blog/2335337