Business Object 开发
一 什么是BO
BO(Business Object),封装在数据库之上,用于直接操作数据(增、删、改、查)

针对不同的BO,在安装目录下有对应的DLL文件,其中封装了BO各式针对具体的业务的方法,可以直接调用BO方法进行二次开发,可以使用反编译软件查看这些源代码。
Erp.Contracts.BO.XXX.dll
Adapter是封装在BO之上的一个类,其中囊括了BO的方法,也有特有的一部分功能。
Erp.Adapters.XXX.dll
UI层可以分为两个部分,Forms窗体控件以及看不见的逻辑数据处理Transaction。
Erp.UI.XXXEntry.dll
二 特点与优势
完善的BO体系,所有的业务处理都有对应的BO。
数据的完整性,对于数据的校验以及控制十分完善。
数据的安全性。

Adapter能做什么?
同样能操作数据,但是较之BO使用更加简便。
用于搜索对话框(Adapter对应的InvokeSearch方法)
更多的事件选择(BeforeAdapterMethod事件,AfterAdapterMethod事件)
Transaction是介于UI层与Adapter之间,用于将Adapter的数据与控件进行关联以及实现UI层的特定动作。
通常一个窗体只有一个Transaction对象,即oTrans,而一个Transaction对象,可以包含多个Adapter。
直接调用UI层特定接口的方法,如每个UI层对应不同的保存方法:oTrans.Update()
说到与控件的关联非Epibinding属性莫属,使用Notify 方法实时发布数据到控件。
每个Transaction实例中包含EpiDataViews属性,包括了Forms使用到的所有EpiDataView。
三 EpiDataView应用
1 获取、修改UI层特定字段的数据
2 绑定控件的灵活性
3 更多的事件选择
4 各式向导(图像列向导、规则向导、修改扩展属性)

四 获取数据的方法
先了解一下ListDataSet 与 RowsDataSet

Epicor所有获取数据的方法都是使用BO,以下只是形式不同,本质是一样的。
1 SearchFunctions.listLookUp
优点:简单粗暴,可以选择弹出或者不弹出搜索对话框
缺点:只能获取ListDataSet的数据。
DataSet ds = SearchFunctions.listLookup(oTrans, adapterName, out recSelected, bShowDialog, whereClause);
Ice.UI.EpiUIFunctionLib.dll
2 SearchFunctions.showLookUp
优点:可以获取ListDataSet或者RowsDataSet
缺点:必须弹出搜索对话框。
DataSet ds= SearchFunctions.showLookup(oTrans, "JobEntryAdapter", out recSelected, bMutilSelect , bUseList ,whereClause);
3 利用Adapter的InvokeSearch方法。配合SearchOption使用。
优点:获取数据方式灵活,根据SearchOption不同而不同,可以修改数据。
缺点:需要定义适配器。
[范例]
string whereClause = "Key1 = '" + Key1 + "' And Key2 = '" + Key2 + "'"; System.Collections.Hashtable wcHash = new System.Collections.Hashtable(1); wcHash.Add("UD05", whereClause); SearchOptions opts = SearchOptions.CreateRuntimeSearch(wcHash, DataSetMode.RowsDataSet);
_ud05Adapter.InvokeSearch(opts);
//这样获取的数据在adapter中
//DataTable dt=_ud05Adapter.UD05Data.UD05;
if(_ud05Adapter.UD05Data.UD05.Rows.Count > 0)
{
//TODO:
}
4 利用ProcessCaller.LaunchSearch方法
优点:可以使用SearchOption,传入参数为空时,默认与listLookUp作用相同。
缺点:速度偏慢。
//第三个参数为SearchOption对象,为空时效果与listlookup相同。
DataSet ds=(DataSet)ProcessCaller.LaunchSearch(oTrans,"JobEntryAdapter","");
5 Adapter的GetRows,GetList方法
GetRows:获取RowsDataSet数据
GetList:获取ListDataSet数据
注:获取的数据与InvokeSearch不同,不在Adapter中,而是通过方法返回

6 利用Adapter的GetByID方法
优点:简单实用
缺点:不灵活,参数多数唯一或者只是主键,需要定义适配器
注:获取的数据填入Adapter中
Business Object 开发的更多相关文章
- SAP中的BOPF(Business Object Processing Framework)
希望简化你的业务应用开发过程?业务对象处理框架(Business Object Processing Framework,以下简称BOPF)也许可以帮到你. BOPF是SAP Business Sui ...
- ABAP术语-Business Object Type
Business Object Type 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/10/1033480.html Generic de ...
- ABAP术语-Business Object Builder
Business Object Builder 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/09/1031357.html Tool fo ...
- ABAP术语-Business Object
Business Object 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/07/1028364.html Represents a ce ...
- ABAP术语-BOR (Business Object Repository )
BOR (Business Object Repository ) 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/25/1013523.ht ...
- Format a Business Object Caption 设置业务对象标题的格式
In this lesson, you will learn how to format the caption of a detail form that displays a business o ...
- Business Component(BC)和Business Object(BO)
Siebel应用架构的一个成功的地方就是在应用里引入了BC,BO的概念,从而使得几千张关系数据表能够按照业务的含义组织成业务对象,对于业务人员而言具有了业务上的含义,而不仅仅是从技术人员的观点来对待数 ...
- Arc Object开发,概述2
简介 Esri公司推出的ArcGIS产品是一个非常强大的体系,里面包含ArcGIS Desktop.ArcGIS Server.ArcGIS Engine.ArcSDE.ArcGIS Online等, ...
- SAP CRM 7.0中的BOL(Business Object Layer)
业务对象层(BOL)和通用交互层(GenIL)属于业务层. 业务对象层: 在CRM WebClient会话运行期间,业务对象层存储业务对象的数据以及它们属性和关系的定义. 通用交互层 通用交互层将 ...
- 信息设计工具IDT创建从SAP Business Object到SAP HANA的连接
1. 打开Information Design Tool, 并添加BO Server的连接 2. 在Connection上右击, 选择Insert Relational Connection 3. 输 ...
随机推荐
- Angular Material 18+ 高级教程 – CDK Observers
前言 Observers 是 Angular Material 对游览器原生 MutationObserver 的上层封装.主要用于监听 add/remove Node. 不熟悉的朋友可以先看这篇 D ...
- Linux 循环设备 loop疑惑
什么是loop设备? loop设备是一种伪设备,是使用文件来模拟块设备的一种技术,文件模拟成块设备后, 就像一个磁盘或光盘一样使用.在使用之前,一个 loop 设备必须要和一个文件进行连接.这种结合方 ...
- 聊聊 HTAP 的前世今生
随着现代社会大型实时分析应用的逐渐流行,关系型数据库已经难以处理高并发的事务请求.商业层面上,当全球进入数字化时代,数字化技术渗透到各行各业,同时产生了海量数据,数据的存储和应用是企业决策的重要依据之 ...
- 常见的mysql 函数 字符串函数
1. concat (s1,s2,....sn) 字符串拼接,将 s1,s2,... sn 拼接成一个字符串 : 2. lower(str) 将字符串全部转换成小写 3. upper(str) 将字符 ...
- NTPShell
NTPShell 获取地址:https://github.com/aplyc1a/NTPShell 通过NTP协议来负载C2数据. 编译 gcc ntp.c -lpthread -o ntp 使用 c ...
- jenkins 配置flyway报错No value provided for placeholder expressions: ${name}
业务场景:使用flyway将一个数据库的变更同步到另一个数据库,数据同步到一半的时候报错 No value provided for placeholder expressions: ${name}. ...
- 云原生周刊:KubeSphere 3.4.1 发布 | 2023.11.13
开源项目推荐 Inspektor Gadget Inspektor Gadget 是一组用于调试和检查 Kubernetes 资源与应用程序的工具(或小工具).它在 Kubernetes 集群中管理 ...
- 轻量级网络-ShuffleNetv2 论文解读
摘要 1.介绍 2.高效网络设计的实用指导思想 G1-同样大小的通道数可以最小化 MAC G2-分组数太多的卷积会增加 MAC G3-网络碎片化会降低并行度 G4-逐元素的操作不可忽视 3.Shuff ...
- C++之OpenCV入门到提高002:加载、修改、保存图像
一.介绍 今天是这个系列<C++之 Opencv 入门到提高>得第二篇文章.今天这个篇文章很简单,只是简单介绍如何使用 Opencv 加载图像.显示图像.修改图像和保存图像,先给大家一个最 ...
- Avalonia跨平台上位机控件开发之水泵
Avalonia跨平台上位机控件开发之水泵 随着国产化的推进,越来越多的开发者选择使用跨平台的框架来创建上位机应用,而Avalonia正是一个优秀的选择.本文将探讨如何利用Avalonia框架进行水泵 ...