欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

制作bpmn html,BPMN 2.0规范详解

发布时间:2024/4/13 编程问答 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 制作bpmn html,BPMN 2.0规范详解 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

3.10. 完全的实例(包括控制台任务表单)

前提条件:为了运行实例,我们假设 已经在JBoss server中安装了jBPM控制台。如果没有, 请先执行'demo.setup.jboss'安装脚本。

我们实现的业务流程实现起来像下面这样:

你可能已经看过这个例子了,因为我们也在发布包中的 实例中使用jPDL实现过它了。

业务流程很简单:一个员工可以启动一个新流程, 申请一定时间的假期。在请求任务完成之后, 经理会在任务列表中看到审核任务。 经理可以决定批准或驳回这个申请。 根据outcome(那是外向顺序流上的小菱形 - 这意味着在顺序流上有条件表达式), 会发送一个驳回信息或者流程结束。注意,实际上我们这里使用了简写: 不是在'verify request'任务的外向顺序流上设置表达式, 我们可以在用户任务之后使用一个唯一网关来控制流程的流向。 也要注意,因为我们还没有实现泳道(可能在下一个版本会实现), 所以很难看到谁在业务流程中。

流程的XML版本看起来像下面这样:

sourceRef="start" targetRef="requestVacation" />

implementation="other">

user

org/jbpm/examples/bpmn/usertask/taskform/request_vacation.ftl

name="fromRequestVacationToVerifyRequest" sourceRef="requestVacation"

targetRef="verifyRequest" />

implementation="other">

manager

org/jbpm/examples/bpmn/usertask/taskform/verify_request.ftl

sourceRef="verifyRequest" targetRef="theEnd">

${verificationResult == 'OK'}

name="fromVerifyRequestToSendRejectionMessage" sourceRef="verifyRequest"

targetRef="sendRejectionMessage">

${verificationResult == 'Not OK'}

scriptLanguage="bsh">

name="fromSendRejectionMessageToEnd" sourceRef="sendRejectionMessage"

targetRef="theEnd" />

注意:当你在安装demo时,自己都已经安装了。 也要注意,我们这里使用了脚本任务,为了快速的编写一些输出, 而不是发送真实的信息(图形显示了一个service task)。 也要注意,我们这里在任务分配中做了一些简略 (会在下一个版本进行修复)。

在这个实现使用的结构中覆盖了之前章节中的所有内容。 也要注意我们这里使用了任务表单功能, 这是一个自定义jBPM扩展, 可以为用户任务渲染元素。

implementation="other">

user

org/jbpm/examples/bpmn/usertask/taskform/verify_request.ftl

BPMN 2.0里任务表单的机制与jPDL里完全一样。 表单自身是一个Freemarker模板文件, 需要放在发布中。比如,这个 'verify_request.ftl' 看起来像下面这样:

Your employee, ${employee_name} would like to go on vacation

Number of days: ${number_of_days}


In case you reject, please provide a reason:

注意,流程变量可以使用 ${my_process_variable}来访问。也要注意输入控件的名称。 (比如,输入文本框,提交表单)可以用来 定义新流程变量。 比如,下面的输入文本会被保存为 流程变量'reason'。

注意这里有两个提交按钮(这是当然的,如果你看到'OK'和'Not OK'两个顺序流 从'request vacation'任务里出去了。通过点击其中一个按钮, 流程变量'verificationResult'会被保存起来。 它可以用来执行外出的顺序流:

sourceRef="verifyRequest" targetRef="theEnd">

${verificationResult == 'OK'}

流程现在可以发布了。你可以使用ant的发布任务来做这些事情(参考实例), 或者你可以指定你的jBPM配置到控制台的数据库。 为了用编程的方式发布你的流程,你需要把任务表单添加到你的发布中:NewDeployment deployment = repositoryService.createDeployment();

deployment.addResourceFromClasspath("org/jbpm/examples/bpmn/usertask/taskform/vacationrequest.bpmn.xml");

deployment.addResourceFromClasspath("org/jbpm/examples/bpmn/usertask/taskform/request_vacation.ftl");

deployment.addResourceFromClasspath("org/jbpm/examples/bpmn/usertask/taskform/verify_request.ftl");

deployment.deploy();

你现在可以嵌入(或在单独的服务器中)这个业务流程,使用熟悉的jBPM API操作。 比如,流程实例现在可以使用 key来启动(比如,BPMN 2.0的流程id):ProcessInstance pi = executionService.startProcessInstanceByKey("vacationRequestProcess");

任务列表可以这样获得:Task requestTasktask = taskService.createTaskQuery().candidate("peter").uniqueResult();

当像jBPM控制器数据库发布时,你应该看到我们的新业务流程了。

在你启动一个新流程后,一个新任务应该在员工的任务列表中了。 当点击'view'以后,任务表单会被显示出来, 在这里填写未来会在流程中使用的变量。

在任务结束之后,经理会在他的任务列表中看到新的审核任务。 他现在可以通过或驳回请假申请,基于员工的输入。

因为数据库表结构没有变化,我们只是把BPMN 2.0添加到了jBPM PVM上面, 所有已存的报表都可以用于我们的新BPMN 2.0流程中。

总结

以上是生活随笔为你收集整理的制作bpmn html,BPMN 2.0规范详解的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。