基于标签方式的工作流启动及任务执行开发说明

基于现在的系统的整合需求,本系统提供基于标签的工作流整合方式,工作流的启动及执行下一步时,均需要通过可以通过标识来处理完成。这使得基于JSP方式的流程整合变得很简单.

  • 自定义工作流启动

系统提供启动参数,只需要提交至/flow/startProcessActivity.do,提交的参数包括以下:(可以参考ProcessRunStart.js的)

  • defId: 必需,流程定义Id,即pro_definition表里的主键
  • startFlow: 必需,值为true,则表示启动流程   必填
  • destName:目标节点,当开始节点有两个以上的分支时,可以指定该值,以决定流程启动后,跳转至的目标节点,若没有指定,则默认会跳至第一个节点。
  • flowAssignId:目标节点的执行人员,其格式如:格式为:节点1:节点2|节点1执行人IDs:节点2执行IDs,其中节点IDs值格式如1,2,3,若没有指定,则以后台的节点指定的执行人员。
  • useTemplate:默认为false,表示用的是后台的在线表单保存值,若用模板表单,则设置该值为true。
  • sendMail: 默认为false,true则表示发送邮件通知相关的人员
  • sendMsg: 默认为false,true则表示发送短信通知待办人员

若调用标签,可以简化启动流程的使用方式。
start标签调用示例:

Java代码  [url=][/url]

  • <%@ taglib prefix="flow" tagdir="/WEB-INF/tags/flow"%>
  • <flow:start curUserId="1" defId="1">
  • <table cellpadding="0" cellspacing="1" border="1" >
  • <tr>
  • <td>我的业务表单</td>
  • </tr>
  • <tr>
  • <td>
  • xx:<input type="text" name="xxx"/>
  • <input type="hidden" name="afterHandler" value="axxxService.aaMethod"/>
  • <input type="hidden" name="preHandler" value="axxxService.aaMethod"/>
  • </td>
  • </tr>
  • </table>
  • </flow:start>

start标签只带两个参数, curUserId表示为当前启动的流程的Id,defId为流程定义Id,中间标着色的部分为自己的业务表单,可以在自己的业务表单中加上preHandler及afterHandler参数值,如:<input type=”hidden” name=”afterHandler” value=”xxService.xxMethod”/>

在工作流启动的时候,一般只需要指定afterHandler方法对应的参数,其值格式为xxxxService.xxMethod,若指定了该值,则表示在工作流启动后,会从Spring容器中查找xxService的Bean,并且调用其xxMethod的方法,而xxMethod的方法格式如下所示:

Integer xxMethod(FlowFlowRunInfo flowRunInfo);
FlowFlowRunInfo里面会携带流程的相关信息,如更改流程中的待办事项的名称,则可以在在该方法中调用:
ProcessRun processRun=flowRunInfo.getProcessRun();
processRun.setSubject(“xxx审批流程”);
processRunService.save(processRun);

在这里加上自己的业务变量加至流程中,可以像以下调用:
Map map=new HashMap();
map.put(“pkId”,xx.getId());
executionService.setVariables(processRun.getPiId(),map);

或像以下方式中调用:
flowRunInfo.getFlowVars().put(“pkId”,xx.getId());
xx.getId()表示取得xx实体变量中的id键值,可以在后续的流程中获取。

若要在该方法,需要获取表单中的业务方法,可以通过flowRunInfo.getRequest()获取HttpServletRequest对象。若需要获取在业务表单中自动封装的实体,可以在业务表单中用以下的方式命名,如
<input type=”text” name=”salesOrder.orderNo” value=”xxx”/>
在xxMethod方法可以把参数名以salesOrder开头的参数自动组装至salesOrder对象,则需要像以下方式调用:

Java代码  [url=][/url]

  • SalesOrder salesOrder=new SalesOrder();
  • try{
  • BeanUtil.populateEntity(flowRunInfo.getRequest(), salesOrder, "salesOrder");
  • }catch(Exception ex){
  • logger.error(ex.getMessage());
  • }
  • 自定义工作流执行下一步

流程执行下一步时,只需要把流程表单中提交至/flow/nextProcess.do,并且携带以下参数则可。

  • taskId:必需,jbpm中的任务Id
  • destName:目标节点,当开始节点有两个以上的分支时,可以指定该值,以决定流程启动后,跳转至的目标节点,若没有指定,则默认会跳至第一个节点。
  • flowAssignId:目标节点的执行人员,其格式如:格式为:节点1:节点2|节点1执行人IDs:节点2执行IDs,其中节点IDs值格式如1,2,3,若没有指定,则以后台的节点指定的执行人员。
  • useTemplate:默认为false,表示用的是后台的在线表单保存值,若用模板表单,则设置该值为true。
  • signVoteType:会签投票类型,当前节点为会签时,表示需要进行参与会签,当前用户投的会签的决定(1=同意,2=拒绝,3=弃权)
  • sendMail: 默认为false,true则表示发送邮件通知相关的人员
  • sendMsg:默认为false,true则表示发送短信通知待办人员

标签的使用以下所示:

Java代码  [url=][/url]

  • <flow:next curUserId="${params.curUserId}" taskId="${params.taskId}">
  • <table>
  • <tr>
  • <td>我的业务表单</td>
  • </tr>
  • <tr>
  • <td>
  • taskName:<input type="text" name="xxx"/>
  • </td>
  • </tr>
  • </table>
  • </flow:next>

在该标签内,也可以像start标签一样,接收preHandler参数及afterHandler方法,以方便加上在业务表单的处理方法。

3.在后台指定流程表单路径

进入某个流程后台设置,如下:

把“使用表单模板”,同时在每个节点,指定模板类型为JSP模板,并且在url指定自己的业务执行表单路径。

时间: 2024-09-29 02:04:44

基于标签方式的工作流启动及任务执行开发说明的相关文章

基于rsync方式的文件备份

rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用.本文主要讲述的是如何自架rsync服 务器,以实现文件传输.备份和镜像.相对tar和wget来说,rsync 也有其自身的优点,比如速度快.安全.高效: rsync同步模式: sync在进行同步或备份时,使用远程shell,或TCP连接远程daemon,有两种途经连接远程主机. shell模式,不需要使用配置文件,也不需要启动远端rsync.远程传输时一般使用ssh作为传输工具

XOML方式创建和启动工作流 &lt;第十篇&gt;

一.XOML使用工作流的好处 通过Xoml方式使用工作流的好处在于,它能够不重新启动程序的情况下,仅仅通过配置xoml就能够实现改变工作流,非常灵活. 创建一个WinForm程序如下: 代码如下: namespace WinForm { public partial class Form1 : Form { //定义工作流运行时Runtime容器 WorkflowRuntime workflowRuntime = new WorkflowRuntime(); public Form1() { I

【ALB技术笔记】基于多线程方式的串行通信接口数据接收案例

基于多线程方式的串行通信接口数据接收案例 广东职业技术技术学院  欧浩源 1.案例背景 在本博客的<[CC2530入门教程-06]CC2530的ADC工作原理与应用>中实现了电压数据采集的程序设计,传感器模块以每1秒发送一帧数据的形式通过串口向上位机发送电压数据.其数据帧由4个字节组成:一个帧头和一个帧尾,中间两个字节为电压数据,其格式如下: 帧头(0xAF)    电压数据高8位    电压数据低8位    帧尾(0xFA) 在篇博文中,将讲述如何通过多线程的方式,从串口接收传感器发送过来的

基于http方式搭建YUM源服务器

基于http方式搭建YUM源服务器 (2012-09-21 11:59:14) 转载▼ 标签: yum linux lnmp lamp http 分类: Linux 为了方便公司80多台Linux服务器下载.安装.升级软件包更快速,版本一致性:我们最近在IDC局域网内安装了一台yum源: 此yum源是基于http的,也可以用ftp,这里我们仅仅就http来配置:如下: 建立yum服务器,下载速度快,方便软件安装,下面操作的环境是centos 5.4 i386 32bit,采用http方式安装.

基于Petri网的工作流分析和移植

基于Petri网的工作流分析和移植 一.前言 在实际应用场景,包括PEC的订单流程从下订单到订单派送一直到订单完成都是按照一系列预先规定好的工作流策略进行的. 通常情况下如果是采用面向过程的编程方法,我们采用的方式无非就是判断当前的工作流状态以及操作步骤来选择工作流分支继续下一步,如果整个工作流从起始到结束所执行的步骤不多的话,采用此方式相当简便,但如果步骤一多起来,或者分支太多以及需要判断的或者切换的状态太多的时候,很容易出错,或者说在原有的工作流分支上新增一个操作步骤,则改起代码来会非常繁琐

基于php-fpm方式部署LAMP

前言 CentOS 7: httpd-2.4:rpm包默认编译支持了fcgi模块: php-fpm包:专用于将php运行于fpm模式: 当我们使用php-fpm方式部署LAMP时,需要使用三台服务器,一台服务器作为http服务器,一台当作php-fpm服务器,一台作为数据库服务器.当http服务器接收到客户端的请求时,会通过本地磁盘IO返回出请求中的静态请求资源,当http服务器匹配到请求数据中的动态资源后,通过fastcgi将动态资源请求转发给php-fpm服务器的9000端口,php-fpm

基于注解方式的XFire之WebService框架与SSJ架构集成案例

最近在给公司做一个基于webservice的数据提供接口,接口提供给第三方公司业务系统调用,完成数据对接.实现起来也相对简单,其实就是通过中间件服务提取内部系统授权数据组织相应的数据格式然后通过webservice的方式暴露获取数据接口给第三方应用,供其调用.要实现这样的需求每个公司的实现方式有可能不一样,根据每个公司实现中间件服务应用使用的实现语言而定.可选择的方案很多,比如如果你们公司的使用的C#的来实现,那么可选择的方案有WCF等技术方案:但是如果你们的中间件服务实现语言是java,那么实

技术实战:基于 MHA 方式实现 MySQL 的高可用(转)

转自:http://os.51cto.com/art/201307/401702_all.htm MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据.本文分享了基于 MHA 方式实现 Mysql 的高可用的技术实战,希望对您有所帮助. AD:51CTO网+ 首届中国APP创新评选大赛火热招募中…… 数据的重要性对于人们来说重要程度不说自明,在信息时代,数据有着比人们更大的力量,我们也知道最近的斯诺登事件,军事专家对于他掌握的数据给出的评价是,相当于美军十个重装

《推荐系统》基于标签的用户推荐系统

1:联系用户兴趣和物品的方式 2:标签系统的典型代表 3:用户如何打标签 4:基于标签的推荐系统 5:算法的改进 源代码查看地址:github查看 一:联系用户兴趣和物品的方式 推荐系统的目的是联系用户的兴趣和物品,这种联系方式需要依赖不同的媒介.目前流行的推荐系统基本上是通过三种方式联系用户兴趣和物品. 1:利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品,即基于item的系统过滤推荐算法(算法分析可参考:点击阅读) 2:利用用户和兴趣用户兴趣相似的其他用户,给用户推荐哪些和他们兴趣