终止和暂停的任务怎么继续流转

终止和暂停的默认平台默认的待办任务中是不显示的,但是可以在流程监控中显示 对于暂停的任务要重新流转可以如下处理: 1.“协调办公——任务管理——流程监控”打开流程监控功能 2.通过对处理状态(已暂停)的过滤找到具体的流程实例 3.切换到“任务列表”的tab页面,找到状态为“已暂停”的这条任务,在“更多”中点唤醒按钮   通过上面3步操作,暂停的任务就会在待办任务中现象就可以重新流程 对于终止的任务要重新流转可以如下处理: 1.“协调办公——任务管理——流程监控”打开流程监控功能 2.通过对处理状态(已终止)的过滤找到具体的流程实例 3.通过查找到的流程实例的信息到系统数据库的SA_Task表中查找这个流程实例的具体数据 切换到“任务列表”的tab页面,根据状态为“已终止”的这条任务的相关信息到系统数据库的SA_Task表中查找这条任务的具体数据 然后把流程实例和这个任务的sstatusid和sstatusname的值改为未处理的状态

获取回退的当前环节和目标环节之间的环节(包括当前环节和目标环节)

回退的时候可以指定环节回退,指定环节回退时当前环节和目标环节中间可能是跨环节的 如:A——B——C——D——E四个环节,在E环节设置了回退到B环节,那么中间跨了C、D两个环节 在BIZ的回退后(onAfterBack)事件中可以获取到相关的E、B、C、D这四个环节的名字和任务ID 具体如下: public static void backFlowProcessAfterBack() { //获取回退的当前环节和目标环节之间的环节(包括当前环节和目标环节) String source = ProcessUtils.getAI().getNextAIs().get(0).getTask().getSource();//只有回退的时候才可以用getSource,使用这个方法回退后再回退获取的也不会重复 Set ais = ProcessUtils.getPI().getAI(source).getAllNextAIs();//通过获取相应的环节实例,获取直接后续环节实例 System.out.println(ais.size()); for(ActivityInstance ai : ais){ System.out.println(ai.getActivityName());//环节的名字 System.out.println(ai.getTask().getId());//任务ID } }

回退后获取回退的目标环节

BIZ流转后获取流转的目标环节是需要从ProcessControl中获取,但回退的时候就不需要从ProcessControl中获取 在onAfterBack具体实现如下: public static void backFlowProcessAfterBack() { //获取回退后的环节 String front = ProcessUtils.getAI().getNextAIs().get(0).getTask().getFront();//只有回退的时候才可以用getFront,getFront获取的是当前回退的这个任务 Set <ActivityInstance> backAis = ProcessUtils.getPI().getAI(front).getAllNextAIs();//通过获取相应的环节实例,获取直接后续环节实例 for(ActivityInstance backai : backAis){ System.out.println(backai.getActivityName());//环节名称 System.out.println(backai.getTask().getId());//任务ID } }

修改流程推送的信息

BeX5 V3.2.1及其后的版本中通过相关的配置流转流转的时候移动端(app或者微信企业号)中会推送消息通知,参考消息推送 默认消息的内容只是流转生成的任务名,会比较简单,可以自己添加其他的信息 在/BIZ/system/logic/code/dsrc/ProcessPushEngine.java中message的信息如下:变量name的值 for (Task t : tasks){ String status = t.getStatus(); if (TaskStatus.READY.equals(status) || TaskStatus.EXECUTING.equals(status)){ String name = t.getName(); String url = t.getEURL(); if (SystemUtils.isNotEmptyString(url)){ url += (url.contains("?") ? "&" : "?"); [...]

流程批量启动和批量流转

一. 流程的批启动 使用场景:针对某个data中的数据,为每一条记录启动一个流程实例。 接口协议:输入data中多个记录的id,启动多个流程实例;返回这些流程实例的第一个环节的待办任务(注意:要求每个流程实例有且只有一条待办任务,后续才能执行批流转); 实现方式:有两种方式 1. 使用process组件来启动多个流程实例 1.0  设置process组件的属性: autoClose、autoStart、autoSave、autoFilter的属性值设置为false 1.1    声明一个实例变量,用来存储流程启动后的待办任务 var Model = function() { this.callParent(); this.tasks = [];// 用于存在流程启动后关系的待办,将会在process的onStartCommit事件中赋值 }; 1.2   获取选中的数据(此案例用的dataTabels组件),分别启动流程 Model.prototype.batchStartProcess1 = function() { var dataTables = [...]

列表流程

由流程向导生成的功能是一打开功能,就显示一个流程的信息,有时候需要一打开功能,就显示多个流程的信息,例如下面的界面 在这个功能中,可以新加一条业务数据、新建一个流程、启动流程、流转等 并且定义了事件,在启动和流转之后,将该流程的处理环节和处理人回写到业务数据中并修改单据状态 1.新建 可以直接在grid列表中新建一条数据,这里设置了单据状态默认值为“未审批”,用来做流程的业务数据,当然需要自己执行“启动流转”,或者双击列表数据操作后面会介绍 2.新建流程 在listActivity.w文件中,通过按钮调用,调用justep.Shell.showPage方法,打开流程的启动界面,代码如下 Model.prototype.button1Click = function(event) { var url = "$UI/demo/listProcess/process/listProcess/mainActivity.a"; justep.Shell.showPage({ url : url, title : "订单" }); }; 这样就实现了在列表流程中新建一个流程,跟直接从功能树列表中打开流程功能一样的 3.启动流程 在listActivity.w文件中放一个process组件,调用这个组件的start方法,启动流程 不需要设置process组件的data属性,autoClose、autoStart、autoSave、autoFilter都设置为false 代码如下,第3个参数传列表data的行ID var dList = [...]

PC端流程选择执行者对话框调用自己的弹出框

平台默认的流转确认中的选择执行者对话框如果要修改样式等可以通过扩展空间的方式自己修改平台的UI2/system/components/justep/org/dialog/orgDialogPC.w,但这个文件修改后所有使用的地方样式都会被修改 如果只需要流转选择执行者时起作用可以自己新建一个.w继承平台的UI2/system/components/justep/org/dialog/orgDialogPC.w,然后按照需求进行修改;当然也可以自己新建一个全新的.w。   如果所有的流程功能都需要用自己的.w可以用扩展空间的方式修改/UI2/system/service/process/dialog/processDialog.w中相关的方法具体如下: Model.prototype.createExecutorDialogParam = function(item){方法中如下加一个src参数 return { reload: true, rootFilter: filter, data : { selected : { kind : 'sName', value : [] } }, src:"$UI/system/components/justep/org/dialog/orgDialogPC.w" }; 自己创建全新的.w(不用平台的orgDialogPC.w是)除了在上面的地方设置src,还是需要注意Model.prototype.createExecutorDialog = function() {方法中的实现,平台默认的这个地方是创建了一个OrgDialogPC,需要自己修改为创建一个windowDialog,如下: [...]

流程附言设置默认值

简单的设置就是在BIZ层的process文件或者.w的process组件的流转查询后(AfterAdvanceQuery)事件中获取到processControl去设置 如下:process文件中的事件java代码 public static void flowProcessAfterAdvanceQuery() { ProcessControl control = ProcessUtils.getProcessContext().getProcessControl(); control.setPostscript("同意"); } process组件中的事件js代码 Model.prototype.processAfterAdvanceQuery = function(event) { //设置附言默认值 event.processControl.setPostscript("同意"); }; 如果要整个模块都设置的一样在每个流程中设置会比较麻烦,可以通过配置文件设置 在模块的根目录下创建一个config.m文件,如(my.config.m)内容如下: <?xml version="1.0" encoding="UTF-8"?> <model xmlns="http://www.justep.com/model"> <config name="system.task.sContent.expr" [...]

运行时在流程轨迹或者波特图上执行点击事件

运行时的流程图和波特图其实是用的processChart组件,在组件上提供的有下面两个事件,事件中具体的参数说明可以参考API onPertItemClick (PertItemClickEvent event) [回调型事件]在波特图上某个元素点击时触发 onTrackItemClick (TrackItemClickEvent event) [回调型事件]在轨迹图上某个业务环节点击时触发 如果是所有的流程图统一的处理这个两个事件中的执行逻辑,可以通过扩展空间的方式实现/UI2/system/service/process/dialog/processChart.w对应的js中 Model.prototype.trackItemClick = function(event){(流程图的事件)和 Model.prototype.pertItemClick = function(event){(波特图的事件) 如果是单个功能中的,需要自己在功能页面中放processChart组件,在需要查看的时候调用processChart组件的API(如图)加载流程图,,具体的参数说明可以看API手册,然后在事件中操作 事件中获取相关的数据可以参考如下: //轨迹图click事件 Model.prototype.processChart2TrackItemClick = function(event){ var activity = event.activity;//获取activity var activityName = event.activityName;//获取activityName var process [...]

js中获取下个环节的执行者

在process组件的onAfterAdvance事件中可以通过event.processControl获取到流转信息,里面就有执行者的信息 具体如下获取: Model.prototype.processAfterAdvance = function(event){ var processControl = event.processControl;//获取流转信息processControl var toItems = processControl.getToItems();//获取环节相应的流转信息 if (toItems) { for (var i = 0; i < toItems.length; i++) { var sName = toItems[i].getTaskRelationValue("sName"); //获取任务名称 // 获取执行者 var [...]