菜单的运行过程

一、大概过程
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.M
菜单的运行过程
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



