一、说明
从前端点击保存菜单到返回结果,主要经过Web层和APP层,还有orm层(没有插件干预);Web层运行表单和列表插件,APP层运行操作插件。
二、后端的整个运行过程,大概如下时序图
三、相关的事件
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层处理。
推荐阅读