activity5.12和activity6.0工作流,查看流程图以及动态显示任务当前执行的点 两种不同的处理方式及后台代码

 

查看流程图

Activiti5.12(写的粗糙,好久之前写的,现在编辑一下主要为了6.0版本):

查看当前活动,获取当前活动对应的坐标x,y,width,height

原理很简单,就是在前台显示一个框框,比如设置成红色,然后每个节点userTask时,框框位置改变下,框住它就完事了。OVER。

这些坐标存在于.bpmn文件中,可转换成.xml文件成查看

使用任务id查询任务对象Task task = TaskService.createTaskQuery

                                .taskId(taskId)

                                .singleResult();

  然后获取流程定义的id

String processDefinedId = task.getProcessDefinedId();

 

  再获取流程定义的实体对象(对应.bpmn文件中的数据)

ProcessInstance pi = runtimeService.createProcessInstanceQuery()

                               .processInstanceId(processInstanceId)

                               .singleResult();

 

再获取当前活动id

String activityId = pi.getActivityId();

 

根据当前活动id获取当前活动对象 ActivityImpl  

ActivityImpl activityImpl = processDefinitionEntity.findActivity(activityId);

用实体.getX()/.getY()/.getWidth/.getH eight即可获取坐标值

然后前台显示下就ok了。

 

 

 

Activiti6.0:

在6.0中org.activiti.engine.impl.pvm整个包被移除,意味不能用ActivitiImpl的方式获取活动节点了,

所有的流程定义有关的信息都可以通过BpmnModel来获得,获得 BpmnModel的方式可以通过org.activiti.engine.impl.util.ProcessDefinitionUtil来拿到。

下面就用BpmnModel的方式获取当前活动 对象的X轴,Y轴,Width,Height的值,这个可用于查看流程图的当前位置,然后加个框框高亮显示就完成了。

@Test
public void getCurrentProcessViewNode(){

    String  taskId = "30008";

    //获取服务
    TaskService taskService = processEngine.getTaskService();
    RuntimeService runtimeService = processEngine.getRuntimeService();
    RepositoryService repositoryService = processEngine.getRepositoryService();

    Task task = taskService.createTaskQuery().taskId(taskId).singleResult();

    BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());

    //获取当前活动对象
    FlowElement flowElement = bpmnModel.getFlowElement(task.getTaskDefinitionKey());

    GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowElement.getId());

    System.out.println("graphicInfo.getX() = " + graphicInfo.getX());
    System.out.println("graphicInfo.getY() = " + graphicInfo.getY());
    System.out.println("graphicInfo.getHeight() = " + graphicInfo.getHeight());
    System.out.println("graphicInfo.getWidth() = " + graphicInfo.getWidth());

}

 

 

 

你可能感兴趣的:(activiti6.0,activiti5.12)