已经可以比较好的运行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中的话也只要参考这个思路,在当前节点位置显示一个高亮的框框就可以了!
转自:http://www.blogjava.net/huanzhugege/archive/2007/11/19/161678.html
分享到:
相关推荐
这通常通过BPMN2(Business Process Model and Notation)标准来完成,jbpm支持通过图形化工具(如Eclipse BPMN2插件)进行建模。流程定义文件(.bpmn2)需要部署到jbpm服务中,以便实例化和执行。 2. **启动流程...
它提供了强大的流程建模、执行和监控能力,支持BPMN 2.0标准,使得业务流程可以被直观地以图形方式设计和理解。jbpm5不仅是一个工作流引擎,还包括了一个全面的工作流服务套件,如任务管理、事件处理、规则集成等。 ...
jbpm4支持导出流程定义为BPMN(Business Process Modeling Notation)标准格式,然后使用工具如jBPM Designer或者在线工具将其转化为图形化展示,方便开发者和业务人员理解和修改流程。按照该文件的指示,可以更好地...
这通常通过使用Business Process Definition Language (BPMN)来完成,它可以图形化地表示流程的各个节点和流转规则。在JBoss JBPM4中,我们可以使用jbpm-designer工具来设计流程图,然后将其导出为XML格式的.bpel...
2. 图形化建模:通过Business Process Definition (BPD)编辑器,用户可以用图形化方式设计流程,使得非技术人员也能理解流程结构。 3. 任务管理:jbpm4.3内置了任务服务,用于管理任务的分配、启动、完成和监控,...
在这个“jbpm4.4流程图”中,我们关注的是如何通过图形化的方式来理解和操作这些流程。 流程图在jbpm中扮演着至关重要的角色,它们提供了一个直观的方式来描绘业务流程的各个步骤和决策点。`subjbpm.png`可能是一个...
1. 设计流程模型:使用JBPMSuite提供的GPD(Graphical Process Designer)工具,可以图形化设计流程模型,包括任务节点、决策节点、事件节点等,以及它们之间的流转关系。 2. 流程定义文件(.bpmn):完成设计后,...
1. **流程建模**:JBPM支持BPMN 2.0标准,使得流程设计者可以通过图形化界面创建复杂的业务流程模型。BPMN(Business Process Modeling Notation)是一种国际公认的过程建模语言,可以清晰地表达各种业务流程,包括...
jbpm5相较于jbpm4有显著提升,例如支持bpmn2.0标准,提供了更强大的图形化建模工具,以及更完善的API和事件处理。手册中可能包含如何使用jbpm5的工具集(如Guvnor和Workbench)、部署流程、管理任务、监控运行时状态...
5. **监控和管理**:jbpm提供了一个Web管理控制台,用于监控流程实例的状态、查看流程图、跟踪历史记录等。这有助于分析流程执行情况,优化流程设计。 6. **集成能力**:jbpm能够与其他系统如CRM、ERP集成,实现跨...
JBPM Web流程设计器基于JavaScript和ExtJS库构建,提供了一个直观的图形化界面,用户无需编写代码就能构建复杂的业务流程。它的设计思路类似于Eclipse中的JBPM插件,但更倾向于Web应用的灵活性和易用性。这个工具...
jBPM图形化流程设计器是Eclipse插件,用于可视化创建业务流程。其设计目标是支持业务分析师和技术开发人员,确保业务流程模型可以无缝转换为实际应用。插件支持本地更新或直接解压至Eclipse主目录进行安装。 #### ...
1.3 jBPM图形化流程设计器 jBPM提供了一个Eclipse插件形式的图形化流程设计器,该设计器支持业务分析师和技术开发者,使得业务流程建模和实现能够顺畅衔接。设计器可通过本地更新或Eclipse的标准软件更新机制进行...
jBPM提供了一个图形化的工作流设计器,使得开发者可以通过拖拽的方式来创建流程定义,极大地简化了流程设计过程。此外,jBPM还提供了命令行工具和API,方便开发者进行流程部署、实例管理和监控。 **四、jBPM集成** ...
JBPM图形化流程设计器是一款基于Eclipse的插件,旨在简化业务流程的设计过程。该工具支持业务分析师和技术开发人员共同协作,确保业务流程模型能够平滑过渡到实际实现阶段。 - **安装方式**:可通过Eclipse的标准...
使用JBPM4.4,开发者可以设计复杂的审批流程,例如请假申请、报销审批等,通过图形化的流程设计器(Business Process Designer)创建流程模型。流程中的每个步骤可以关联到一个任务,任务可以分配给不同的角色或用户...
1. **流程建模**:JBPM支持BPMN 2.0(Business Process Model and Notation)标准,这是一种图形化的建模语言,用于描述企业的业务流程。通过BPMN,开发者可以清晰地定义各种流程元素,如任务、事件、网关等,并表达...
基于Eclipse和基于Web的编辑器,用于支持业务流程的图形化创建(拖放)。 基于JPA / JTA的可插拔持久性和事务。 基于WS-HumanTask的可插拔人工任务服务,用于包含需要由人类执行者执行的任务。 管理控制台支持流程...
jbpm提供了一个全面的框架,包括工作流程引擎、规则集成、事件处理、任务管理和监控工具,帮助开发者和企业实现流程自动化。 1. **jbpm核心概念**: - **流程定义**:使用BPMN(Business Process Modeling ...