一个人有同一个流程的多个流程模版权限如何根据业务数据选择不同的模版

平台提供的获取流程模版的函数,但同一个流程有多个流程模版都有权限时是随机取的其中一个,如果需要根据业务数据选择不同的模版,可以自己定义一个函数实现 本例是根据流程模版名称获取不同的流程模版的,到SA_ProcessTemplate获取sName为需要的值时主键值并返回 函数的java代码定义如: public static String flowTemp(String temp) { String ksql = "select t from SA_ProcessTemplate t join SA_ResourceControl rc on t=rc.sResourceID where " + "rc.sTypeID='PROCESS_TEMPLATE2' and t.sValidState=1 " + "and t.sName=:temp and t.sKindID='template' [...]

流转对话框中如何控制只允许选择一个人

平台默认的流转对话框中执行者是可以显示多个的,并且选择执行者对话框中也是多选的,如果需要控制只允许选择一人需要对流转对话框进行修改 某个具体流程功能的流转对话框可以参考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中然后进行修改 设置流转对话框只运行选择一个需要如下两个地方控制 1.控制选择执行者对话框中为单选 修改Model.prototype.createExecutorDialog = function() {中的multiSelection的值为false;具体如下: Model.prototype.createExecutorDialog = function(){ return new OrgDialog({ cacheKind: cacheKind, title: new justep.Message(justep.Message.JUSTEP230055).getMessage(), showTitle: true, multiSelection: true, parentNode: this.getElementByXid("dialogs") }); }; V3.7之前的版本这个修改需要替换下面的文件/UI2/system/components/justep/org/dialog/singleOrgDialogPC.js 2.选择执行者对话框返回数据后,执行者只允许显示最后选择的人 修改Model.prototype.getExecutorDialog = function(){中对executorData的 [...]

流转对话框选择执行者如何控制只能选择指定的组织类型

流转对话框选择执行者时平台用的是orgDialogPC(orgDialog)打开的,默认是有环节权限的组织类型都可以选择,控制只能选择指定的组织类型,可以通过orgDialogPC(orgDialog)的selectFilter特性 选择执行者对话框是通过new orgDialogPC(orgDialog)组件创建的,因此可以在创建的时候设置selectFilter 如下控制PC只能选择具体的人员成员: /UI2/system/service/process/dialog/processDialog.js的Model.prototype.createExecutorDialog = function(){方法中控制 Model.prototype.createExecutorDialog = function(){ return new OrgDialog({ cacheKind: cacheKind, title: new justep.Message(justep.Message.JUSTEP230055).getMessage(), showTitle: true, multiSelection: true, parentNode: this.getElementByXid("dialogs"), selectFilter : 'val("sOrgKindID") =="psm"' }); }; 平台默认的sOrgKindID的值如下: ogn:机构 dpt:部门 [...]

待办任务中如何显示附言信息

平台默认的附言信息是存到上一个完成的任务上的,而不是在当前未处理的任务上,因此不能直接显示当前任务上sContent字段值,可以通过下面的方案实现 在流转前(onBeforeAdvance)事件获取到填写的附言信息,然后把附言信息填充给生成任务的扩展字段中,在待办任务中直接显示扩展字段的内容 事件中实现如下: public static void flowProcessBeforeAdvance() { ProcessControl flowControl = (ProcessControl) ProcessUtils.getProcessContext().getProcessControl(); String sContent = flowControl.getPostscript();// 获取附言信息 for (ProcessControlItem to : flowControl.getFlowTos()) {// 获取环节相应的流转信息 to.getTask().setRelationValue("sESField01", sContent); // 获取附言信息,并把附言信息保存到任务的扩展字段sESField01中 } } 待办任务页面/UI2/SA/task/taskView/waitActivity.w在taskData的columns中添加扩展字段sESField01,然后在list中添加组件bind-ref设置为这个关系就可以显示了 如果是某个环节需要设置,就在环节的onBeforeAdvance事件中处理;如果是整个流程都需要设置,就在流程的onBeforeAdvance事件中处理 [...]

前端扩展流转信息并在后端的流程事件中获取到扩展的信息

在扩展流转对话框时某些情况下需要对流程信息(processControl)进行扩展并在后端的流转事件中从ProcessControl中获取到扩展信息 如:在流转对话框的环节选择时添加“发送短信”选项,在后端获取是否勾选了这个选项判断是否执行发送短信 可以把是否勾选的信息放到processControl中,js中processControl中提供了setExt (String name, Object value)设置扩展数据的值 这个案例前端的主要实现如下: 在每个环节上控制的可以在activityData中加一个关系,在页面上放一个checkbox组件,checkbox的bind-ref设置这个关系 然后在checkbox的onChange事件中获取是否选中的值,给processControl设置扩展数据 Model.prototype.checkbox1Change = function(event){ var rowid = justep.Bind.contextFor(event.source.domNode).$object.val("rowid"); this.control.getToItemByID(rowid).setExt("mobile",event.value); }; 后端的流转后事件中获取如下: public static void flowProcessAfterAdvance() { ProcessControl flowControl = (ProcessControl)ContextHelper.getActionContext().getParameter("control"); for (ProcessControlItem to [...]

PC端流转对话框中选择组织对话框打开时默认展开所有组织

PC端流转对话框中选择组织对话框打开时组织默认指展开了第一级,如果要求组织完全展开可以在打开选择组织机构弹出框后设置,那么就需要对平台提供的流转对话框进行扩展 某个具体流程功能的流转对话框可以参考http://docs.wex5.com/bex5-process-question-list-10008/ 所有的功能都需要可以通过扩展空间的方式修改/UI2/system/service/process/dialog/processDialog.js 在打开选择组织机构弹出框后设置组织全展开需要对Model.prototype.showExecutorDialog方法中重写 具体如下: Model.prototype.showExecutorDialog = function(owner, item){ var dialog = this.getExecutorDialog(); var param = this.createExecutorDialogParam(item); dialog._param_owner = owner; dialog.open(param); //获取到组织机构树orgGrid,然后调用grid的expandAll方法全展开 if(dialog.getInnerModel()){ dialog.getInnerModel().comp("orgGrid").expandAll(); } else{ dialog.on('onLoad',function(event){ event.source.getInnerModel().comp("orgGrid").expandAll(); }); } }; [...]

流转对话框中勾选某个环节时不勾选通知

在process和activity中可以设置通知规则,当满足生效条件时在流转对话框中会显示通知,并且通知是勾选上的 当流转对话框中有多个环节选中流转到不同环节时根据业务需要可能有些环节不需要选中通知,可以通过对流转对话框的修改控制选择某些环节是通知不勾选,选择某些环节是通知勾选 某个具体流程功能的流转对话框可以参考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.addNotice和Model.prototype.checkbox2Change方法 下面实现的是xor输出“活动环节3,活动环节4”两个环节,如果流转对话框中选中的‘活动环节3’通知不勾选,如果选中的‘活动环节4’通知勾选,具体实现如下: Model.prototype.addNotice = function(noticeRows, executorRows, item, control){ var row = {rowid: "", selected: 0, sName: ""}; row.rowid = item.getActivityID(); var activityData = this.comp("activityData"); var itemActivity = activityData.find(['label','selected'], ['活动环节3',true]);//查找流转对话框中的环节是否有活动环节3,并且是勾选流转的数据 if(itemActivity.length>0){//如果有活动环节3,并且是勾选的设置通知的不勾选,否则通知勾选 [...]

xor设置默认选中指定环节

流程中如果有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(); [...]

流转后把附言信息显示在任务标题上

如果只是需要流转的时候把附言信息显示在任务标题上可以在流转前(onBeforeAdvance)事件中处理,如下: public static void flowTestProcessBeforeAdvance() { ProcessControl flowControl = (ProcessControl) ProcessUtils.getProcessContext().getProcessControl(); String sContent = flowControl.getPostscript();//获取附言信息 for (ProcessControlItem to : flowControl.getFlowTos()) {//获取环节相应的流转信息 String sName = to.getTask().getName(); to.getTask().setName(sName+" "+sContent); } } 如上设置后在代办任务或提交任务等中看到的任务标题中就会有附言信息 如果是某个环节需要设置,就在环节的onBeforeAdvance事件中处理;如果是整个流程都需要设置,就在流程的onBeforeAdvance事件中处理 如果是所有的流程都需要设置,可以通过监听onBeforeAdvance事件设置