如何在审批详情页面实现前一流程和后一流程的切换

关键词:驳回、寻址、工作流
一、需求
打开待办任务的审批页面时,需要直接查看上一条任务或者下一条任务(原来是要先退出当前审批页面,再从列表详情页点击详情进来),直接点击如图两个按钮直接跳到上一条待办任务或者下一条任务。

二、思路与方案
扩展审批页面wf_approvalpage_bac,并且在审批页面添加按钮两个工具栏按钮”前一流程”和“后一流程“,需要注意的是,要在beforeItemClick事件中处理,并取消执行ItemClick事件,如果我们在ItemClick事件中处理页面切换逻辑,那么会先执行标准审批插件的ItemClick事件,这时会判断按钮绑定的业务单据的操作是否存在,新增按钮没有绑定操作时,会报空指针。另外,弹窗逻辑中参考标准的审批页面逻辑,传入审批页面打开详情时需要的传参,如下。
HashMap<String, Object> para = new HashMap<>();
para.put("taskId",nextaskid);
para.put("type","toHandle");
showParameter.getCustomParams().putAll(para);插件执行机制:先按表单插件注册的顺序执行所有插件的beforeItemClick事件,再执行所有插件的ItemClick事件。三、实现过程
package kdec.showcloud.showapp.plugin.workflow;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.serialization.SerializationUtils;
import kd.bos.form.FormShowParameter;
import kd.bos.form.ShowType;
import kd.bos.form.control.Toolbar;
import kd.bos.form.control.events.BeforeItemClickEvent;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.servicehelper.user.UserServiceHelper;
import kd.bos.workflow.engine.TaskService;
import kd.bos.workflow.service.WorkflowService;
import kd.bos.workflow.service.impl.ServiceFactory;
import kd.bos.workflow.taskcenter.plugin.ApprovalPluginNew;
import kd.sdk.plugin.Plugin;
import java.util.*;
/**
* 动态表单插件
*/
public class WFToolExy extends ApprovalPluginNew implements Plugin {
@Override
public void registerListener(EventObject e) {
Toolbar toolbarap = this.getView().getControl("toolbarap");
if (toolbarap!=null) {
toolbarap.addItemClickListener(this);
}
super.registerListener(e);
}
@Override
public void beforeItemClick(BeforeItemClickEvent evt) {
String itemKey = evt.getItemKey();
if (itemKey.equals("kdec_beforewf")||itemKey.equals("kdec_atterwf")){
//取消itemClick事件的执行
evt.setCancel(true);
Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
Object curtaskid = customParams.get("taskId");
Object nextaskid=null;//下一个任务id,可以是前一个也可以是后一个的值
Integer nextIndex=0;
String curtaskidindex = getPageCache().get("curtaskidindex");
List<Object> taskids = new ArrayList<>();
int index = 0;
if (curtaskidindex==null) {
WorkflowService wfService = (WorkflowService) ServiceFactory.getService(WorkflowService.class);
TaskService taskService = wfService.getTaskService();
List<Object> params = new ArrayList();
//这个根据实际情况设置分页查询的情况
DynamicObjectCollection data = taskService.getTaskCenterData(0, 100000, String.valueOf(UserServiceHelper.getCurrentUserId()), (String)null, "","toHandle", (String)null,params,"createdate desc");
for (DynamicObject row:data) {
如何在审批详情页面实现前一流程和后一流程的切换
关键词:驳回、寻址、工作流一、需求 打开待办任务的审批页面时,需要直接查看上一条任务或者下一条任务(原来是要先退出当前审批页...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



