流程如何回退到首环节

流程回退的时候如果要回退到首环节可以在process中添加回退规则,设置回退范围 平台默认的有一个回退规则,如果不想每个环节设置修改默认的回退规则可以通过下面的方案实现: 在process文件的onBeforeBackQuery事件中设置回退范围,如下: public static void backFlowProcessBeforeBackQuery() { RequestContext rt = ContextHelper.getRequestContext(); rt.put(BackRule.BACK_RANGE, BackRangType.ROOT_BACK_RANGE);//设置回退范围是首环节 } 某个环节需要设置,就在环节的onBeforeAdvance事件中处理;如果是整个流程都需要设置,就在流程的onBeforeAdvance事件中处理 所有的流程都需要设置,可以通过监听onBeforeAdvance事件设置 如果要自己放一个“回退到首环节”的按钮直接回退,可以通过下面的方案实现 定义一个action(本例是backStartAction),action定一个参数task,把要回退的任务传给action的task参数去操作 action的java代码实现如下: public static void backStart(String task){ RequestContext rt = ContextHelper.getRequestContext(); rt.put(BackRule.BACK_RANGE, BackRangType.ROOT_BACK_RANGE);//回退到首环节 ProcessUtils.backProcess(task,null); [...]

修改流程图后启动的流程报错

流程图修改后,对于已经启动的流程,在某些特殊的情况下,会出问题! 首先, 不建议修改流程图,对于某些需求,可以通过流程定制来解决; 其次, 如果业务上一定需要修改流程图, 这时,对于已经启动的流程,很有可能会报以下的错误: 1.错误一: “**process中不存在**place” 这时,需要手工修改系统表来解决. 手工修改系统表: delete from SA_TokenInstance where sProcessInstanceID = (select sFlowID from SA_Task where sid='TaskID') and sPlace='PlaceID' 其中, 'TaskID'是指当前待办任务的ID, 'PlaceID‘是指不存在的Place的标识. 注意: 执行这个操作时,如果被删除的SA_TokenInstance的sActive是true,会有一个负作用,导致这个TokenInstance关联的前序任务与后序任务之间的关系不能正常建立。 2. 错误二, "**process中不存在**Activity" 表示当前待办关联的环节被删除了, 需要结合业务进行处理,比如,可以在流程监控中将这条任务回收后重新处理。 需要删除SA_TokenInstance、SA_Task、SA_ProcessControl、SA_TaskRelation

如何获取结束时通知的任务ID

process中的通知规则可以设置通知时机为结束时 但是目前的版本在onAfterFinish事件中获取不到此通知的任务ID,要获取任务ID需要如下处理 1.在process的onBeforeAdvance事件中SA_Task中扩展字段上设置一个随机值,并把这个随机值放到当前的RequestContext public static void noticeFlowProcessBeforeAdvance() { ProcessControl control = (ProcessControl) ContextHelper.getActionContext().getParameter("control"); String uuid = UUID.randomUUID().toString().toUpperCase().replaceAll("-", ""); for (ProcessControlItem item : control.getNotices()) { item.getTask().setRelationValue("sESField08", uuid); } ContextHelper.getRequestContext().put("notice", uuid); } 2.在process的onAfterAdvance事件中获取当前的RequestContext中存储的值,然后写KSQL到SA_Task中过滤数据获取任务ID public [...]

onAfterFinish中如何获取结束时通知的执行人

process的通知规则中可以设置通知时机为结束时 结束时通知可以在onAfterFinish中通过ProcessControl获取执行人,具体实现如下: public static void noticeFlowProcessAfterFinish() { ProcessControl flowControl = (ProcessControl) ProcessUtils.getProcessContext().getProcessControl(); for (ProcessControlItem to : flowControl.getNotices()) { for (OrgUnit ect : to.getExecutors()) { String fid = ect.getFID(); String fname = ect.getFName(); System.out.println("==========人员名称sName=========" + [...]

打开修改任务的执行者时过滤组织机构数据

process组件提供的有modifyExecutor()修改任务的执行者 调用这个方法会弹出一个显示组织机构的对话框,默认加载的组织机构中所有的组织,如果要设置过滤条件可以在model的onload事件处理,具体如下: Model.prototype.modelLoad = function(event) { //修改执行者对话框中设置过滤数据 var process = this.comp("process");//获取process组件 process._getModifyExecutorDialog().done(function(dialog) { dialog.on("onOpen", function(event) { dialog.set({filter:"SA_OPOrg.sFName like '%起步软件%'"}); }) }) };

代码控制启动流程

Java中启动流程 需要引入 import com.justep.system.process.ProcessControl; import com.justep.system.process.ProcessUtils; 方法一介绍 List<Map<String, String>> startProcess (String processFullName, String name, String sData1, String executor) 返回的是待办任务的信息,每个待办任务是列表中的一项,每项是一个Map,包括process, activity和task信息。 参数说明: String processFullName 被启的流程的全路径 String name 流程实例的标题 String sData1 关联的业务数据 String executor 流程实例以及第一个待办任务的执行者FID,当这个值为空时,优先取当前用户有权限的人员成员,否则随机获取当前用户的一个人员成员 [...]

任务回收时获取回收的目标环节

任务中心回收任务是如何获取回收的目标环节 目标环节:环节A流转到环节B,环节B的处理人员还没有执行,那么环节A的处理人员可以到任务中心执行回收,回收的目标环节就是环节A process文件中onAfterWithdraw回收后事件,可以在事件中获取,如下: public static void testProcessAfterWithdraw() { for (ActivityInstance ai : ProcessUtils.getAI().getNextAIs()) { String activityName = ai.getActivityName(); String activity = ai.getActivity().toString(); } }

移动端首页的待办和提交任务国际化设置

移动端首页的待办和提交任务如下红框中的国际化如何设置? 移动端首页显示的这些块的内容是在java文件中实现的,因此要实现国际化,需要对相关的java文件进行设置 java文件实现国际化就java文件标准的,待办和提交所在的java文件是/BIZ/SA/task/logic/code/dsrc/TaskViewProcedure.java 具体设置如下: 1.创建不同语言的properties类型资源文件 如:中文的:taskViewProcedure_zh.properties 内容如下: 条未处理 = 条未处理 待办 = 待办 无 = 无 提交 = 提交 英文的:taskViewProcedure_enproperties 内容如下: 条未处理 = untreated 待办 = waiting 无 = no 提交 = [...]

如何修改流程轨迹图例中的显示项

流程轨迹图例是说明流程轨迹图中环境和连线的不同的颜色代表什么状态 如果需要删除或者修改某些状态,可以如下修改: /UI2/system/components/justep/processChart/server/dsrc/ProcessChart.java中 Object[] names = (Object[])items.keySet().toArray(); Element row = helpNode.addElement("div"); row.addAttribute("class", "row"); for (int i=0; i<names.length; i++){ Element value1 = row.addElement("div"); value1.addAttribute("class", "col-xs-3 col-md-1"); value1.addElement("div").addAttribute("class", items.get(names[i])); Element label1 = row.addElement("div"); label1.addAttribute("class", "col-xs-3 col-md-1"); [...]

多人同时处理是如何控制流程的时候等待其他人处理的框不显示

流程在多人同时处理是默认的只有最后一个人流转的时候才会显示执行者和下个环节的流转对话框,前面的人都是弹出的“等待其他人处理”的提示框 如果要控制等待的提示框不显示可以在onAfterAdvanceQuery中处理,如下: public static void businessActivity4AfterAdvanceQuery() { ProcessControl control = (ProcessControl) ContextHelper.getActionContext().getActionResult(); List<ProcessControlItem> flowTos = control.getFlowTos(); if(flowTos.size()==0){//判断flowTos为空 control.setDialogEnabled(false);//设置对话框不显示 } }