名易流程申请处理: 流程提交或处理结束后,报销流程中的数据会自动生成到NC系统中: 查询后的结果: 从这里可以查看到从名易OA办公软件名易OA系统提交过来的对应数据: 三.实现方法步骤 1、配置接口文件(action.xml) 2、编写接口(action)实现代码 3、员把action.xml中定义的接口设置为流程节点附加操作后,就可以实现流程到达该节点前(或离开该节点后)执行接口实现代码。 4、在流程设置中应用该功能
1.xml文件配置 该文件名为action.xml,位于(该文件位于名易OA办公软件名易OA系统的WEB-INFervice目录下) ?xmlversion=1.0encoding=GBK? moduleid=datasourceversion=1.0.0 service-pointid=baseActioninterface=OA.interfaces.workflow.action.Action invoke-factory constructclass=OA.interfaces.workflow.action.BaseAction setproperty=dsservice-id=datasource.dt1 construct invoke-factory ervice-point
说明:以上定义了一个id为baseAction的action,其中黑体部分是在配置每个动作时需要改变的内容; 注意:每次配置后需要重启OA服务生效; 2.属性说明 Id:为该动作的id,不能重复,在后文件将会使用该标识 Class:具体实现的动作类 service-id:为该动作要使用的数据源,如果该动作需要好异构系统交互数据,在此可以设置前文配置好的数据源。 如果添加一个新的动作,只需修改以上的参数就可以 如果一个动作中,用到多个数据源,也可以类似的添加进去,如: set-serviceproperty=ds1service-id=datasource.xxx 只要property的值不相同就可以 3.在5.0及以上版本可以直接在进行可视化的配置 通过顶部菜单【设置中心】【外部接口设置】【配置接口动作】即可进入配置界面
点击右键【新建】即可创建一个新的【接口动作】
注意:该配置,不需要重启OA服务即可生效
4.可视化配置属性说明 接口动作标识,即xml配置中的Id:为该动作的id,不能重复,在后文件将会使用该标识 接口动作类文件,即xml配置中的Class:具体实现的动作类 5.Action接口代码编写 编写接口(action)实现代码,在上面的配置中,具体要实现的动作将体现在OA.interfaces.workflow.action.BaseAction类中。该类必须实现OA.interfaces.workflow.action.Action接口,该接口中包含execute(RequestInforequest),这个方法会在流程节点到达前或节点到达后被名易OA办公软件名易OA系统调用。 示例代码: packageOA.interfaces.workflow.action; importorg.apache.commons.logging.Log; importorg.apache.commons.logging.LogFactory; importOA.general.Util; importOA.soa.workflow.request.Cell; importOA.soa.workflow.request.DetailTable; importOA.soa.workflow.request.Property; importOA.soa.workflow.request.RequestInfo; importOA.soa.workflow.request.Row; publicclassBaseActionimplementsAction{ publicStringexecute(RequestInforequest){ 取主表数据 Property[]properties=request.getMainTableInfo().getProperty();获取表单主字段信息 for(inti=0;iproperties.length;i++){
Stringname=properties[i].getName();主字段名称 Stringvalue=Util.null2String(properties[i].getValue());主字段对应的值 System.out.println(name++value); } 取明细数据 DetailTable[]detailtable=request.getDetailTableInfo() .getDetailTable();获取所有明细表 if(detailtable.length0){ for(inti=0;idetailtable.length;i++){ DetailTabledt=detailtable[i];指定明细表 Row[]s=dt.getRow();当前明细表的所有数据,按行存储 for(intj=0;js.length;j++){ Rowr=s[j];指定行 Cellc[]=r.getCell();每行数据再按列存储 for(intk=0;kc.length;k++){ Cellc1=c[k];指定列 Stringname=c1.getName();明细字段名称 Stringvalue=c1.getValue();明细字段的值 System.out.println(name++value); } } } }
returnAction.SUCCESS; } }
以上class中可以在execute(RequestInforequest)方法中定义任何想要执行的操作,上面的示例描述了在execute(RequestInforequest)方法中获取当前流程的所有信息。
6.流程节点附加操作接口调用 在名易OA办公软件名易OA系统流程管理中配置一下节点附加操作可以看到下图所示,可以在任意一个节点上设置,当流程流到改节点,自动触发预先定义好的动作
以上网页对话框中红色部分接口动作将显示所有定义过的接口动作供选择调用。