流程中如果有xor,xor默认选中的可以不是需要的,如果默认选中指定环节需要对流转对话框进行修改

某个具体流程功能的流转对话框可以参考http://docs.wex5.com/bex5-process-question-list-10008/

由于平台默认的/UI2/system/service/process/dialog/processDialog.w是继承/UI2/system/service/process/dialog/processDialog.m.w实现的,所以processDialog.w中调用的某些js方法是在/UI2/system/service/process/dialog/processDialog.m.js中定义的,因此在自己扩展流转对话框中如果有需要修改平台原始的js方法的,需要自己把/UI2/system/service/process/dialog/processDialog.m.js中的函数定义复制到自己的js中然后进行修改

设置默认选中的环节需要对Model.prototype.addActivity函数的定义进行修改,因此需要把/UI2/system/service/process/dialog/processDialog.m.js中此函数的完整定义复制到自己扩展的js文件
流转对话框中默认是否选中是通过activityRows.push({rowid: activity.getID(), selected: selected, isEnd: isEnd, label:activity.getLabel()});中的selected这个属性值扩展的,因此可以通过对环节名的判断设置这个属性值为不同的

具体的代码修改参考如下:

	Model.prototype.addActivity = function(activityRows, executorRows, activity, control) {
		if (activity.isSelectable()) {
			var toItem = control.getToItemByID(activity.getID());
			var isEnd = toItem.isEnd();
			var selected = toItem.isSelected();
			if (activity.getLabel() == '活动环节4')  //判断是xor输出环节需要默认选中的环节设置selected为true
				activityRows.push({rowid : activity.getID(),selected : true,isEnd : isEnd,label : activity.getLabel()});
			else if(activity.getLabel() == '活动环节3')//判断是xor输出环节不需要默认选中的环节设置selected为false
				activityRows.push({rowid : activity.getID(),selected : false,isEnd : isEnd,label : activity.getLabel()});
			else//非xor的输出环节默认的按照后端传过来的selected的值设置
				activityRows.push({rowid: activity.getID(), selected: selected, isEnd: isEnd, label:activity.getLabel()});

			this.addExecutors(executorRows, toItem);
		}

		var children = activity.getChildren();
		if (children && children.length > 0) {
			for (var i = 0; i < children.length; i++) {
				this.addActivity(activityRows, executorRows, children[i], control);
			}
		}
	};

需要注意的是这样设置在弹出对话框中默认选中的环节不一定是在最前面的,如果需要默认选中的环节在最前面参考如下实现:

	Model.prototype.addActivity = function(activityRows, executorRows, activity, control) {
		if (activity.isSelectable()) {
			var toItem = control.getToItemByID(activity.getID());
			var isEnd = toItem.isEnd();
			var selected = toItem.isSelected();
			if (activity.getLabel() == '活动环节4')  //判断是xor输出环节需要默认选中的环节设置selected为true
				activityRows.splice(0, 0, {rowid : activity.getID(),selected : true,isEnd : isEnd,label : activity.getLabel()});
			else if(activity.getLabel() == '活动环节3')//判断是xor输出环节不需要默认选中的环节设置selected为false
				activityRows.push({rowid : activity.getID(),selected : false,isEnd : isEnd,label : activity.getLabel()});
			else//非xor的输出环节默认的按照后端传过来的selected的值设置
				activityRows.push({rowid: activity.getID(), selected: selected, isEnd: isEnd, label:activity.getLabel()});

			this.addExecutors(executorRows, toItem);
		}

		var children = activity.getChildren();
		if (children && children.length > 0) {
			for (var i = 0; i < children.length; i++) {
				this.addActivity(activityRows, executorRows, children[i], control);
			}
		}
	};