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

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

脚本如何实现子流程启动项数【Feature #10264】

[复制链接]
武汉测绘 发表于 2013-11-20 09:32:11 | 显示全部楼层 |阅读模式
本帖最后由 sophie 于 2013-12-1 13:01 编辑

现在启动子流程时,有个分组的方式来选择每个组中的成员,操作起来不方便。
能否直接选择多个人后,就启动多个子流程,这样的iscript如何写。
sophie 发表于 2013-11-20 09:46:17 | 显示全部楼层
您好,那您可以在表单中放一个用户选择框,选择用户,在子流程中通过iscript启动方式启动实例,iscript获取您的用户用户框的用户,计算出该用户选择框选择的用户个数,返回用户个数,这样,子流程就会根据您所选择多少个人就启动多少个实例数。
 楼主| 武汉测绘 发表于 2013-11-20 09:55:59 | 显示全部楼层
流程选择时,后面不是有一个审批人的选择框吗,不能在那里面选择的人中直接判断个数吗。
sophie 发表于 2013-11-20 10:08:08 | 显示全部楼层
您好,您说的指定审批人用户选择框是您通过配置上一步可指定下一步审批人出现的审批框呢还是启动子流程实例数,通过分组方式启动实例数时出现的审批框呢?前者只是决定下一步的审批人是谁,不能决定它的实例数,后者是通过分组方式决定启动实例个数的,您必需去分组。
 楼主| 武汉测绘 发表于 2013-11-20 11:05:27 | 显示全部楼层
未命名.JPG

不能为每个审批人都单独启动一个流程吗。
sophie 发表于 2013-11-20 11:20:36 | 显示全部楼层
您好,说了平台做不到,如果您要实现,那么您按我2楼提供的解决方案去实现.
 楼主| 武汉测绘 发表于 2013-11-20 11:27:14 | 显示全部楼层
请按2楼方法提供脚本。
sophie 发表于 2013-11-20 11:41:01 | 显示全部楼层
您好,没有脚本提供,自己写,获取用户选择框的用户可参考帖子:http://teemlink.com/bbs/viewthre ... =%C9%F3%C5%FA%C8%CB
然后通过substring函数截取您的用户,得出用户个数。
 楼主| 武汉测绘 发表于 2013-11-27 11:24:40 | 显示全部楼层
var doc = getCurrentDocument();

var dbld =doc.getItemValueAsString("dbld"); //表单字段
var cbry =doc.getItemValueAsString("cbry"); //表单字段
println("dbld:" + dbld);
println("cbry :" + cbry );
var docids1 = splitText(dbld, ";");
var userlist = createObject("java.util.ArrayList");
for (var i = 1; i < docids1.length; i++) {
        if (docids1 != null) {
                var userVO = getUserById(docids1[i]);
                userlist.add(userVO);
        }
}

var docids2 = splitText(cbry, ";");
for (var i = 0; i < docids2.length; i++) {
        if (docids2 != null) {
                var userVO = getUserById(docids2[i]);
                userlist.add(userVO);
        }
}

userlist;



写了上述代码后,直接报错:
JsUtil:dbld:11e2-c670-c4354bcd-ad8c-dda2ed02
ed25;11e2-e2ae-8d8ab23a-adca-0d90724706cd;11e2-e2b2-3063a932-adca-0d90724706cd
11:17:10,296  INFO PrintJsUtil:27 - JsUtil:cbry :11e2-c670-f3f4f59e-ad8c-dda2ed0
2ed25;11e2-f5a4-22f3a2d1-af67-918e8e447aaa
java.lang.NumberFormatException: For input string: "[cn.myapps.core.user.ejb.Use
rVO@c4b735, cn.myapps.core.user.ejb.UserVO@7ead03, cn.myapps.core.user.ejb.UserV
O@c9b88e, cn.myapps.core.user.ejb.UserVO@1ba9d37]"

前文说到的substring怎么加。
kimi 发表于 2013-11-27 12:13:58 | 显示全部楼层
不好意思,请问您这段脚本是协助哪里的呢?是写在子流程节点的通过iscript脚本指定对应的脚本中吗?如下图所示:
a13.jpg
请问您具体的需求是用户选择框中有多少个用户,对应子流程的实例数就启动多少条么?如果是这里返回得是整数格式的字符串就好了啊,类似代码可改为:

  1. var doc = getCurrentDocument();
  2. var aa = doc.getItemValueAsString("用户选择框"); //表单字段
  3. var docids = splitText(aa, ";");
  4. docids.length;
复制代码
您先尝试,有问题我们再沟通。

本版积分规则

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

GMT+8, 2026-8-13 08:15

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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