|
楼主 |
发表于 2016-4-6 14:54:36
|
显示全部楼层
本帖最后由 狮子心 于 2016-4-6 14:57 编辑
我试过了,通知页中的流转按钮点击时是报错的,而不是不能点。虽然点了不起效,但是体验不好。
我改为用另外的页面专门作为通知页了。
现在遇到的问题是
A环节的人选了B环节的主办人和协办人,然后B环节的主办人流向C环节时,我在代码里面关闭B环节协办人的通知,然后启动C环节的协办通知。就是办案过程的几个环节都弄了对应的协办通知页面,然后主办人向后流转时要通知协办人员一起向后。
我现在是在主办人向后流转时配了通知规则的,但是其实主办人应该是没权限选择协办人的,只有A环节的人才有权限,后面一直都是这些协办人。虽然我在代码里面读取了开始办案的第一个环节的协办人员,主办人选了什么人其实也没用,但是那样的话最好就不要出现那个通知让主办人选人了。
现在的代码是 /**
* 立案审查流转前将协办人员加到通知里,并将当前环节的协办人员通知改为已办
*/
public static void regCaseBeforeAdvance() {
String key = ProcessUtils.getProcessData1();
String kSql = "update SA_Task a set a.sStatusID='tesFinished' , a.sStatusName = '完成' where a.sData1='"
+ key
+ "' and a.sActivity = 'regCaseNotice' and (a.sStatusID='tesReady' or a.sStatusID='tesExecuting') and a.sKindID = 'tkNotice'";
KSQL.executeUpdate(kSql, null, "/system/data", null);
ProcessControl control = ProcessUtils.getProcessContext().getProcessControl();
List<Object> personIds = BizUtils.getRelationValues("SA_Task", null, "SA_Task.sActivity='regCaseNotice' and SA_Task.sData1='"+key+"'", null, "sExecutorPersonID", "/system/data");
List<ProcessControlItem> notices = control.getNotices();
for (ProcessControlItem notice : notices) {
notice.clearExecutors();
for (Object id : personIds) {
notice.addExecutor(OrgUtils.findOrgUnitsByID((String)id).get(0));
}
// 修改任务标题
String BUSINESS_NO = (String) BizUtils.getRelationValue("Z_case", key, null, null, "BUSINESS_NO",
"/kswq/biz/data");
Task task = notice.getTask();
String newTaskName = "业务流水号 : " + BUSINESS_NO;
task.setName(newTaskName);
}
}
其实那我需要的就是调用 control.addNotice(ProcessControlItem),不过这个ProcessControlItem的api可以新建对象的只有这个比较接近
public ProcessControlItem createProcessControlItemByAI(ActivityInstance ai, String guid)
根据已有环节实例创建流程控制信息单元
但不知道怎么用,而且怎么设置才弄得出我配置的协办人员通知规则的效果。
|
-
|