本文介绍如何将规则控件BusinessRuleControl嵌入到SAPUI5应用视图中。RuleBuilder组件是一个规则控件的容器,可以捆绑不同的可视化方法。目前唯一可用的可视化是决策表。RuleBuilder定义了UI开发人员要遵循的通用规则UI消费模式和API。在此示例中,我们创建了一个将使用引导程序输入模式的决策表。效果如下:条件可以切换:if条件然后可以编辑结果:在xml视图中,我们使用的控件来自命名空间sap.rules.ui的标准控件:RuleBuilder,type属性为DecisionTable现在我们需要将ExpressionLanguage对象关联并连接到RuleBuilder,控件通过OData模型加载其数据。表达式语言提供规则编写、规则可视化和规则内容验证所需的服务。表达式语言对象提供的服务包括表达式验证、表达式解析、自动完成建议、表达式元数据和标记的检索以及运行时服务的执行,例如获取数据对象、输出等。特定词汇表的词汇OData模型和绑定上下文路径是强制性的表达语言的输入。表达式语言对象是RuleBuilder对象的关联,它可以关联多个RuleBuilder对象。我们可以根据项目的实际需求自定义Page.controller.js。设置表达式语言对象:oExpressionLanguage=newsap.rules.ui.services.ExpressionLanguage();oRuleBuilder.setExpressionLanguage(oExpressionLanguage);如果使用DMNSFEEL(Expressionlanguage2.0),代码如下:oAstExpressionLanguage=newsap.rules.ui.services.AstExpressionLanguage();oRuleBuilder.setAstExpressionLanguage(oAstExpressionLanguage);确保在设置词汇模型之前设置数据表达式语言,如图:oExpressionLanguage.setData(data);oExpressionLanguage.setModel(that.oVocabularyModel);Controlcontroller的完整代码如下:sap.ui.define(['jquery.sap.global','sap/ui/core/mvc/Controller','sap/ui/model/odata/v2/ODataModel','sap/rules/ui/services/ExpressionLanguage',//对于DMNSFEEL语言,使用'AstExpressionLanguage'.'sap/ui/core/util/MockServer','sap/m/MessageToast'],function(jQuery,Controller,ODataModel,ExpressionLanguage,MockServer,MessageToast){//对于DMNSFEEL语言,使用'AstExpressionLanguage'而不是'ExpressionLanguage'。“使用严格”;返回Controller.extend(“sap.rules.ui.sample.GuidedDecisionTable.Page",{onInit:function(){sap.ui.getCore().applyTheme("sap_belize");//为桌面应用紧凑密度,否则为舒适设计this.getView().addStyleClass(sap.ui.Device.system.desktop?"sapUiSizeCompact":"sapUiSizeCozy");varmPath=sap.ui.require.toUrl("sap/rules/ui/sample/GuidedDecisionTable")+"/";//初始化表达式语言服务this.oVocabularyMockServer=newMockServer({rootUri:"/sap/opu/odata/SAP/vocabulary_srv/"});this.oVocabularyMockServer.simulate(mPath+"localService/vocabulary/metadata.xml",{'sMockdataBaseUrl':mPath+"localService/vocabulary/mockdata/"});this.oVocabularyMockServer.start();this.oVocabularyModel=newODataModel("/sap/opu/odata/SAP/vocabulary_srv/");this.oExpressionLanguage=newExpressionLanguage();//对于DMNSFEEL,使用“newAstExpressionLanguage();”。this.oExpressionLanguage.setModel(this.oVocabularyModel);this.oExpressionLanguage.setBindingContextPath("/Vocabularies('FA163E38C6481EE785F409DCAD583D43')");//初始化规则生成器this.oRuleMockServer=newMockServer({rootUri:"/sap/opu/odata/SAP/RULE_SRV/"});this.oRuleMockServer.simulate(mPath+"localService/rule/metadata.xml",{'sMockdataBaseUrl':mPath+"localService/rule/mockdata/"});varaRequests=this.loadRequests(mPath);this.oRuleMockServer.setRequests(aRequests);this.oRuleMockServer.start();this.oRuleModel=newODataModel({serviceUrl:"/sap/opu/odata/SAP/RULE_SRV/",defaultBindingMode:sap.ui.model.BindingMode.TwoWay});varoRuleBuilder=this.byId("ruleBuilder");oRuleBuilder.setModel(this.oRuleModel);oRuleBuilder.setExpressionLanguage(this.oExpressionLanguage);oRuleBuilder.setBindingContextPath("/Rules(Id='FA163E38C6481EE785F409DCAD583D43',Version='000000000000000001')");},handleEditButton:function(){this.oEditButton="varbyEditButton()编辑按钮);varoRuleBuilder=this.byId("ruleBuilder");varbEdit=(oEditButton.getText()==="Edit");oRuleBuilder.setEditable(bEdit);oEditButton.setText(bEdit?"Display":"Edit");},onAfterRendering:function(){//此演示不支持行操作varoRuleBuilder=this.byId("ruleBuilder");varoDecisionTable=oRuleBuilder.getAggregation("_rule");varoToolbar=oDecisionTable.getAggregation("_toolbar");vararrContent=oToolbar.getContent();对于(vari=0;i
