U9的插件主要分为3种,即
(1)BE插件
(2)UI插件
(3)BP/SV插件

1.新建类库解决方案

2.新建插件类,并引用以下dll,UBF安装目录U9.VOB.Product.UBF\UBFStudio\Runtime
UFSoft.UBF.Analysis.Exceptions.dll
UFSoft.UBF.Business.dll
并继续接口UFSoft.UBF.Eventing.IEventSubscriber

3.实现接口代码,以之前做过的礼品单据作为插件对象,则要引入礼品单据的BE的dll,并复制以下代码,据实际情况实现逻辑

class GiftDocBEPlugExtend : UFSoft.UBF.Eventing.IEventSubscriber
{ public void Notify(params object[] args)
{
//throw new NotImplementedException();
if (args == null || args.Length == || !(args[] is UFSoft.UBF.Business.EntityEvent))
{
return;
} BusinessEntity.EntityKey key = ((UFSoft.UBF.Business.EntityEvent)args[]).EntityKey;
if (key == null)
{
return;
} //以下代码实现业务逻辑
HomaGiftDoc doc = key.GetEntity() as HomaGiftDoc;
if (doc == null)
{
return;
} if (doc.DocNo == "")
{
throw new Exception("单号不能为空!");
} for (int i = ; i < doc.HomaGiftDocLine.Count; i++)
{
if (doc.HomaGiftDocLine[i].ItemQty <= )
{
throw new Exception("行" + doc.HomaGiftDocLine[i].RowNo + "数量不能小于0!");
}
}
}
}

插件实现代码

4.编译后,据错误分别引用需要的dll

5.配置文件,配置文件命名建议以命名空间作为前缀,后缀必须为.sub.xml

6.配置文件节点说明
Homa.test.ch01.GiftDocBE.sub.xml

<?xml version="1.0" encoding="utf-8" ?>
<pub-sub>
<subcription event="Homa.test.ch01.GiftDocBE.HomaGiftDoc.Validate">
<subscriber type="GiftDocPlug.GiftDocBEPlugExtend,GiftDocPlug.dll" />
</subcription>
</pub-sub>

event:为调用的实体(Homa.test.ch01.GiftDocBE.HomaGiftDoc)+触发事件(如:Validate、Inserting、Inserted、Updating、Updated)
type:命名空间+类名,程序集dll名(命名空间.dll)

7.部署插件
(1)拷贝生成的dll至Portal\ApplicationServer\Libs
(2)拷贝配置文件至Portal\bin

8.最后看看运行效果

插件开发--BE插件开发的更多相关文章

  1. 插件开发-UI插件开发

    1.新建类库解决方案,引入命名空间,同时引入要添加UI Form的WebPart(在Portal\UILib目录下) 2.继续UFSoft.UBF.UI.Custom.ExtendedPartBase ...

  2. Chrome插件开发,美化网页上的文件列表。chrome-extension,content-scripts

    趁着2018年还剩最后几天,发几篇博客,荒废太久了,惭愧. 最近也是需求驱动,研究了下Chrome插件开发.来看一下我们公司运维提供的日志查看页面 所有项目的日志都参杂在一起,每次去找都很痛苦.慢慢发 ...

  3. 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构

    Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...

  4. JavaScript学习笔记(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  5. jira的插件开发流程实践

    怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...

  6. Vue插件开发入门

    相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...

  7. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  8. JavaScript学习总结(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  9. [Tool] Open Live Writer插件开发

    一 前言 Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开 ...

随机推荐

  1. c语言第8次作业

    #include<stdio.h> int main() { ]={}; int m; ; ;m<;m++) { a[m]=m+; !=&&a[m]%!=) n++; ...

  2. java.sql.SQLSyntaxErrorException: ORA-00936: 缺失表达式。

    今天遇到一个很奇怪的问题,sql报表达式错误,于是我把报错的那句sql(红色)放到数据库中执行,没有报错啊!百思不得其解! 呼!我已经提醒自己去注意看黑色的console信息了,得到了传参的参数值,但 ...

  3. TortoiseGit状态图标不能正常显示的解决办法

    1:确认是不是64bit 系统上装了 32bit 的 TortoiseGit,如果是的话,这个只要再安装 64bit 的 TortoiseGit就可以 了,如果不是,请往下看.   2:在开始菜单的搜 ...

  4. GetKeyboardType获取键盘类型(通过键盘可初步判断用户使用的是台式电脑还是笔记本电脑)

    函数功能:该函数获取系统当前键盘的信息. int WINAPI GetKeyboardType( __in int nTypeFlag ); 参数说明:nTypeFlag:指定要获取的键盘信息的类型, ...

  5. An invalid form control with name='' is not focusable.

    是因为<form></form>里面还有hide()元素的缘故,把隐藏的放在表单外面就好了

  6. SQL中EXISTS的用法

    比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FR ...

  7. ExtJs combobox模糊匹配

    下拉列表模糊查询(重要代码): listeners : { beforequery : function(e) { var combo = e.combo; if(!e.forceAll){ var ...

  8. 关于在left join的on子句中限制左边表的取值时出现非期望的结果

    使用的SQL大概是这样的: select * from A left join B on A.id=B.id and A.id>10; --错误的使用 我们期望的结果集应该是 A中的id> ...

  9. Openbox中指定目录打开程序

    现在遇到这样的情况,在浏览器的下载中,点击在文件夹中显示, 结果这个使用系统调用的是Baobab,一款分析磁盘使用情况的软件,而不是使用目录浏览程序,例如nautilus 查询后知道,系统使用xdg- ...

  10. 实现一个自适应网页用到的css知识

    1 div导致父级高度没有变化是应该子元素设置了float:left等 2 div元素居中 text-align:center; margin-left: auto;margin-right: 3 大 ...