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

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

求一个删除按钮的脚本

[复制链接]
suyisene 发表于 2012-2-17 10:21:11 | 显示全部楼层
您好,你可以取得流程状态的业务逻辑去判断嘛。
 楼主| fengzhong 发表于 2012-2-17 10:21:38 | 显示全部楼层
回复 10# suyisene


    这些我都知道,我是想要一个这样的脚本。你们有没有这样的 脚本 给一个,或者帮忙写一个
suyisene 发表于 2012-2-17 10:25:32 | 显示全部楼层
您好,你可以在删除的动作执行前写脚本,你可以获取状态标签去做业务逻辑判断,而获取状态标签的脚本是:
获取流程状态标签你可以参考下面的脚本:
       var doc = getCurrentDocument();//获取当前文档对象
var stateLabel = doc.getStateLabel();//获取流程状态标签
kimi 发表于 2012-2-20 09:54:56 | 显示全部楼层
楼主您好:您可以根据您人工节点的第一个状态标签去做判断,具体代码如下:
  1. var params = getParameter("_selects");   //获取用户前台选择的记录参数
  2. var docids = splitText(params,";");
  3. $PRINTER.println("params --> " + params);
  4. println(docids[0]+"ssssssssss");
  5. println(docids[1]+"111111111111");
  6. var pids ="";
  7. var process = getDocProcess(getApplication());   //Document操作类
  8. for(var i=0;i<docids.length;i++)   //然后循环,因为存在多项情况
  9. {
  10.     var doc = process.doView(docids[i]);
  11.     var sql = "select  id,domainid,statelabel as item_statelabel  from tlk_学生爱好子表单 where id='"+docids[i]+"'";   
  12.     var datas  =queryBySQL(sql);   //根据参数获取记录
  13.    if(datas!=null && datas.size()>0)
  14.    {
  15.         for(var iter = datas.iterator();iter.hasNext();)
  16.        {
  17.              var docs = iter.next();
  18.               if(docs!=null)
  19.                 {
  20.               var stateLabel=docs.getItemValueAsString("statelabel"); //获取该记录的状态标签
  21.               println("ppppppppp"+stateLabel);
  22.               if(!(stateLabel.equals("测试人员测试")))   //判断如果该记录的状态标签不等于该流程的第一个人工节点状态,就不能删除
  23.                       {
  24.                              createAlert("勾选的记录存在已提交,因此不能删除");      
  25.                               break;
  26.                        }
  27.                 }
  28.         }
  29.    }
  30.          
  31. }
复制代码
有问题我们再沟通!
kimi 发表于 2012-2-23 09:01:52 | 显示全部楼层
首先:需要改您的sql语句中的表名    tlk_学生爱好子表单
其次:需要改这个地方的状态标签名    if(!(stateLabel.equals("测试人员测试")))   ,将这里的状态标签名该为您流程的第一个人工节点的状态标签名称
有问题我们再沟通!
kimi 发表于 2012-2-23 09:25:17 | 显示全部楼层
您当前的记录还只是保存,没有提交? 可否让我看一下您这条记录的状态标签呢?还有该流程的第一个人工节点标题标签名称呢?
kimi 发表于 2012-2-23 09:55:07 | 显示全部楼层
我明白了,您需要把您的保存(不进行校验)按钮换成保存带流程按钮,保存(不进行校验)按钮,并没有启动流程,所以当前您记录的流程状态标签还是为null   所以if(!(stateLabel.equals("员工填写" )))您把这段代码改成:if(!(stateLabel.equals("员工填写" ))&&stateLabel!=null)   您可以用debug模式调试看目前的状态标签是否为空
kimi 发表于 2012-2-23 10:21:20 | 显示全部楼层
您是说想判断系统当前登录人是不是该记录的创建者是吗?
kimi 发表于 2012-2-23 10:36:58 | 显示全部楼层
获取当前登录人:getWebUser().getName();
获取当前记录的创建者:getCurrentDocument().getAuthor();
kimi 发表于 2012-2-23 11:03:18 | 显示全部楼层
首先把sql语句要改下啊:var sql = "select  id,domainid,statelabel as item_statelabel  from tlk_Week_Report where id='"+docids[i]+"'";   
改为:var sql = "select  id,domainid,statelabel as item_statelabel,author as item_author  from tlk_Week_Report where id='"+docids[i]+"'";   

再把您的这段代码:var name2 = docs.getCurrentDocument().getAuthor();
改为: var name2=docs.getItemValueAsString("author");     
还要前面也说了,还加上一句判断当前记录的状态标签有没有为空吧!

本版积分规则

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

GMT+8, 2026-8-12 09:28

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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