`
man1900
  • 浏览: 429003 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

 
阅读更多


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



  • 自定义工作流启动

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

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



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

<%@ 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对象,则需要像以下方式调用:

SalesOrder salesOrder=new SalesOrder();
        try{
            BeanUtil.populateEntity(flowRunInfo.getRequest(), salesOrder, "salesOrder");
        }catch(Exception ex){
            logger.error(ex.getMessage());
        }

 

 

  • 自定义工作流执行下一步

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

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



标签的使用以下所示:

      

<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指定自己的业务执行表单路径。

 

更多资讯请加QQ了解3102760881

  • 大小: 71.9 KB
分享到:
评论

相关推荐

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作。 然而,由于HTML5的W3C标准规范还未制定,安卓系统中类...

    Java EE常用框架.xmind

    执行工作流--&gt;按照我们定义的工作流来执行 工作流在执行的过程中肯定会涉及到很多数据,Activiti是默认提供数据库表给我们使用的 Activiti工作流框架快速入门: 定义工作流,使用插件来把我们的流程图画...

    python入门到高级全栈工程师培训 第3期 附课件代码

    07 属主属组及基于数字的权限管理 第5章 01 上节课复习 02 文件合并与文件归档 03 文件归档与两种压缩方式 04 vim编辑器 05 系统启动流程 06 grub加密 07 bios加密 08 top命令 09 free命令 10 进程管理 第6章 01...

    测试培训教材

    基于角色和工作流的BPT模型 角色定义应该灵活、根据能力、时间资源等决定。 Automation Engineer Subject Matter Expert Workflow 业务组件模块 测试计划模块 8、测试任务定义、测试任务...

    Jspxcms网站内容管理系统 源码包 v9.0.0.zip

    (网站设置、系统设置、站点管理、模型管理、文档属性、工作流组、工作流、发布点、操作日志) 主要技术:SpringMVC3.2、Spring3.2、JPA2.0、JSP2.0、Freemarker2.3、Spring Data JPA,QueryDSL、Shiro、Lucene等。...

    J2eeFAST企业级快速开发平台-其他

    在线代码生成功能,包括核心模块如:组织机构、角色用户、菜单及按钮授权、数据权限、系统参数、内容管理、license认证,BPM工作流等。采用松耦合设计;界面无刷新,一键换肤;众多账号安全设置,密码策略;在线定时...

    JAVA上百实例源码以及开源项目

     Java语言开发的简洁实用的日期选择控件,源码文件功能说明:  [DateChooser.java] Java 日期选择控件(主体类) [public]  [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] ...

    JAVA上百实例源码以及开源项目源代码

    Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择 Java语言开发的简洁实用的日期选择控件,源码文件功能说明: [DateChooser.java] Java 日期选择控件(主体类) [public] ...

    超级有影响力霸气的Java面试题大全文档

    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...

    java 面试题 总结

    assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为...

    javaSE代码实例

    4.2.4 详细执行流程 49 4.3 while循环语句 50 4.4 do-while循环语句 52 4.5 for循环语句 53 4.5.1 基本语法 53 4.5.2 声明的三大组成部分 54 4.5.3 复杂的for循环案例 55 4.5.4 用for实现其他循环 ...

Global site tag (gtag.js) - Google Analytics