菜单的运行过程
一、大概过程
1.运行视图层主菜单点击事件业务逻辑
1)触发BarItemClick事件
2)调用各种服务
3)触发AfterBarItemClick事件
2.循环菜单上配置的各种服务
3.运行标准服务的业务逻辑
1)触发BeforeDoOperation事件
2)运行各种业务逻辑,包括调用业务层业务逻辑
3)结果不为空触发AfterDoOperation事件
4.运行业务层业务逻辑
1)运行各种验证服务
2)运行各种服务
3)把修改数据保存到数据库
4)触发操作插件事件
二、保存菜单运行过程
1.运行视图层主菜单点击事件业务逻辑
var dynView = this.View as IDynamicFormViewService;
if (dynView != null)
{
dynView.MainBarItemClick("tbSave");//tbSave为菜单key
}
1)通过保存菜单key:tbSave找到菜单
var barManager =this.LayoutInfo.GetFormAppearance().Menu;
var saveBarItem = barManager.GetBarItem("tbSave")
2)触发BarItemClick事件
3)调用保存操作服务
4)触发AfterBarItemClick事件
2.调用保存操作服务
//标准服务操作
FormOperation fromOp = this.View.BusinessInfo.GetForm().GetOperation("Save");//Save为操作代码
//实际操作类,fromOp.Operation为操作代码等于上面的save
IFormOperation op = this.View.GetFormOperation(fromOp.Operation);
var isSuccess= this.View.InvokeFormOperation(op);//操作是否成功
1)判断是否有操作权限
2)触发BeforeDoOperation事件
3)开启网控
4)调用数据层保存操作,并返回结果
5)处理结果(保存后是否要提交,审核等)
6)释放网控,结果不为空触发AfterDoOperation事件
3.调用数据层保存操作
var billModel = (IBillModel)this.Model;
if (billModel != null)
{
IOperationResult result = billModel.Save();
}
1)清理空行,设置一些默认值,比如FFormId,修改人等
2)触发BeforeSave事件
3)调用业务层保存操作
4)处理结果,比如加上默认行
5)触发AfterSave事件
4.调用业务层保存操作
BusinessDataServiceHelper.Save(this.Context,this.View.BillBusinessInfo, this.Model.DataObject);
1)验证数据,操作中配置的验证服务,默认验证,插件中增加的验证等
2)处理各种业务逻辑,设置单据状态,内码,编码,创建人,创建时间,调用反写等
3)运行各种服务,配置的,默认的,插件的服务等
4)保存数据到数据库
5)在这过程中触发各种操作插件事件
三、各阶段调用操作涉及到的代码:
1. 需要引用的命名空间
using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.Core.Bill; using Kingdee.BOS.ServiceHelper;
2.调用代码
//调用菜单 var dynView = this.View as IDynamicFormViewService; if (dynView != null) { dynView.MainBarItemClick("tbSave");//tbSave为菜单key } //调用标准服务操作 //标准服务操作 FormOperation fromOp = this.View.BusinessInfo.GetForm().GetOperation("Save");//Save为操作代码 //实际操作类,fromOp.Operation为操作代码等于上面的save IFormOperation op = this.View.GetFormOperation(fromOp.Operation); var isSuccess = this.View.InvokeFormOperation(op);//操作是否成功 //调用model层的保存 var billModel = (IBillModel)this.Model; if (billModel != null) { IOperationResult result = billModel.Save(); } //调用业务层的保存操作 BusinessDataServiceHelper.Save(this.Context, this.View.BillBusinessInfo, this.Model.DataObject);
菜单的运行过程
本文2024-09-23 04:19:10发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164545.html