• 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);

     

    利用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中

     

  • 相关阅读:
    前端大文件分片上传/多线程上传
    网页大文件分片上传/多线程上传
    docker基础入门之二
    linux之iptable
    linux内核之网络协议栈
    ubuntu之iptables
    c++栈管理库TCMalloc、jeMalloc
    curl之post提交xml
    ceph基本操作整理
    docker基础入门之一
  • 原文地址:https://www.cnblogs.com/Wang-lee/p/14012554.html
Copyright © 2020-2023  润新知