如何在已存在的流程记录上发起流程?

目前在思泉软件开发平台上发起流程,会在与流程关联表单的实体表中新建一条记录,保存提交后流转审批。如果记录已经存在了,就不能在该记录上发起流程了。换个思路吧,重新建一个实体表关联到该存在的实体表,然后再新建一个流程,难点就在新的表单中要嵌套显示原表单。

案例分析:开票表单,走开票流程,完成之后调用远程接口开具电子发票。然后发现发票开错了,要冲正,就要再发起一个冲红流程。

开票管理实体:
如何在已存在的流程记录上发起流程?_第1张图片

开票冲红实体:(很简单,只需要有个关联字段就可以了)
如何在已存在的流程记录上发起流程?_第2张图片

再看下表单设计,开票管理的表单ID为1200188,详细内容就不介绍了:
image

开票冲红表单设计,要先自动生成,然后再改为自定义设计:
如何在已存在的流程记录上发起流程?_第3张图片

取消选择右侧的“重构表单”,在源码视图下面加一些代码。一条分隔线,一个iframe用于内嵌显示开票表单(注意要设置高度),然后有一个遮罩,让内嵌的表单不能编辑。我还有写一个隐藏的input控件,如果你的应用中不需要可以删除。注意修改后切换出源码视图,再保存。

还需要设计开票冲红表单的脚本以及事件触发:
如何在已存在的流程记录上发起流程?_第4张图片
如何在已存在的流程记录上发起流程?_第5张图片

下面来细看一下脚本:

//选择开票管理后触发事件

function afterChooseKP(id, textValue, ctl) {

if (id == null || id <= 0) {

return;

}

//formID为开票表单ID, listid和rm为开票列表ID

var url = "../FormDesign/BaseInfoForm.aspx?formId=1200188&listid=1200136&rm=1200136&bizId=" + id;

// frameKP为自定义的iframeID

$("#frameKP").attr("src", url);

//加载内嵌表单1秒后,隐藏工具栏按钮

setTimeout(function () {

$("#frameKP").contents().find("#vista_toolbar").hide();

}, 1000);

}

然后再为开票冲红表单建立一个工作流:如何在已存在的流程记录上发起流程?_第6张图片

然后就可以运行了,运行效果如下(红色区域为内嵌的表单):
如何在已存在的流程记录上发起流程?_第7张图片

你可能感兴趣的:(程序员运维)