NC后端扩展开发

2 篇文章 0 订阅
1 篇文章 0 订阅

前言

在日常的工作中,会遇到各种各样的需要进行扩展开发的需求,可以使用系统预留的扩展开发机制来实现,避免修改源码。因NC产品已迭代至BIP版本,所以前端扩展方式就再进行不赘述了,本文主要介绍后端扩展开发方式,适用于NC6、NCC、BIP版本,本文以采购订单新增后举例。

一、业务事件扩展

1.1、在private端创建Java类,实现nc.bs.businessevent.IBusinessListener接口;

1.2、打开【动态建模平台】-【开发配置】-【业务插件注册】;

1.3、逐级找到对应单据的对应事件源,注册扩展开发后的业务插件,并保存;

1.4、注册后,启动开发环境,在前端单据界面新增单据点击保存,就会进入到扩展开发后的业务插件类。

备注:如果在【业务插件注册】中找不到想要扩展的事件源,则不推荐使用业务事件扩展。如果确实需要,则需要修改单据源码支持业务事件扩展。

 二、业务规则扩展

2.1、确认单据动作是否支持业务规则扩展,找到对应单据动作实现类,并跟踪源码找到BP类;

如果源码中出现如图红框内所示代码,则单据新增动作支持业务后规则扩展,新增动作扩展插入点为nc.bs.pu.m21.plugin.OrderPluginPoint.INSERT。插入点确认后,需要获取业务组件名、模块名、插入点这三个属性,在下面组装规则类注册SQL时需要用到;

2.2、在private端创建Java类,实现nc.impl.pubapp.pattern.rule.IRule<E>接口,接口泛型为单据聚合VO;

2.3、因规则类在前端无界面进行注册,则需要通过后台数据库中执行新增数据的形式进行规则类的注册,规则类注册表:pub_pluginitem,字段解析如下:

 规则类注册示例SQL:

INSERT INTO pub_pluginitem(creationtime, creator, dr, industrytype, iorder, localtype, modifiedtime, modifier, pk_pluginitem, ts, vcomponentname, vdescription, veventtype, vextendmodule, vextendpointname, vextendtype, vmodulename, vruleclass, vtargetclass) VALUES (NULL, '~', 0, '~', 1, '~', NULL, '~', '1001Z8VTAX000006447Z', '2023-09-04 16:00:00', '21', '采购订单新增后规则类', 'after', 'test', 'INSERT', 'addAfter', 'PO', 'nc.rule.test.m21.PoOrderInsertAfterRule', NULL);

2.4、规则类注册后,启动开发环境,在前端单据界面新增单据点击保存,就会进入到扩展开发后的业务规则类。

备注:

1、如果在单据动作源码中找不到想要的扩展插入点,则不推荐使用业务规则扩展。如果确实需要,则需要修改单据源码支持业务规则扩展;

2、如果扩展规则类 nc.rule.test.m21.PoOrderInsertAfterRule 在部署至NC服务中时,补丁位置为home/modules/test/META-INF/classes文件夹下,则 vextendmodule字段值为 test,如果为其他模块,则进行相应的变更。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晓_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值