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

 找回密码
 注册成为天翎用户
楼主: tuo_bing

执行子流程,如何在”我的工作“项中显示用户的工作任务

[复制链接]
 楼主| tuo_bing 发表于 2012-4-25 10:08:43 | 显示全部楼层
抱歉,可能是我没理解上面所说的意思,我将我的理解表述下 :
在流程2 的“报销单填写”的这个节点中 抄送设置添加 抄送的功能,  审批代码如下 :

  1. #include "actionlib";

  2. var rtn = "";
  3. var doc = $CURRDOC.getCurrDoc();
  4. var processor ="";
  5. if(doc.getState() != null) {
  6.         var actors = doc.getState().getActors();
  7.                
  8.         if (actors != null) {
  9.                 for(var it = actors.iterator(); it.hasNext(); ) {
  10.                         var actorrt = it.next();
  11.                         if (actorrt.getIsprocessed()) {
  12.                                 continue;
  13.                         }

  14.                         deliverMassage("",
  15.                         "报销费用不足,请继续申请",
  16.                         "当前金额不足",
  17.                         actorrt.getId(),
  18.                         "",
  19.                         "");

  20.                         processor += actorrt.getName() + ',';
  21.                  }
  22.         }
  23. }
  24. processor ;
复制代码
这样在金额不足的情况下,流程便会流转到流程1 , 并且选择审批人 。 上面所说的意思是 这里选择的审批人,就是发送站内短信,或者提醒的接收人么 ? 如果我是按照部门进行选择,而能进行预报销金额申请的经历有2个, 那么2个经理都能收到提醒 。是这样理解么 ? 那么谁执行呢 ?

PS: 上面的代码脚本是否正确,我切换用户,没有收到站内短信或提醒
bess 发表于 2012-4-25 10:43:26 | 显示全部楼层
您好,您的“ processor += actorrt.getName() + ',';  ” 这段代码是获取的用户名称,根据您的代码,这里应该返回的是用户对象的集合。具体怎么将用户对象存储在到集合里请参考这个帖子:http://www.teemlink.com/bbs/view ... highlight=ArrayList
 楼主| tuo_bing 发表于 2012-4-25 11:06:23 | 显示全部楼层
11L的问题好像没有回答我哦 ~  我按照你 12 L的意见进行了更改,站内短信的内容还是没有,是不是  deliverMassage 这个函数运用的有问题 ?

修改后的脚本如下 :

  1. #include "actionlib";

  2. var rtn = "";
  3. var doc = $CURRDOC.getCurrDoc();
  4. var userList =createObject("java.util.ArrayList");
  5. if(doc.getState() != null) {
  6.         var actors = doc.getState().getActors();
  7.                
  8.         if (actors != null) {
  9.                 for(var it = actors.iterator(); it.hasNext(); ) {
  10.                         var actorrt = it.next();
  11.                         if (actorrt.getIsprocessed()) {
  12.                                 continue;
  13.                         }

  14.                         deliverMassage("",
  15.                         "报销费用不足,请继续申请",
  16.                         "当前金额不足",
  17.                         actorrt.getId(),
  18.                         "",
  19.                         "");

  20.                         userList.add(actorrt);
  21.                        
  22.                  }
  23.         }
  24. }
  25. userList ;
复制代码
bess 发表于 2012-4-25 11:19:18 | 显示全部楼层
您好,请问您的邮件服务器有打开吗?
 楼主| tuo_bing 发表于 2012-4-25 11:57:05 | 显示全部楼层
邮件服务打开了,我用这种方式能获取到站内短信 :


所以,那个函数还是没起作用。 但是有一个问题,我选择审批对象的时候选的是 “部门领导”,而这个里面有多个人。为什么只有一个人能获取到短信通知.

本帖子中包含更多资源

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

x
bess 发表于 2012-4-25 12:02:45 | 显示全部楼层
您好,请将您的代码复制上来,以便我们分析问题!
 楼主| tuo_bing 发表于 2012-4-25 12:04:35 | 显示全部楼层
另外已经提交过一次的报销单不能重新提交了,也就是红色框的流程不能回到之前的状态 。

本帖子中包含更多资源

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

x
 楼主| tuo_bing 发表于 2012-4-25 12:06:27 | 显示全部楼层
代码在 13 L  , actionlib 中有 deliverMassage ,


  1. /**
  2. * 发送站内信,手机短信,邮件 manner 是选择发送方式 description 是描述发送何种结果
  3. *10 -在线短信通知
  4. *20 -手机短信通知
  5. *30 -电子邮件通知
  6. */
  7. function deliverMassage(manner, title, countNames,contentValues,receiverId, senderid) {
  8.         var curuserprocess = getUserProcess();
  9.         var curuser = getWebUser();
  10.         var countN = 1;
  11.         var tempcontent = "";
  12.         if(countNames.constructor == Array){
  13.                 countN = countNames.length;
  14.                 for(var p=0;p<countN;p++){
  15.                         tempcontent += " "+countNames[p] +contentValues[p];
  16.                 }
  17.         }else{
  18.                 tempcontent = countNames+contentValues
  19.         }
  20.         var userIds = receiverId;
  21.         if (manner.indexOf("10") > -1) {
  22.                 var MSreceiver = createObject("java.util.ArrayList");
  23.                 MSreceiver = getUserIdList(userIds);
  24.                 if (MSreceiver != null && MSreceiver.size() > 0) {
  25.                         for ( var j = 0; j < MSreceiver.size(); j++) {
  26.                                 sendMessage(senderid, MSreceiver.get(j), title, tempcontent);
  27.                         }
  28.                 }
  29.         }
  30.         if (manner.indexOf("20") > -1) {
  31.                 var docid = getId();
  32.                 var receiver = "";
  33.                 var isReply = false;
  34.                 var isMass = true;
  35.                 var SMSuser = createObject("java.util.ArrayList");
  36.                 SMSuser = getUserList(userIds);
  37.                 if (SMSuser != null && SMSuser.size()) {
  38.                         if (SMSuser.size() == 0) {
  39.                                 isMass = false;
  40.                         }
  41.                         for ( var i = 0; i < SMSuser.size(); i++) {
  42.                                 receiver = receiver + SMSuser.get(i).getTelephone() + ",";

  43.                         }
  44.                         sendSMS(docid, title, tempcontent, receiver, isReply, isMass);
  45.                 }
  46.         }
  47.         if (manner.indexOf("30") > -1 ) {
  48.                 $TOOLS.PROP_UTIL.load("email");
  49.                 var host = $TOOLS.PROP_UTIL.get("host");
  50.                 var emailpassword = $TOOLS.PROP_UTIL.get("password");
  51.                 var user = $TOOLS.PROP_UTIL.get("user");
  52.                 var from = $TOOLS.PROP_UTIL.get("from");
  53.                 var SMuser = createObject("java.util.ArrayList");
  54.                 SMuser = getUserList(userIds);
  55.                 var bbc = null; // 抄送
  56.                 var validate = false;
  57.                 var subject = title;
  58.                 var count = 1;
  59.                 var contentName = "";
  60.                 var contentValue = "";
  61.                 if(countNames.constructor == Array){
  62.                         count = countNames.length;
  63.                        
  64.                 }
  65.                 var body = "<table>";
  66.                 for(var i = 0; i<count; i++){
  67.                         if(countNames.constructor == Array){
  68.                                 contentName = countNames[i];
  69.                                 contentValue = contentValues[i];
  70.                         }else{
  71.                                 contentName = countNames;
  72.                                 contentValue = contentValues;
  73.                         }
  74.                         body += "<tr><td>"+contentName+"</td><td>"+contentValue+"</td></tr>";
  75.                 }
  76.                 body += "</table>"
  77.                 if (SMuser != null && SMuser.size() > 0) {
  78.                         for ( var i = 0; i < SMuser.size(); i++) {
  79.                                 to = SMuser.get(i).getEmail();
  80.                                 sendMail(from, to, subject, body, host, user, emailpassword,
  81.                                                 bbc, validate);
  82.                         }
  83.                 }

  84.         }

  85. }

复制代码
bess 发表于 2012-4-25 13:52:41 | 显示全部楼层
您好,目前我们平台是不支持子流程往回走的,所以您的子流程不能回到之前的状态。
关于您的这段代码,请您将下面代码
  1.   if (SMuser != null && SMuser.size() > 0) {

  2.                         for ( var i = 0; i < SMuser.size(); i++) {

  3.                                 to = SMuser.get(i).getEmail();

  4.                                 sendMail(from, to, subject, body, host, user, emailpassword,

  5.                                                 bbc, validate);

复制代码
的结果用输出打印出来,看您的集合里面有几个对象!
 楼主| tuo_bing 发表于 2012-4-25 14:40:54 | 显示全部楼层
1.   输入打印

  1. if (SMuser != null && SMuser.size() > 0) {
  2.         for ( var i = 0; i < SMuser.size(); i++) {
  3.                 to = SMuser.get(i).getEmail();
  4.                 println("===========输出对象:" + to);
  5.                 sendMail(from, to, subject, body, host, user, emailpassword,bbc, validate);
  6.         }
  7. }

复制代码
Tomcat 控制台没出现打印结果 ~ 是不是说明没调用 ?

2.  获取的站内短信如下 :

短信内容应该是表单Id吧, 不是我设置的内容

3.  “目前我们平台是不支持子流程往回走的” 这句话是不是表明 我之前申请的 报销单无效了,需要重新进行填写 ?再走一次流程2?

本帖子中包含更多资源

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

x

本版积分规则

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

GMT+8, 2026-8-13 01:14

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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