一  什么是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);

利用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:
    }

利用ProcessCaller.LaunchSearch方法

优点:可以使用SearchOption,传入参数为空时,默认与listLookUp作用相同。
缺点:速度偏慢。

//第三个参数为SearchOption对象,为空时效果与listlookup相同。
DataSet ds=(DataSet)ProcessCaller.LaunchSearch(oTrans,"JobEntryAdapter","");

Adapter的GetRows,GetList方法 

GetRows:获取RowsDataSet数据
GetList:获取ListDataSet数据
注:获取的数据与InvokeSearch不同,不在Adapter中,而是通过方法返回

利用Adapter的GetByID方法

优点:简单实用
缺点:不灵活,参数多数唯一或者只是主键,需要定义适配器
注:获取的数据填入Adapter中

Business Object 开发的更多相关文章

  1. SAP中的BOPF(Business Object Processing Framework)

    希望简化你的业务应用开发过程?业务对象处理框架(Business Object Processing Framework,以下简称BOPF)也许可以帮到你. BOPF是SAP Business Sui ...

  2. ABAP术语-Business Object Type

    Business Object Type 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/10/1033480.html Generic de ...

  3. ABAP术语-Business Object Builder

    Business Object Builder 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/09/1031357.html Tool fo ...

  4. ABAP术语-Business Object

    Business Object 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/07/1028364.html Represents a ce ...

  5. ABAP术语-BOR (Business Object Repository )

    BOR (Business Object Repository ) 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/25/1013523.ht ...

  6. 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 ...

  7. Business Component(BC)和Business Object(BO)

    Siebel应用架构的一个成功的地方就是在应用里引入了BC,BO的概念,从而使得几千张关系数据表能够按照业务的含义组织成业务对象,对于业务人员而言具有了业务上的含义,而不仅仅是从技术人员的观点来对待数 ...

  8. Arc Object开发,概述2

    简介 Esri公司推出的ArcGIS产品是一个非常强大的体系,里面包含ArcGIS Desktop.ArcGIS Server.ArcGIS Engine.ArcSDE.ArcGIS Online等, ...

  9. SAP CRM 7.0中的BOL(Business Object Layer)

    业务对象层(BOL)和通用交互层(GenIL)属于业务层. 业务对象层:   在CRM WebClient会话运行期间,业务对象层存储业务对象的数据以及它们属性和关系的定义. 通用交互层 通用交互层将 ...

  10. 信息设计工具IDT创建从SAP Business Object到SAP HANA的连接

    1. 打开Information Design Tool, 并添加BO Server的连接 2. 在Connection上右击, 选择Insert Relational Connection 3. 输 ...

随机推荐

  1. RxJS 系列 – Mathematical and Aggregate Operators

    前言 前几篇介绍过了 Creation Operators Filtering Operators Join Creation Operators Error Handling Operators T ...

  2. ASP.NET Core C# 反射 & 表达式树 (第一篇)

    前言 以前就写过几篇关于反射和表达式树的学习笔记, 但是写的很乱. 最近常用到反射和表达式树, 所以特别写一篇做一个整理吧. 泛型和反射 表达式树 学习笔记 c# 常用反射和表达式树整理 反射在项目中 ...

  3. Hydra(海德拉)工具使用从0到1,爆破服务器密码,2024最新版

    Hydra(海德拉)工具使用从0到1,爆破服务器密码,2024最新版 Hydra简介 Hydra又叫九头蛇,是一款由著名的黑客组织THC开发的开源暴力破解工具,支持大部分协议的在线密码破解,是网络安全 ...

  4. Unreal Engine4 GPU崩溃或3D设备丢失的解决方案

    起因: Unreal Engine4 在渲染时报错GPU崩溃或3D设备丢失 解决办法: regedit  打开注册表 在以下2个路径下 新建 DWORD(32-bit) Value 命名为  TdrD ...

  5. foobar2000 v2.1.6 汉化版

    foobar2000 v2.1.6 汉化版 -----------------------[软件截图]---------------------- -----------------------[软件 ...

  6. Windows 10 LTSC 2019(1809) WSL 安装 CentOS 7

    1.安装WSL    通过控制面板--程序和功能--启用或关闭WIndows功能,勾选"适用于Linux的Windows子系统".    或者通过管理员权限打开 PowerShel ...

  7. USB编码方式(NRZI)及时钟同步方式

    1.概述 在同步通讯系统中,两个设备通讯则需要同步信号,同步信号分为时钟同步信号和自同步信号两种,时钟同步方式在通讯链路上具有时钟信号(IIC.SPI),自同步方式在通讯链路中没有同步信号(PCIE. ...

  8. C++第五节课 函数默认值 函数重载

    #include <iostream> using namespace std; // C++的函数默认值和函数重载 // 函数参数的入栈规则从右往左开始入栈 // 函数重载机制(第一种静 ...

  9. 4. 说一下ts

    TypeScript 是微软基于JavaScript开发的开源编程语言,是js的超集,扩展了js语法并添加了静态类型,可以兼容js所有的运行平台: js 是弱类型语言 , ts 是强类型语言 : js ...

  10. python中利用变量解压列表、元组、字符串、字典、文件对象、迭代器和生成器等序列

    一.如果知道序列中元素的个数,可以直接进行变量赋值. coords = (102, 40) lon, lat = coords print(lon) print(lat) text = "n ...