问题描述:
单据本身有很多功能按钮,在单据编辑界面能够使用,现在想在审批的时候能修改单据,同时也能使用单据自身的一些功能按钮,如何处理?
解决方案:
在框架中已经暴露暴露了一个接口,如果单据有这样的需求,只需将需要增加到审批界面的单据按钮填充到接口中即可。接口定义:
//工作流审批合并用户自定义控件,由业务实现
protected List mergeMultiApproveButton(){ }
只需要将业务的按钮增加到List,返回即可
例如:
我们这边一个客户需要在工作流的审批节点实现一个功能:提交前能够先保存单据的数据,在以后的某个时间点再提交单据,请问应该怎么实现这个功能,请指点一下。可以将这种功能在多级审批界面上提供单独的按钮和菜单支持,需要一点二次开发,将功能封装到按钮上,然后将此按钮增加到工作流审批界面上。
1. 功能封装,需要二次开发自己根据功能开发
2. 按钮或菜单集成到审批界面,可以按照如下方式:
将业务的按钮加载多级审批的工具条上
两种方式:
a.业务二次开发单据实现IWorkflowUISupport接口,并自己实现IWorkflowUIEnhancement接口即可,具体请查看接口的申明和使用说明。需实现关键方式getApporveToolButtons
b.在二次开发单据中实现基类的mergeMultiApproveButton方法,将需要添加到多级审批界面的按钮添加到此方式即可。
代码示例:
第一种方式:
[tr][td]如单据UI为DemoBillEditUIpublic class DemoBillEditUIextends CoreBillEditUI implements IWorkflowUISupport {
public IWorkflowUIEnhancement getWorkflowUIEnhancement() {
DemoWFEnhancement demoWFEnhancement = new DemoWFEnhancement();
//增加一些业务功能菜单
List aList = new ArrayList();
menuView.getItem(0).setVisible(false);
menuView.getItem(1).setVisible(false);
menuView.getItem(2).setVisible(false);
menuView.getItem(3).setVisible(false);
aList.add(menuView);
demoWFEnhancement.setMenuList(aList);
//增加业务功能按钮
List buttonList = new ArrayList();
buttonList.add(button1);
buttonList.add(button2);
demoWFEnhancement.setApproveToolbar(buttonList);
return demoWFEnhancement;
}
}
DemoWFEnhancement extends DefaultWorkflowUIEnhancement{
List menuList = null
List toolBarList = null;
public List getApproveMenus(CoreUIObject uiObject) {
return menuList;
}
public List getApporveToolButtons(CoreUIObject uiObject) {
return toolBarList;
}
public String getQueryFieldNameBindingWf(CoreUIObject uiObject) {
return "id";
}
public boolean enableEntryProcess(BOSObjectType objectType) throws Exception {
return false;
}
public void setApproveToolbar (List list) throws Exception {
menuList = list;
} 。。。。。。。
}
第二种方式:
[tr][td]需要在单据中实现mergeMultiApproveButton方法:
protected List mergeMultiApproveButton(){
List bnList = new ArrayList();bnList.add(业务按钮);
。。。。。。。。。。
return bnList;
}