
1 Activiti REST模块介绍
关于Rest的介绍就免除了,主要介绍一下Activiti Rest模块的功能以及如何使用。
11 使用REST的好处
简单化:利用现有模块(activiti-restwar)代替直接API调用
标准化:各个系统根据rest模块的接口规范访问REST资源,统一处理;对于工作流平台来说此特性尤为突出
扩展性:如果官方提供的REST接口还不能满足可以继续在其基础上进行扩展以满足业务系统(平台)的需求
12 不适合使用REST的场景
业务数据与流程数据分离:就像kft-activiti-demo中普通表单的演示一样,业务数据保存在一张单独设计的表中,而不是把表单数据保存在引擎的变量表中,所以对于这样的场景中需要联合事务管理的就不能使用REST了,例如:启动流程、任务完成、业务与流程数据联合查询。
13 部署Rest模块
从511版本开始不再使用ant脚本的方式启动demo,并且把activiti-explorer和activiti-rest分离并分别提供一个war包,在wars目录可以找到它。
把activiti-restwar解压到Web服务器的应用部署目录(例如tomcat的webapps),根据实际需求修改activiti-rest/WEB-INF/classes/dbproperties里面的数据库配置后启动应用。
可以通过REST工具测试是否部署成功可以正常的提供服务,例如Chrome的插件REST
Console,或者通过Spring MVC提供的RestTemplate。
Java代码0202
List<Task02tasks02=02taskServicecreateTaskQuery()processInstanceId(procInstanceId)list();0202
然后根据当前任务获取当前流程的流程定义,然后根据流程定义获得所有的节点:02
Java代码0202
ProcessDefinitionEntity02def02=02(ProcessDefinitionEntity)02((RepositoryServiceImpl)rs)getDeployedProcessDefinition(taskgetProcessDefinitionId());02020202List<ActivityImpl02activitiList02=02defgetActivities();0202
//rs是指RepositoryService的实例0202根据任务获取当前流程执行ID,执行实例以及当前流程节点的ID:02
Java代码0202
String02excId02=02taskgetExecutionId();0202
ExecutionEntity02execution02=02(ExecutionEntity)02runtimeServicecreateExecutionQuery()executionId(excId)singleResult();0202
String02activitiId02=02executiongetActivityId();0202
然后循环activitiList 并判断出当前流程所处节点,然后得到当前节点实例,根据节点实例获取所有从当前节点出发的路径,然后根据路径获得下一个节点实例:02
Java代码0202for(ActivityImpl02activityImpl:activitiList){0202
String02id02=02activityImplgetId();0202if(activitiIdequals(id)){0202
Systemoutprintln(
"当前任务:"
+activityImplgetProperty("name"));02//输出某个节点的某种属性0202List<PvmTransition02outTransitions02=02activityImplgetOutgoingTransitions();
//获取从某个节点出来的所有线路0202for(PvmTransition02tr:outTransitions){0202
PvmActivity02ac02=02trgetDestination();02
//获取线路的终点节点0202Systemoutprintln("下一步任务任务:"
在一个流程流转的过程中,可能已经经过多个节点,或者正在停留在某个任务节点。那么我们如何直观的显示当前流程已经完成了哪些节点,或者此时当前流程流转到了哪里?那么这里就用到了activiti提供的生成器ProcessDiagramGenerator。使用它可以对流程中的节点或者连线等进行高亮标识(也就是用显著的颜色圈起来)后生成的输入流,当然也可以对流程图中各个节点的图标,字体之类进行设置。
如果默认的生成器满足不了我们的业务需求,比如我要求用户任务被标注高亮的时候颜色使用蓝色或者其他颜色,我想要中显示的字体是黑体、楷体?那么如果是这样应该怎么实现呢
自定义类继承DefaultProcessDiagramCanvas,这里 业务需求是连线标注为蓝色 所以需要重写drawConnection方法, 只需要修改 当highLighted为true时,调用thisgsetPaint()参数为连线的颜色。
2 扩展DefaultProcessDiagramGenerator,当initProcessDiagramCanvas时候,使用自定义的ProcessDiagramCanvas, 只需要修改initProcessDiagramCanvas方法中最后一行为创建我们自定义的initProcessDiagramCanvas
注意: 这里必须同时定义generateProcessDiagram方法,实现与DefaultProcessDiagramGenerator中的实现相同。如果不定义,程序依然会调用DefaultProcessDiagramGenerator中的generateProcessDiagram方法生成默认的DefaultProcessDiagramCanvas
3 使用自定义生成器进行流程运转图的生成
- 生成结果
以上就是关于如何使用Activiti Rest模块全部的内容,包括:如何使用Activiti Rest模块、ACTIVITI如何获取下一步节点求解答、activiti6.0源码剖析之使用图片生成器设置流程图高亮显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)