已经可以比较好的运行JBPM了,但是如果能以图形化的方式显示工作流,并且把当前节点高亮显示,这样可用性就更好了,用户可以很轻松的看到当前流程到哪个节点了。
我发现JBPM的starters-kit的例子中就有类似的效果,所以决定分析一下它是怎么实现的。
打开网页,浏览到有显示当前工作流节点的页面,查看到此页面的地址为task.jsp,发现其中的核心代码如下:
<jbpm:processimage task="${taskBean.taskInstanceId}"/>
这里使用了JBPM提供的jbpm:processimage标签,此标签定义在jbpm.tld中,这个Tag的类为org.jbpm.webapp.tag.ProcessImageTag。所以只要使用这个标签我们就可以很轻松的在Web页面中显示图形化的工作流了。
那么如果是在Swing、SWT等非Web界面中也想显示这种效果怎么办呢?那么让我们来分析一下ProcessImageTag类。
private void retrieveByteArrays() {
try {
FileDefinition fileDefinition = processDefinition.getFileDefinition();
gpdBytes = fileDefinition.getBytes("gpd.xml");
imageBytes = fileDefinition.getBytes("processimage.jpg");
} catch (Exception e) {
e.printStackTrace();
}
}
gpd.xml中记录的是节点的位置关系,processimage.jpg是图形化的图片(只是基图,没有高亮显示当前节点),这两个文件是JBPM的Eclipse插件自动生成的。
得到流程实例当前节点的方法:
private void initialize() {
JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
if (this.taskInstanceId > 0) {
TaskInstance taskInstance = jbpmContext.getTaskMgmtSession().loadTaskInstance(taskInstanceId);
currentToken = taskInstance.getToken();
}
else
{
if (this.tokenInstanceId > 0)
currentToken = jbpmContext.getGraphSession().loadToken(this.tokenInstanceId);
}
processDefinition = currentToken.getProcessInstance().getProcessDefinition();
}
从currentToken中可以得到当前节点在显示的时候的长度、宽度、横纵坐标等值。得到的方式如下:
private int[] extractBoxConstraint(Element root) {
int[] result = new int[4];
String nodeName = currentToken.getNode().getName();
XPath xPath = new DefaultXPath("//node[@name='" + nodeName + "']");
Element node = (Element) xPath.selectSingleNode(root);
result[0] = Integer.valueOf(node.attribute("x").getValue()).intValue();
result[1] = Integer.valueOf(node.attribute("y").getValue()).intValue();
result[2] = Integer.valueOf(node.attribute("width").getValue()).intValue();
result[3] = Integer.valueOf(node.attribute("height").getValue()).intValue();
return result;
}
这样用<div/>标签就可以将当前节点框上一个红色的框框了:
jspOut.println("<div style='position:relative; background-image:url(" + imageLink + "); width: " + imageDimension[0] + "px; height: " + imageDimension[1] + "px;'>");
//详细代码参考:writeTable方法
原来高亮显示是在原有的图片上叠加一个高亮的框框实现的。所以如果要显示在Swing、SWT中的话也只要参考这个思路,在当前节点位置显示一个高亮的框框就可以了!
分享到:
相关推荐
这通常通过BPMN2(Business Process Model and Notation)标准来完成,jbpm支持通过图形化工具(如Eclipse BPMN2插件)进行建模。流程定义文件(.bpmn2)需要部署到jbpm服务中,以便实例化和执行。 2. **启动流程...
jbpm5相较于jbpm4有显著提升,例如支持bpmn2.0标准,提供了更强大的图形化建模工具,以及更完善的API和事件处理。手册中可能包含如何使用jbpm5的工具集(如Guvnor和Workbench)、部署流程、管理任务、监控运行时状态...
它提供了强大的流程建模、执行和监控能力,支持BPMN 2.0标准,使得业务流程可以被直观地以图形方式设计和理解。jbpm5不仅是一个工作流引擎,还包括了一个全面的工作流服务套件,如任务管理、事件处理、规则集成等。 ...
1. 设计流程模型:使用JBPMSuite提供的GPD(Graphical Process Designer)工具,可以图形化设计流程模型,包括任务节点、决策节点、事件节点等,以及它们之间的流转关系。 2. 流程定义文件(.bpmn):完成设计后,...
1. **流程建模**:使用 BPMN(Business Process Model and Notation)标准,允许开发者通过图形化的方式定义流程,使得业务人员和开发人员可以更好地理解和协作。 2. **规则集成**:jBpm 集成了规则引擎,如 Drools...
1.3 jBPM图形化流程设计器 jBPM提供了一个Eclipse插件形式的图形化流程设计器,该设计器支持业务分析师和技术开发者,使得业务流程建模和实现能够顺畅衔接。设计器可通过本地更新或Eclipse的标准软件更新机制进行...
2. **流程定义**:jBPM支持使用BPMN 2.0标准进行流程建模,这是一种图形化的业务流程建模语言,使得业务人员和开发者能共同理解和创建流程。 3. **流程执行**:jBPM4.4提供了一个流程引擎,用于解析流程定义并执行...
5. **IDE集成**:jbPM可以与Eclipse、IntelliJ IDEA等IDE集成,安装对应的插件如jBPM Developer插件,便于图形化设计流程。 ### 二、jbPM 3.2 开发流程 1. **流程建模**:jbPM提供了一个名为Business Process ...
1. BPMN2.0:JBPM支持BPMN2.0标准,该标准提供了一套图形化的符号和语法,用于描述各种业务流程,包括任务、决策、事件等。 2. Eclipse插件:JBPM提供了Eclipse集成开发环境的插件,方便开发者进行图形化建模,快速...
9. **监控与调试**:jbpm提供了图形化的监控工具,允许管理员查看流程实例的实时状态,跟踪流程执行过程,以便于调试和优化。 10. **规则引擎**:jbpm集成了Drools规则引擎,使得流程可以根据预定义的业务规则动态...
学习和掌握jbpm,你需要理解BPMN(Business Process Modeling Notation)标准,它是用来绘制和表达业务流程的图形化语言。此外,你还需要熟悉Java编程,尤其是Spring框架,因为jbpm经常与Spring结合使用以提供依赖...
在jbpm教程中,你将学习到如何使用jbpm的工作流设计器,它提供了一个图形化的界面,使得非技术人员也能轻松设计和修改流程。此外,教程还将涵盖如何创建和配置流程定义(process definition),以及如何与Java代码...
2. **流程建模**:jbpm支持使用Business Process Modeling Notation (BPMN)标准进行流程建模,这是一种图形化的表示方式,使非技术人员也能理解流程图。通过jbpm提供的建模工具,用户可以设计出符合业务需求的流程...
【JBPM文档详解】 JBPM,全称Java ...它通过图形化流程定义、灵活的数据管理和强大的API,帮助企业实现流程自动化,提高工作效率,并降低了出错的可能性。理解并熟练运用jBPM,对于优化企业的业务流程至关重要。
1. **工作流建模**:jbpm支持BPMN 2.0标准,允许用户通过图形化界面创建复杂的业务流程模型。BPMN(Business Process Modeling Notation)是一种用于描述业务流程的标准化符号语言,使得非技术人员也能理解流程图。 ...
jBPM 的核心引擎通过提供一个图形化的工作流设计器,允许用户通过可视化的方式设计和定义业务流程。 jBPM 还提供了一个基于 Eclipse 的编辑器,允许用户通过 Eclipse 平台来设计和开发业务流程。同时,jBPM 也提供...
- **使用Eclipse集成开发**:jbpm提供了Eclipse插件,便于流程模型的图形化设计。 - **编写业务逻辑**:在流程中嵌入Java代码或使用MVEL表达式实现任务的逻辑处理。 - **监听器和事件**:可以注册监听器来捕获...
在jBPM4中,通过图形化界面查看执行位置对于理解和调试复杂的流程至关重要。 jBPM4的核心特性包括流程定义、流程实例管理、任务管理、事件处理以及审计日志等功能。在这个demo中,我们将重点探讨如何利用jBPM4提供...
1. **流程建模**:jbpm支持BPMN 2.0标准,这是一种业务流程建模语言,允许用户通过图形化方式设计复杂的业务流程,包括任务、决策、事件和泳道等元素。 2. **工作流引擎**:jbpm内含强大的工作流引擎,能够自动执行...