起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11464|回复: 8

动态工作流的另一种实现方式

  [复制链接]

37

主题

713

帖子

3310

积分

内部用户

积分
3310
发表于 2013-3-11 17:53:24 | 显示全部楼层 |阅读模式
本帖最后由 jholy 于 2013-3-11 17:57 编辑

    在动态工作流案例里,实现了表单和流程的分开设计、动态关联。在案例讲解的最后,我们提到多个表单共用多个工作流,必须解决动作引用的问题。即每个工作流都需要包含所有表单的动作,否则表单运行在工作流环境中时,会出现当前activity没有表单需要的动作的错误。
    但是对于M个表单、N个工作流,这里的引用关系是很复杂的(M * N),我们在视频里给出了一个解决方案:
        1、所有表单用到的动作都设置为全局动作
        2、用一个公共的模块,包含所有表单的动作模块
        3、每个工作流模块引用上面的公共模块,完成对所有表单动作的引用
    上面的这个方案确实解决了动作引用的问题,但是这个方案在实施中还是有一定的复杂度。而且,所有的动作都是全局动作,每个工作流包含表单的所有动作,从模型设计的角度也有不合理性。


    下面我们换用另一种解决方案(在原案例基础上):
        1、动作不设置为全局动作,表单的process要包含自身的动作

            /BIZ/demo/process/process/dynamicFlow_LeaveApply/dynamicFlow_LeaveApplyProcess.process.m
            在动作设置中引用表单自身需要的三个标准动作

        2、从两个工作流模块的配置文件中去除对action模块的引用

            /BIZ/demo/process/process/dynamicFlow1/model.config.xml
            /BIZ/demo/process/process/dynamicFlow2/model.config.xml
            去掉引用/demo/process/logic/action
        3、上面两步已经去掉了工作流,这时如果运行案例,在第二个环节会出现动作不存在的错误,现在我们修改.w,来解决这个问题:

         var mainActivity = {};
         // 设置bizData的动作上下文
         mainActivity.setDataContext = function(data) {
            data.process = "/demo/process/process/dynamicFlow_LeaveApply/dynamicFlow_LeaveApplyProcess";        
            data.activity = "mainActivity";
         };


         mainActivity.model1ModelConstructDone = function(event){
             var dLeaveApply = justep.xbl("dLeaveApply");        
             var dFlows = justep.xbl("dFlows");

             // 设置本页面的数据上下文        
             mainActivity.setDataContext(dLeaveApply);        
             mainActivity.setDataContext(dFlows);


             // 数据初始化后,判断是否有任务环境      
             if (justep.Context.getTask()) {               
                // 有任务则刷新               
                dLeaveApply.refreshData();        
             } else {               
                // 无任务则新建               
                dLeaveApply.newData();        
             }        
             dLeaveApply.setState(dLeaveApply.getID(), justep.XData.STATE.EDIT);
         };

     红色是新增的代码,用来设置当前页面数据集的动作上下文。这样,页面运行时,数据保存用的上下文是表单自身的process和activity,而流程用的是工作流的process和activity。这种解决方案,表单和工作流的各自独立性更强,开发和实施都简化了。

29

主题

118

帖子

282

积分

中级会员

Rank: 3Rank: 3

积分
282
QQ
发表于 2013-6-19 23:33:10 | 显示全部楼层

动态工作流程疑问????

本帖最后由 beer.li 于 2013-6-19 23:55 编辑

你好:
需求:材料采购申请实现动态工作流程,流程和表单一对一:即采购申请自身的流程与采购申请表单【列表详细(Portal)】一 一对应。
方法:
1、在【采购申请(epm/epm/process/MatBuyPay/matBuyPayProcess.process.m)】引用自身的三个标准动作。请见附件:MatBuyPay(process).rar
2、通过【列表明细(Portal)】生成了mainActivity.w,mainActivity.js和mainActivityDetail.w,mainActivityDetail.js。请见附件:MatBuyPay(UI).rar
3、在明细页面中编写如下.js:
var mainActivityDetail = {};
mainActivityDetail.setDataContext = function(data) {
    data.process = "/epm/epm/process/MatBuyApp/matBuyAppProcess";        
    data.activity = "mainActivityDetail";
};

mainActivityDetail.model1ModelConstructDone = function(event){
    var detailData = justep.xbl("detailData");        
    var dFlows = justep.xbl("dFlows");
    // 设置本页面的数据上下文        
    mainActivityDetail.setDataContext(detailData);        
    mainActivityDetail.setDataContext(dFlows);
    // 数据初始化后,判断是否有任务环境      
    if (justep.Context.getTask()) {               
        // 有任务则刷新               
        detailData.refreshData();        
    } else {               
        // 无任务则新建               
        detailData.newData();        
    }        
    detailData.setState(detailData.getID(), justep.XData.STATE.EDIT);        
};

4、问题如下:
A、在列表页面点击【新增】时,前台报"Cannot set property 'process' of null"错误
B、后台错误请见附件:AAAA.rar

请指点,谢谢。这个问题困扰我太长时间,如能解决万分感激!
因为另一种【动态工作流】实现方法,实施期间确实很麻烦。


AAAA.rar

1.27 KB, 下载次数: 1638

MatBuyApp(UI).rar

5.66 KB, 下载次数: 942

MatBuyPay(process).rar

737 Bytes, 下载次数: 1677

4

主题

1579

帖子

2706

积分

内部用户

积分
2706
发表于 2013-6-20 13:36:18 | 显示全部楼层
mainActivityDetail.setDataContext = function(data) {
    data.process = "/epm/epm/process/MatBuyApp/matBuyAppProcess";        
    data.activity = "mainActivityDetail";
};

你的biz层没有mainActivityDetail定义

41

主题

216

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
QQ
发表于 2013-7-24 17:18:19 | 显示全部楼层
学习
一二三四五,上山打老虎

40

主题

196

帖子

514

积分

高级会员

Rank: 4

积分
514
QQ
发表于 2013-9-3 16:37:08 | 显示全部楼层
急求好心人解答,我按照另一种解决方案解决不啊,还是报找不到动作的问题。
我怀念的是什么也不说!

37

主题

713

帖子

3310

积分

内部用户

积分
3310
 楼主| 发表于 2013-9-3 17:10:06 | 显示全部楼层
错误是什么,确认第一步

40

主题

196

帖子

514

积分

高级会员

Rank: 4

积分
514
QQ
发表于 2013-9-3 18:05:40 | 显示全部楼层
jholy 发表于 2013-9-3 17:10
错误是什么,确认第一步

2013-09-03 17:53:04 excute Action error:<?xml version="1.0" encoding="UTF-8"?>
<action direct-execute="false" process="/OA/doc/process/sendDocProcess3/sendDocProcess3Process" activity="businessActivity1" action-flag="__action_0__" executor="/D92B6374F21F4EBDAB0017F392000B33.ogn/FFA1C25D8CB240788FB9AF21B5A9A1AE.dpt/0F5E6250A3BB4A339B5025BE5D35CFE0@FFA1C25D8CB240788FB9AF21B5A9A1AE.psm" execute-context="" name="checkTitleAction"><parameters xmlns:xbiz="http://www.justep.com/xbiz#"><parameter name="fTitle"><xbiz:simple type="http://www.w3.org/2001/XMLSchema#String"><![CDATA[12121212]]></xbiz:simple></parameter><parameter name="fDocType"><xbiz:simple type="http://www.w3.org/2001/XMLSchema#String"><![CDATA[OA_DC_SendDocPaper]]></xbiz:simple></parameter><parameter name="rowid"><xbiz:simple type="http://www.w3.org/2001/XMLSchema#String"><![CDATA[7001CC74519D42B09104F127AB61F250]]></xbiz:simple></parameter></parameters></action>
com.justep.model.exception.ModelException: com.justep.model.exception.ModelException: process(/OA/doc/process/sendDocProcess3/sendDocProcess3Process), activity(businessActivity1)中不存在action(checkTitleAction)不能为空!
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:595)
Caused by: com.justep.model.exception.ModelException: process(/OA/doc/process/sendDocProcess3/sendDocProcess3Process), activity(businessActivity1)中不存在action(checkTitleAction)不能为空!
        at com.justep.util.Utils.checkNotNull(Unknown Source)
        at com.justep.model.impl.ActivityImpl.getAction(Unknown Source)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        ... 21 more
我怀念的是什么也不说!

37

主题

713

帖子

3310

积分

内部用户

积分
3310
 楼主| 发表于 2013-9-4 09:12:11 | 显示全部楼层
搜索“checkTitleAction”,找到调用的点,把动作调用时的process和activity改成页面本身的,以后类似问题以此类推

171

主题

481

帖子

2394

积分

金牌会员

Rank: 6Rank: 6

积分
2394
QQ
发表于 2018-4-8 09:51:24 | 显示全部楼层
  var dFlows = justep.xbl("dFlows");

这个是什么控件的?
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-21 17:54 , Processed in 0.058410 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表