天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
查看: 1306|回复: 8

[已解决] 通过设置审批时限跳过审批节点【Bug #10607】

[复制链接]
亨氏中国 发表于 2013-12-12 14:58:31 | 显示全部楼层 |阅读模式
本帖最后由 kimi 于 2013-12-13 08:58 编辑

目前通过用脚本设置审批时限来跳过某审批节点,脚本如下,value的输出值为JsUtil:2001-01-01 00:00:00,但无法实现跳过审批节点。此审批节点为Master_Customer\CUstomermaster流程中的CSR(Input GCode)。你可以使用我公司之前发过去的数据测试。
var value="2001-01-01 00:00:00";
var doc=getCurrentDocument();
var bpcs=doc.getChilds("BPCSRequiredData");
if (bpcs!=null)
{
       
         for (var iter=bpcs.iterator();iter.hasNext();)
        {
                var bpcsdoc=iter.next();
                var compcode=bpcsdoc.getItemValueAsString("CompCode");
                if (compcode=="13")
                {
                        value="2100-01-01 00:00:00";
                        break;
                }
        }
}
println(value);
value;
sophie 发表于 2013-12-12 15:06:23 | 显示全部楼层
您好,本地测试后给您反馈。
sophie 发表于 2013-12-12 16:34:09 | 显示全部楼层
已当bug提交研发了。
sophie 发表于 2013-12-12 17:23:34 | 显示全部楼层
您好,研发反馈,这个不是我们程序的bug,原因在于,您的CSR(Input GCode)节点设置审批时限,提交到下一节点时,您的下一节点Sales Area Manager的审批人设置是脚本设置的,然后您的
代码是调用函数库的代码,您对应调用的函数库中使用到queryBySQL(sql)的方法,而该方法中,在后台是无法getDomainid()、getApplication()的,因为此时审批时限任务是由后台管理员操作,
后台没有上下文关系,不能通过$WEB.getDomainid()方式获取企业域id 软件id。所以您对应需要在函数库中修改一下您的逻辑代码,不使用queryBySQL(sql)方法,而参考该方法的逻辑实现。
具体可参考帖子:http://teemlink.com/bbs/viewthre ... 8%CA%B1%C8%CE%CE%F1
queryBySQL(sql)方法代码如下:
  1. /**
  2. * 根据sql查询符合条件的Document,结果以Collection返回
  3. *
  4. * @param sql
  5. *            查询语句参数
  6. * @return 根据sql查询符合条件的Document,结果以Collection返回
  7. */
  8. function queryBySQL(sql) {
  9.         var process = getDocProcess($WEB.getApplication());
  10.         var dpg = process.queryBySQL(sql, $WEB.getDomainid());
  11.         if (dpg != null) {
  12.                 return dpg.datas;
  13.         } else {
  14.                 return null;
  15.         }
  16. }
复制代码
本地测试,如果把Sales Area Manager节点的审批人换成角色,而不是调用 那个#include "actionlib";函数库的话,是正常生效。所以该问题得你们自己去修改一下你们的函数逻辑脚本再尝试。
d 代码1.jpg 代码2.jpg
 楼主| 亨氏中国 发表于 2013-12-12 17:52:19 | 显示全部楼层
不明白为什么这样,在没有加入G-Code这个节点前,Sales Area Manager是可以正常获取审批人的,并没有因为"actionlib"库函数使用queryByS函QL获取不到domainid来获取不到审批人。
sophie 发表于 2013-12-12 18:02:38 | 显示全部楼层
已电话跟客户沟通了,是因为G-Code此时使用了审批时限,此时是由后台admin处理的,此时是获取不到软件id与企业域id的。目前客户在尝试。。
sophie 发表于 2013-12-12 18:24:03 | 显示全部楼层
您好,楼上提供解决方案是让你修改该函数库,且您很多地方引用到,为了减少您的风险,您可以重新创建一个函数库,该函数库就按上面的解决方案去写,然后这个审批时限的下一个节点调用该函数,即专门创建一个函数库给这个审批节点使用。
 楼主| 亨氏中国 发表于 2013-12-12 18:32:08 | 显示全部楼层
按照您的方法修改函数库中的函数后可以实现自动跳过了,谢谢!
kimi 发表于 2013-12-13 08:58:03 | 显示全部楼层
恩好的,感谢您的反馈。

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-13 10:21

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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