JBPM4.3流程跟踪(Extjs iframe实现…

核心代码如下: 我们需要的参数是流程实例ID instanceId  需要在从前台传入后台.

 

 

  以下代码是获取当前活动的 Activity ,具体实现功能可参考源代码。ActivityCoordinates为Jbpm源代码中   的接口,其中获取到的数据 x,y,width,height 来锁定当前节点的位置以及大小。 常有业务有需要,可以拓   展此接口。更改List 泛型。

  

  public static Result renderProcessDiagram(String instanceID){

ProcessEngine processEngine= WorkFlowDeploy.getInstance().processEngine;

ExecutionService service = processEngine.getExecutionService();

RepositoryService repositoryService = processEngine

.getRepositoryService();

Set<String> set = service.findProcessInstanceById(instanceID)

.findActiveActivityNames();

List<ActivityCoordinates> list = new LinkedList<ActivityCoordinates>();

ProcessInstance processInstance = service

.findProcessInstanceById(instanceID);

String processDefinitionId = processInstance.getProcessDefinitionId();

for (String str : set) {

ActivityCoordinates activityCoordinates = repositoryService

.getActivityCoordinates(processDefinitionId, str);

list.add(activityCoordinates);

}

 

return ok(renderProcessDiagram.render(instanceID, list));

 

}


  图片以流的形式返回客户端。切记:picname 为Jbpm自动生成的图片,如果美工修改,不可改变task的位置

     public static Result getProcessDiagram(String instanceID){

 

ProcessEngine processEngine= WorkFlowDeploy.getInstance().processEngine;

ExecutionService service = processEngine.getExecutionService();

ProcessInstance processInstance = service

.findProcessInstanceById(instanceID);

String processDefinitionId = processInstance.getProcessDefinitionId();

RepositoryService repositoryService = processEngine

.getRepositoryService();

ProcessDefinition processDefinition = repositoryService

.createProcessDefinitionQuery()

.processDefinitionId(processDefinitionId).uniqueResult();

InputStream is = repositoryService.getResourceAsStream(

processDefinition.getDeploymentId(), "picname.png");

 

return ok(is);

}


前台页面,前台使用的是scala, jsp同理。修改一下语法即可

 

@(instanceID:String, coordinates:List[org.jbpm.api.model.ActivityCoordinates])

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

<script>


   Ext.create('Ext.tip.ToolTip', {

   target: '1',

   html: 'aaa'

});


</script>

</head>

<body>

    <img alt="JPDL" src="@picpath.getProcessDiagram(instanceID)" style="position: absolute;left: 0px;top: 0px;">

    @for(rect <- coordinates) {

       <div id="1" data-description="test text" style="position: absolute; left: @{rect.getX()}px; top: @{rect.getY()}px; width: @{rect.getWidth()}px; height: @{rect.getHeight()}px; border: 2px red solid;"></div>

    }

</body>

</html>


用extjs 实现对scala 的嵌入,  xtype : "component",  

 src 是 xx.autoEl.src ="/path/renderProcessDiagram/"+instanceID; 需要动态实现

      

 

 items : [{

                        xtype : "component",

                        itemId : 'ifram',

                        width : 690,

                        height : 200,

                        margin : '10 0 10 10',

                        autoEl : {

                            tag : "iframe",

                            src : ""

                        }

                    }]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值