js中调用process组件的advance获取advanceExt方法是不会弹出框就可以直接流转的,这样的对于xor就有走选中的环节
如果要修改选择环节就需要有ProcessControl,执行advanceQuery是可以生成processControl的
调用advanceQuery默认的是会弹出流转对话框的,那么既要获取processControl又要控制不弹出流转对话框就可以在process组件的onBeforeAdvanceQuery事件中处理,如下:
1.在model的构成函数中定义一个实例变量this.processControl用来存储processControl
var Model = function() { this.callParent(); this.processControl = ""; };
2.放一个按钮先调用advanceQuery,再调用advanceExt
Model.prototype.button1_3Click = function(event) { var task = this.getContext().getTask();// 获取当前任务id this.comp("process").advanceQuery(task);// 执行advanceQuery为了获取processControl修改processControl this.comp("process").advanceExt(task, this.processControl);// 把修改后的processControl做参数传递 };
3.在事件中修改processControl,阻止弹出流转对话框
Model.prototype.processAfterAdvanceQuery = function(event) { // 获取processControl修改选中环节 var processControl = event.processControl; var toItems = processControl.getToItems(); if (toItems.length > 0) { for (var i = 0; i < toItems.length; i++) { // 判断是需要选择的环节通过setSelected设置为选中,不是的设置为不选择 // 如果要判断是结束用if(toItems[i].isEnd) if (toItems[i].getTaskRelationValue("sActivity") == "businessActivity4") { toItems[i].setSelected(true); } else { toItems[i].setSelected(false); } } processControl.deleteUnSelectedItems();// 删除未选中的 } this.processControl = processControl;// 把修改后的processControl赋值给this.processControl event.cancel = true;//中断流转查询不弹出流转对话框 };
评一波