【BOS】--保存菜单服务端运行过程原创
金蝶云社区-eris
eris
25人赞赏了该文章 699次浏览 未经作者许可,禁止转载编辑于2024年01月30日 10:27:16

一、说明

从前端点击保存菜单到返回结果,主要经过Web层和APP层,还有orm层(没有插件干预);Web层运行表单和列表插件,APP层运行操作插件。

二、后端的整个运行过程,大概如下时序图

image.png

三、相关的事件

1、表单插件菜单点击事件 BarItemClick

2、表单插件调用操作前事件 BeforeDoOperation

3、表单插件保存前事件 BeforeSave

4、操作插件所有事件

5、反写插件所有事件

6、表单插件保存失败后事件 AfterSaveFailed

7、表单插件保存成功后事件 AfterSave

8、表单插件保存后事件 AfterDoOperation

9、表单插件菜单点击后事件 AfterBarItemClick

四、相关的调用代码

1、view类中调用保存菜单点击事件

var dynView = this.View as IDynamicFormViewService;

 dynView.MainBarItemClick("tbSave");//tbSave为保存菜单key

2、view类中调用保存操作服务

 this.InvokeFormOperation(FormOperationEnum.Save); 

或者 var saveOp = this.View.BusinessInfo.GetForm().GetOperation(FormOperationEnum.Save)

 this.View.InvokeFormOperation(saveOp )

3、model类调用保存操作

var billModel = (IBillModel)this.Model;

  if (billModel != null)

  {

     IOperationResult result = billModel.Save();

  }

4、调用APP层保存操作

BusinessDataServiceHelper.Save(this.Context,this.View.BillBusinessInfo, this.Model.DataObject);

5、调用orm层保存操作

OperateOption option = OperateOption.Create();

DynamicObjectType dt = dataEntities[0].DynamicObjectType;

IDbDriver driver = new OLEDbDriver(this.Context);

IDataManager dataManager = DataManagerUtils.GetDataManager(dt, driver, option);

dataManager.Save(dataEntities);

五、菜单运行过程解释说明

此过程主要分为Web层和APP层,其他菜单跟此过程大同小异,只是有些不需要去调用APP层处理,比如新增操作,修改操作等只需要Web层处理。

赞 25