致远OA——流程节点监听

🍎 业务需求

 
 
案例一: https://pan.quark.cn/s/c44b2c2e517a
案例二: https://pan.quark.cn/s/ccff3b0fcd55

  1. 当流程流转到某一节点后,点击按钮给表单明细行添加批注信息。非指定节点,点击按钮允许添加注释。
  2. 当流程快要结束时,将注释信息添加到表单明细行对应的字段中。

在这里插入图片描述
点击按钮添加批注

在这里插入图片描述
在这里插入图片描述
最终成功展示(这个是我后续重新添加的数据所以跟上面图片不一致)。

在这里插入图片描述

在这里插入图片描述

🍊 业务分析

 

问题一: 获取表单当前节点,将当前节点信息传给通过接口的方式传给后台。后台进行配置换,那些节点可以打开该注释页面。将接口传入的当前节点进行分析对比从而打开不同的逻辑页面。

问题二:

  1. 后台管理 —— 切换集团管理员账号 —— CIP 集成平台
  2. 应用接入信息表中添加自己所需要的数据 thirdparty_register
  3. 业务流程集成 —— 新建分类 —— 新建集成业务(新建集成:选择 cap4 选项 )
  4. 新建关联应用 —— 选择 thirdparty_register 表中添加的数据
  5. 节点事件绑定 —— 添加节点
    关联应用选择新建用用的信息,处理名称是我们二次开发的监听名称。
    在这里插入图片描述
  6. 关联节点事件
    在这里插入图片描述

在这里插入图片描述

🍓 功能实现

问题一:
如下代码要在自定义控件中的 js 文件中添加,详见 添加按钮控件

   var jumpFun = function(opt) {
             var currentNodeId =  window.parent.document.getElementById("currentNodeId").value;
                // 事件执行
                // 获取按钮所在的行
                var row = this.closest('tr');
                // 表单明细行的 id 数据
                var recordId = row.getAttribute('data-record-id');
                var url = '/xx/xx.do?callMethod=index&formId='+recordId +"&currentNodeId="+currentNodeId;
                getCtpTop().addattachDialog = null;
                getCtpTop().addattachDialog = getCtpTop().$.dialog({
                    title: $.i18n("xx"),
                    transParams: {
                        parentWin: window
                    },
                    url: url,
                    width: 1000,
                    height: 600
                });

            };

通过pluginProperties.xml配置文件进行数据注入。

在这里插入图片描述
在这里插入图片描述

后台接口,进行数据校验:

  private static final String nodeConf = AppContext.getSystemProperty("note_conf.node_conf");


    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView modeError = new ModelAndView("apps/ext/note/error");
        if (!StringUtils.hasLength(nodeConf)) {
            ModelMap errorModelMap = modeError.getModelMap();
            errorModelMap.put("errorMsg", "配置节点信息不能为空!");
            return modeError;
        }
        String[] nodeArr = nodeConf.split(",");
        String currentNodeId = request.getParameter("currentNodeId");
        boolean contains = Arrays.asList(nodeArr).contains(currentNodeId);
        if (!contains) {
            ModelMap errorModelMap = modeError.getModelMap();
            errorModelMap.put("errorMsg", "当前节点不允许添加注释!");
            return modeError;
        }
        // 后续代码省略....
        return new ModelAndView ("apps/ext/note/index");
 }

问题二:

新建流程监听类,并将该类注册到 spring 的配置文件中,文档内容:https://open.seeyoncloud.com/seeyonapi/728/734.html#%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F-3

在这里插入图片描述

  1. getLabel() 方法中返回的信息就是如下的处理名称。
    在这里插入图片描述
  2. getTemplateCode() 中的模版编号(编号内容要一致):
    应用定制平台 —— 应用管理中心 —— 应用管理 —— 选择 —— 修改 —— 流程模版设置 —— 修改 —— 流程信息设置 ——模版编号。

在这里插入图片描述

public class TestWorkflowEvent extends AbstractWorkflowEvent {

    private static final String formId = AppContext.getSystemProperty("listener_conf.form_id");
    private static final String noteCloum = AppContext.getSystemProperty("listener_conf.note_cloum");

    private FormApi4Cap4 formApi4Cap4;

    private CAP4FormDataDAO cap4FormDataDAO;

    public BidDocumentWorkflowEvent(FormApi4Cap4 formApi4Cap4, CAP4FormDataDAO cap4FormDataDAO) {
        this.formApi4Cap4 = formApi4Cap4;
        this.cap4FormDataDAO = cap4FormDataDAO;
    }


    /**
     * 唯一标示,一旦生成,不可变更
     *
     * @return
     */
    @Override
    public String getId() {
        return "1902621949435379712";
    }


    @Override
    public String getLabel() {
        return "测试监听";
    }

    /**
     * 返回指定的模版编号
     *
     * @return
     */

    public String getTemplateCode() {
        return "zbwjhs";
    }

    ;

    @Override
    public ApplicationCategoryEnum getAppName() {
        return ApplicationCategoryEnum.form;
    }

    //处理前事件
    public WorkflowEventResult onBeforeFinishWorkitem(WorkflowEventData data) {
        long affairId = data.getAffairId();
        // 进行业务处理
        return null;
    }

    //发起事件
    public void onStart(WorkflowEventData data) {
    }

将上面代码编译成 .class 放在部署后 oa 系统制定文件目录中,进行流程监听测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光头小小强007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值