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

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

SP10 18885,流程处理操作,动作执行前脚本被执行了2次【bugid:10280】

[复制链接]
上海普兰金融 发表于 2013-11-29 15:29:45 | 显示全部楼层 |阅读模式
本帖最后由 kimi 于 2013-12-2 11:44 编辑

如题,动作执行前脚本中执行SQL insert,点此操作一次,插入了2条记录,求改动源码方式的快速解决办法
sophie 发表于 2013-11-29 15:46:40 | 显示全部楼层
您好,正常不会执行2次的,您检查一下您的代码,看是否有变量名重名的。
 楼主| 上海普兰金融 发表于 2013-11-29 15:55:47 | 显示全部楼层
我操作里面有2个“流程处理”,但是只有其中一个是有动作执行前脚本的,变量重名是指?
sophie 发表于 2013-11-29 16:55:24 | 显示全部楼层
比如您脚本中声明有变量i,可能其他地方也使用到,您改一下您的变量名,再尝试一下,同时贴 一下您的脚本。
 楼主| 上海普兰金融 发表于 2013-11-29 17:33:42 | 显示全部楼层
脚本很简单:
var workflowDefine = new Packages.com.purang.document.WorkFlowDefine(getDomainid(), getApplication());                        workflowDefine.logOpinion(getCurrentDocument(),getWebUser(),getItemValueAsString("opinion"));
其中java部分这么写:
public void logOpinion(Document parentDocument,WebUser currentUser,String opinion) throws Exception
    {
        FormProcess formProcess = (FormProcess) ProcessFactory.createProcess(FormProcess.class);
        Form form = formProcess.doViewByFormName("approval_info_fo", this.applicationId);
        Document childDocument = new Document();
        childDocument.setId(Sequence.getSequence());
        childDocument.setParent(parentDocument);
        childDocument.setFormid(form.getId());              
        childDocument.setFormname(form.getFullName());
        childDocument.setAuthor(currentUser.getId());
        childDocument.setApplicationid(this.applicationId);
        childDocument.setDomainid(this.domainId);
        childDocument.addStringItem("approval_user_id", currentUser.getLoginno());
        childDocument.addDateItem("approval_time", new Date());
        childDocument.addStringItem("approval_type",parentDocument.getStateLabel());
        childDocument.addTextItem("approval_opinion", opinion);
        DocumentProcess documentProcess = DocumentProcessBean.createMonitoProcess(this.applicationId);
        documentProcess.doCreate(childDocument);
    }
没有重复变量
echochen 发表于 2013-11-29 18:06:19 | 显示全部楼层
为什么您的操作里面有2个“流程处理”呢?
 楼主| 上海普兰金融 发表于 2013-12-2 08:52:56 | 显示全部楼层
本帖最后由 上海普兰金融 于 2013-12-2 08:54 编辑

一个用来保存并启动流程,一个用来流程节点流转,但是这个动作执行前脚本就写在后者,前者没写,应该只执行一次才对
kimi 发表于 2013-12-2 09:03:44 | 显示全部楼层
您好:请问5楼的代码您是写作第二个“流程处理”用例流程节点流转的动作执行前么?从您上面的代码看到说往某个表单中创建一条B记录,然后再提交A记录啊。请问您具体的需求是什么呢?
 楼主| 上海普兰金融 发表于 2013-12-2 09:32:51 | 显示全部楼层
本帖最后由 上海普兰金融 于 2013-12-2 09:38 编辑

请问5楼的代码您是写作第二个“流程处理”用例流程节点流转的动作执行前么?
是的

从您上面的代码看到说往某个表单中创建一条B记录,然后再提交A记录啊。请问您具体的需求是什么呢?
流程流转时,备份审批意见到B表

顺便问一下,是不是动作执行前脚本不是绑定到写脚本的那个按钮的,而是绑定到按钮指向的动作类型的?
kimi 发表于 2013-12-2 09:45:43 | 显示全部楼层
不是啊,如果您是同种类型的按钮,在表单中添加了2个,您要确认后面问的问题,您可以在第一个按钮中写一个简单的打印语句,然后再第二个按钮中也写一个打印语句,此时您在前台只点击一个按钮,看是否这两个按钮的打印语句中执行了呢?

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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