菜单的运行过程

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

菜单的运行过程

一、大概过程

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


菜单的运行过程

一、大概过程1.运行视图层主菜单点击事件业务逻辑1)触发BarItemClick事件2)调用各种服务3)触发AfterBarItemClick事件2.循环菜单上配置的...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息