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规范详解相关推荐

  1. USB 之一 USB2.0 规范详解 第一部分

    注意 对于物理特性仅做简单说明 主要是针对 USB 2.0 规范的前八章.后续见 第二部分 关于USB 2.0   在USB官方网站( http://www.usb.org/ )包含了我们必需的所有的 ...

  2. USB 之二 USB2.0 规范详解 第二部分

    注意 对于物理特性仅做简单说明 主要是针对 USB 2.0 规范的第九章.第十章和第十一章.之前章节见后续见 第一部分 下面的举例报文为使用Bus Hound监听的U盘插入时的报文,报文见后文附件. ...

  3. BPMN 2.0规范详解

    2019独角兽企业重金招聘Python工程师标准>>> 转载地址:http://www.mossle.com/docs/jbpm4devguide/html/bpmn2.html 第 ...

  4. vue-cli3.0配置详解

    这次给大家带来vue-cli3.0配置详解,使用vue-cli3.0配置的注意事项有哪些,下面就是实战案例,一起来看一下. 新建项目 1 2 3 4 5 6 7 8 # 安装 npm install ...

  5. [转载]AxureRP 7.0部件详解(一)

    转载]AxureRP 7.0部件详解(一) 本文为Axure RT7.0教程,本章主要介绍menu菜单.table表格.Tree Widget 树部件三个部件,后续将持续更新...... Menu 菜 ...

  6. Ghost V8.0 使用详解 【操作说明】

    Ghost V8.0 使用详解 [操作说明] 一.分区备份 使用Ghost进行系统备份,有整个硬盘(Disk)和分区硬盘(Partition)两种方式.在菜单中点击 Local(本地)项,在右面弹出的 ...

  7. USB Type C规范详解

    USB Type C规范详解 目前USB Type C接口应用非常广泛,可以传输DP,USB,PCIE,音频等信号,已经不是纯粹的用来传输USB信号了,即USB Type C摆脱了和USB的从属关系, ...

  8. 银联8583报文规范详解

    银联8583报文规范详解 自己的理解 转载的内容 自己的理解 转载的内容 以下来自转载地址 https://www.jianshu.com/p/203ed7f632cf 一.什么是8583报文规范? ...

  9. java 注释 超链接_java_Java代码注释规范详解,代码附有注释对程序开发者来 - phpStudy...

    Java代码注释规范详解 代码附有注释对程序开发者来说非常重要,随着技术的发展,在项目开发过程中,必须要求程序员写好代码注释,这样有利于代码后续的编写和使用. 基本的要求: 1.注释形式统一 在整个应 ...

最新文章

  1. Linux多线程的同步-----信号量和互斥锁
  2. python创建空文本文件_Python干货:「文件处理整合」 创建、打开、写入和删除...
  3. 【转载】博士生的女朋友有话要说!
  4. 知识图谱应用实战案例100篇(一)-阿里巴巴超大规模知识图谱预训练实践:商品分类
  5. python中的元组操作
  6. 图像拼接1 特征提取
  7. AI算法连载03:数学基础之数值计算
  8. 科学家预测:未来100万年人类将变成半机械人类
  9. 图片中加入超链接html代码,html网页超链接代码 怎样用HTML代码在图片插入超链接...
  10. Iphone 和 Ipad 开发 区别
  11. Unity 利用射线实现弹孔效果
  12. 开课吧java广告,开课吧Java面试题:虚引用与软引用和弱引用的区别
  13. php api开发书籍,概述 · ThinkPHP API开发入门 · 看云
  14. 英语单词测试词汇量的软件,英语单词词汇量测试小程序!简直不要太准
  15. 获取执行程序的原路径(绝对路径)
  16. 华为5G手机回归,再次打破国外技术垄断,将价格推至新高度
  17. 【思前享后】区块链架构与特点
  18. [unity] build项目报错:Currently selected scripting backend (.NET)is not installed
  19. 计算机网络—网络安全
  20. sql join备忘

热门文章

  1. Swing中常用的方法
  2. zigbee 常规配置
  3. 中国软件正版化的理想模型
  4. Android用GSon处理Json数据
  5. FastAdmin 极速后台管理框架(三周年)V1.0.0.20190410_beta
  6. 如何快速压测电商网站?
  7. SPSS学习系列之SPSS Statistics(简称SPSS)是什么?
  8. 前端 CSS Framework --- NEC (网易)
  9. 微信如何解绑小程序_微信小程序该如何运营推广
  10. 如何分享文件_分布式文件存储系统如何分享文件