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

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

如何获取表单中用户选择框指定的用户对象(一个或多个)

[复制链接]
eduwzz 发表于 2012-2-14 23:35:40 | 显示全部楼层 |阅读模式
本帖最后由 purple 于 2012-2-17 16:02 编辑

想请教下如何通过获取表单中用户选择框指定的用户对象(一个或多个)来指定下一节点的审批人?

这个问题我通过在论坛上搜索,已经可以做到获取单个用户作为审批人,但是对于多个用户的情况实在是找不到解决办法。看了论坛中类似问题中的解答里提到要用一个用户对象集合来保存获取到的多个用户对象,但是没有提到如何将一个个用户对象添加到这个集合里……因为要选择的用户不一定是同一部门或同一角色下的所有用户。所以希望技术人员能指点一下相关的脚本编写。
suyisene 发表于 2012-2-15 10:22:56 | 显示全部楼层
本帖最后由 suyisene 于 2012-2-15 10:34 编辑

您好,可以参考一下下面的脚本,是获取用户选择框多个用户的

var datas=getItemValueAsString("user");//user为用户选择框
println(datas);
var docids = splitText(datas,";");//将多个用户的id分开,变成一个数组
var ps;
for(var i=0;i<docids.length;i++){
         ps=new Packages.java.lang.String(docids);//类型转换,转变成字符串类型
     if(ps!=null)
     {
         var userProcess = createProcess("cn.myapps.core.user.ejb.UserProcess");
         var user = userProcess.doView(ps);//根据id去查询,找到用户对象
         var name =user.getName();//根据用户对象取得名字
         println(name);
    }
}
 楼主| eduwzz 发表于 2012-2-15 10:36:12 | 显示全部楼层
本帖最后由 eduwzz 于 2012-2-15 10:49 编辑

您好,这篇帖子我之前也看过,我理解的是这篇帖子里解决的是得到多个用户的名称,这个可以用字符串来存放多个用户名。不过我要想得到的是一个包含了多个用户对象的变量(或者叫集合)。

或者是我的思路有误,我想到的是操作过程是:

a.定义一个用户对象集合Z;
b.从用户选择框中获取到用户的id集合(用字符串X保存);
c.从字符串X中取出一个用户id,将其转换成用户对象
d.将得到的用户对象存入Z;
e.重复c和d直到全部用户id都被取出;
f.将集合Z传递给下一环节作为审批人。

我现在就是步骤d不知道如何实现,其他步骤通过查看类似问题的帖子基本上可以解决了。
有类似问题的帖子里提到有相应的方法来获取同一部门、同一角色下的所有用户对象集合,可是我选择的用户并不是同一部门或者角色下的所有用户,而是单独分别选择的,所以这些方法不适合。不知道我的思路有没有问题,或者走了弯路……
purple 发表于 2012-2-15 11:52:15 | 显示全部楼层
O(∩_∩)O~。我明白您的意思,之前给您的示例是单个用户的,现在已经将帖子重新编辑了,您先参考,有问题,我们再沟通。参考帖子链接:http://www.teemlink.com/bbs/view ... mp;extra=#pid186546
 楼主| eduwzz 发表于 2012-2-15 23:21:43 | 显示全部楼层
今天试了下,获取单个用户作为审批人的脚本可以实现功能了,但是获取多个用户的脚本还是没有测试成功……
提示:,不知道还有可能是哪里出问题呢……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册成为天翎用户

x
purple 发表于 2012-2-16 09:06:59 | 显示全部楼层
本帖最后由 purple 于 2012-2-17 16:00 编辑

没有合法审批人,就证明获取失败了,获取多个用户,您需要使用以下这段脚本,我测试了,是可以的,您先试,有问题,我们再沟通。
  1. var doc = getCurrentDocument();
  2. var aa = doc.getItemValueAsString("用户选择框"); //表单字段
  3. var docids = splitText(aa, ";");
  4. var userlist = createObject("java.util.ArrayList");
  5. for (var i = 0; i < docids.length; i++) {
  6.         if (docids != null) {
  7.                 var userVO = getUserById(docids[i]);
  8.                 userlist.add(userVO);
  9.         }
  10. }
  11. userlist;
复制代码
 楼主| eduwzz 发表于 2012-2-16 17:22:05 | 显示全部楼层
我把上面的脚本直接复制进去,就改了表单字段名,还是不行,既然你测试通过,估计就不是脚本的问题了。
我就想会不会是我的表单设计有什么问题?之前我将表单字段中的校验脚本去掉了,然后就神奇的提交成功了,可是我再试第二次就又不行了……要不我把表单上传给您看看?
purple 发表于 2012-2-16 17:29:01 | 显示全部楼层
,方便的话,您加我Q,我远程帮您看一下。QQ:1946218209
purple 发表于 2012-2-17 16:01:35 | 显示全部楼层
问题处在,论坛会解析会将var userVO = getUserById(docids[i]);解析成var userVO = getUserById(docids);已重新设置,客户问题也已解决。
 楼主| eduwzz 发表于 2012-2-17 18:10:03 | 显示全部楼层
相当感谢技术人员的帮忙!

本版积分规则

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

GMT+8, 2026-8-12 20:25

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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