NC后端扩展开发

前言

在日常的工作中,会遇到各种各样的需要进行扩展开发的需求,可以使用系统预留的扩展开发机制来实现,避免修改源码。因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,如果为其他模块,则进行相应的变更。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/120736.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FreeRTOS】【应用篇】消息队列【下篇】

前言 本篇文章主要对 FreeRTOS 中消息队列的概念和相关函数进行了详解消息队列【下篇】详细剖析了消息队列中发送、接收时队列消息控制块中各种指针的行为&#xff0c;以及几个发送消息和接收消息的函数的运作流程笔者有关于 【FreeRTOS】【应用篇】消息队列【上篇】——队列基…

redis 数据结构(二)

整数集合 整数集合是 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素&#xff0c;并且元素数量不时&#xff0c;就会使用整数集这个数据结构作为底层实现。 整数集合结构设计 整数集合本质上是一块连续内存空间&#xff0c;它的结构定义如下&#xff1a; typed…

nginx使用详解

文章目录 一、前言二、nginx使用详解2.1、nginx特点2.2 静态文件处理2.3 反向代理2.4 负载均衡2.5 高级用法2.5.1 正则表达式匹配2.5.2 重定向 三、总结 一、前言 本文将详细介绍nginx的各个功能使用&#xff0c;主要包括 二、nginx使用详解 2.1、nginx特点 高性能&#xff…

Unity中Shader的面剔除Cull

文章目录 前言一、Unity中Shader的面是否剔除&#xff0c;是由我们自己决定的二、暴露一个属性来控制 剔除模式三、如何区分正反面 前言 Unity中Shader的面剔除 Cull Off | Back | Front 一、Unity中Shader的面是否剔除&#xff0c;是由我们自己决定的 使用 Cull Off | Back |…

Pygame中Trivia游戏解析6-3

3.3 Trivia类的show_question()函数 Trivia类的show_question()函数的作用是显示题目。主要包括显示题目框架、显示题目内容和显示题目选项等三部分。 3.3.1 显示题目的框架 在show_question()函数中&#xff0c;通过以下代码显示题目的框架。 print_text(font1, 210, 5, &q…

【AI】数学基础——数理统计(概念参数估计)

概率论 文章目录 3.6 数理统计概念与定理3.6.1 概率论与数理统计区别3.6.2 基本定理大数定理马尔科夫不等式切比雪夫不等式中心极限定理 3.6.3 统计推断的基本问题 3.7 参数估计3.7.1 频率派点估计法矩阵估计法极大似然估计点估计量的评估 区间估计 3.7.2 贝叶斯派贝叶斯定理条…

Spring Boot 整合 Shiro(后端)

1 Shiro 什么是 Shiro 官网&#xff1a; http://shiro.apache.org/ 是一款主流的 Java 安全框架&#xff0c;不依赖任何容器&#xff0c;可以运行在 Java SE 和 Java EE 项目中&#xff0c;它的主要作用是对访问系统的用户进行身份认证、 授权、会话管理、加密等操作。 …

【ARM CoreLink CCI-400 控制器简介】

文章目录 CCI-400 介绍 CCI-400 介绍 CCI&#xff08;Cache Coherent Interconnect&#xff09;是ARM 中 的Cache一致性控制器。 CCI-400 将 Interconnect 和coherency 功能结合到一个模块中。它支持多达两个ACE master 点的interface&#xff0c;例如&#xff1a; Cortex-A…

[Mac软件]Adobe After Effects 2023 v23.5 中文苹果电脑版(支持M1)

After Effects是动画图形和视觉效果的行业标准。由运动设计师、平面设计师和视频编辑用于创建复杂的动画图形和视觉上吸引人的视频。 创建动画图形 使用预设样式为文本和图形添加动画效果&#xff0c;或逐帧调整它们。编辑、添加深度、制作动画或转换为可编辑的路径&#xff…

【Python】pytorch,CUDA是否可用,查看显卡显存剩余容量

CUDA可用&#xff0c;共有 1 个GPU设备可用。 当前使用的GPU设备索引&#xff1a;0 当前使用的GPU设备名称&#xff1a;NVIDIA T1000 GPU显存总量&#xff1a;4.00 GB 已使用的GPU显存&#xff1a;0.00 GB 剩余GPU显存&#xff1a;4.00 GB PyTorch版本&#xff1a;1.10.1cu102 …

【C++】C++面向对象编程三大特性之一——继承

❤️前言 本篇博客主要是关于C面向对象编程中的三大特性之一的继承&#xff0c;希望大家能和我一起共同学习进步&#xff01; 正文 我们刚刚学习一块全新的知识&#xff0c;首先简单关注一下它的概念和简单的使用方法。 继承的概念及定义 继承的概念 继承的概念&#xff1a;…

HDFS HA 高可用集群搭建详细图文教程

目录 一、高可用&#xff08;HA&#xff09;的背景知识 1.1 单点故障 1.2 如何解决单点故障 1.2.1 主备集群 1.2.2 Active、Standby 1.2.3 高可用 1.2.4 集群可用性评判标准&#xff08;x 个 9&#xff09; 1.3 HA 系统设计核心问题 1.3.1 脑裂问题 1.3.2 数据状…

从C++98到C++26,经历了什么?

作为一名程序员&#xff0c;2023年最应该关注的话题就是C的标准更新。 C标准遵循3年开发周期&#xff0c;并以发布年份命名。C在临发布的一年前会进入“功能冻结期&#xff08;feature freeze&#xff09;”&#xff0c;即版本开发进入半稳定状态&#xff0c;不再添加重大功能及…

【RPC 协议】序列化与反序列化 | lua-cjson | lua-protobuf

文章目录 RPC 协议gRPCJSON-RPC 数据序列化与反序列化lua-cjsonlua-protobuf RPC 协议 在分布式计算&#xff0c;远程过程调用&#xff08;英语&#xff1a;Remote Procedure Call&#xff0c;缩写为 RPC&#xff09;是一个计算机通信协议。该协议允许运行于一台计算机的程序调…

机器学习部分知识点总结

文章目录 基本概念N与NP泛化能力性能度量比较检验 线性回归逻辑回归神经网络 基本概念 N与NP P问题&#xff1a;一个问题可以在多项式&#xff08;O(n^k) 的时间复杂度内解决 例如&#xff1a;n个数的排序&#xff08;不超过O(n^2)&#xff09; NP问题&#xff1a;一个问题的解…

Leetcode 16.07 最大数值

编写一个方法&#xff0c;找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。 示例&#xff1a; 输入&#xff1a; a 1, b 2 输出&#xff1a; 2 我的答案&#xff1a; 为了找出两个数中的较大者&#xff0c;而不使用比较或条件语句&#xff0c;我们可以…

常见的几种排序算法

目录 一、插入排序 1、直接插入排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、希尔排序 2.1、排序方法 2.2、图解分析 2.3、代码实现 二、选择排序 1、直接选择排序 1.1、排序方法 1.2、图解分析 1.3、代码实现 2、堆排序 2.1、排序方法 2.2、图解分析 …

视频监控/视频汇聚/视频云存储EasyCVR平台接入国标GB协议后出现断流情况,该如何解决?

视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。安防监控平台EasyCVR既具备传统安防视频监控的能…

优思学院|亲和图案例:寻找六西格玛的项目

什么是亲和图&#xff1f; 亲和图&#xff08;Affinity Diagram&#xff09;主要功能在於分类归纳&#xff0c;协助在一堆杂乱无章的资料之中&#xff0c;有系统的归纳出几个大类&#xff0c;以利后续作业。通常先利用头脑风暴&#xff08;Brainstorming&#xff09;方式得到大…

K8S:K8S自动化运维容器

目录 一.k8s概述 2.为什么要用K8S 3.作用及功能 4.k8s容器集群管理系统 二.K8S的特性 1.弹性伸缩 2.自我修复 3.服务发现和复制均衡 4.自动发布和回滚 5.集中化配置管理和秘钥管理 6.存储编排 7.任务批量处理运行 三.K8S的集群架构 四.K8S的核心组件 1.Master组件 …