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;//中断流转查询不弹出流转对话框
};
评一波