如何获取【驳回再次提交回到本节点】参数,并根据该参数控制提交节点单据字段的锁定性

1 业务背景
打回单据,希望能将“驳回后再次提交时直接回到本节点”反写在单据的固定字段值上,再根据单据上的该字段判断是否锁定对应的字段值,如打回再次提交直接回到本节点时,不允许修改单据字段值例如金额、部门等信息。

2 思路与方案
方式一:写节点离开时的插件,可以通过流程实例获取变量的方式,获取到这个值,键值为:rejectBackToNode


方式二:在单据界面插件直接获取rejectBackToNode参数值
获取流程实例id:
a)WorkflowServiceHelper#getProcessInstanceIdByBusinessKey
b)实体【流程变量实例(wf_variableinstance)】 用流程实例id和rejectBackToNode变量作为条件,查这个实体
Long processInstanceIdByBusinessKey = WorkflowServiceHelper.getProcessInstanceIdByBusinessKey("单据id");
//构造查询条件
QFilter filter = new QFilter("processinstanceid",QFilter.equals,processInstanceIdByBusinessKey);
filter.and(new QFilter("name",QFilter.equals,"rejectBackToNode"));
DynamicObject[] wfVariableinstances = BusinessDataServiceHelper.load("wf_variableinstance", "typename,name,textvalue", new QFilter[]{filter});
for (DynamicObject wfVariableinstance : wfVariableinstances) {
Object textvalue = wfVariableinstance.get("textvalue");
if(textvalue instanceof Boolean){
}
}3 实现步骤
以下以方式一为例子
步骤1:
创建单据kdec_bill0520,并维护相关字段

2、配置工作流,开启相关节点参数“允许选择驳回后是否重走”

4、编写工作流插件并注册
public class DemoPlugin02 implements Plugin, IWorkflowPlugin {
@Override
public void notify(AgentExecution execution) {
//获取驳回后再次提交时直接回到本节点参数
String rejectBackToNode = (String) execution.getVariable("rejectBackToNode");
if(StringUtils.isNotEmpty(rejectBackToNode)){
//反写参数到单据的固定字段值上
String businessKey = execution.getBusinessKey();
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(businessKey,"kdec_bill0520");
dynamicObject.set("kdec_checkboxfield",Bool如何获取【驳回再次提交回到本节点】参数,并根据该参数控制提交节点单据字段的锁定性
1 业务背景打回单据,希望能将“驳回后再次提交时直接回到本节点”反写在单据的固定字段值上,再根据单据上的该字段判断是否锁定对应的字...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



