在设计任何视图或组件的时候,我们需要以可复用的方式来设计它。UI组件设计的主要目标即可复用。
例如:几乎每个事务都要处理合作伙伴(客户)。如果我们想要在Web UI显示那些合作伙伴,需要设计一个视图。我们将不会为服务合同设计一个单独的合作伙伴视图、为服务订单设计一个、为服务确认设计一个、再为机会设计一个。
相反,我们应该做的是,设计一个视图,并且在不同的事务中复用它。
为了使视图可复用,我们需要做一些步骤。
首先,我们需要把视图设计为可以从外部获取数据的形式。
第二,我们需要把视图分配给一个窗口。
第三,窗口应当暴露在运行时资源库中的界面视图(InterfaceView)部分。
第四,需要的组件控制器的上下文节点应暴露在ComponentInterface->InterfaceController->Context。
之后我们可以通过创建组件用法(Component Usages)在任意组件复用这个视图。
让我们通过一个练习例子一一地在细节上讨论所有要点。在本文的最后一节,我们将尝试复用组件BTPARTNER中的一个视图 ‘PARTNER’。
1,视图必须可以从外部获取数据
通常的外部数据(从另一个UI组件中而来的),提供给组件控制器的上下文节点。因此,应当在组件控制器的上下文节点和视图的上下文节点之间创建绑定。并不需要直接地绑定,我们只需要确保从组件控制器上下文节点到我们希望复用的视图的上下文节点的数据流。
可以看到视图PARTNER中的BTPARTNERSET上下文节点被绑定给了组件控制器的上下文节点。
2,将视图分配给窗口
视图应该被分配给一个窗口。之后,窗口会在运行时资源库中被暴露为一个组件的界面视图。
前往运行时资源库。
Partner视图被分配给了窗口。我们可以在这里添加其它窗口,并让每个窗口都有一个分配给它的视图,让每一个视图都成为可复用的单元。
3,窗口应当暴露在界面视图项
前往运行时资源库->ComponentInterface。添加窗口PartnerList,使之成为一个界面视图。
4,组件控制器节点
需要的组件控制器的上下文节点应暴露在ComponentInterface->InterfaceController->Context。
上下文节点BTPARTNERSET已经暴露在这个项。将一个上下文节点暴露在这个项会使其可以被不同的UI组件的其它上下文节点所绑定。我们可以使用一个特殊的组件控制器方法WD USAGE INITIALIZ来绑定不同UI组件的上下文节点。
可以开始在我们自己的组件中复用这个视图了。接下来是在其它组件的操作。
在另一个组件中复用视图
前往组件->运行时资源库并且创建一个组件用法。点击编辑按钮,右击ComponentUsage,选择选项Add Component Usage.
在出现的对话框中,为组件用法(Component Usage)和我们希望复用的界面视图(InterfaceView)命名。
内容输入后,选择继续。现在这个界面视图会在你自己的组件中作为视图存在。
把这个视图添加给OverviewPage概览页.
保存运行时资源库。前往OverviewPage的配置标签页,添加新的视图以显示分配对象展示区(Assignment block)。
现在我们需要注意数据。在先前的操作中,我们知道组件BTPARTNER中有一个上下文节点BTPARTNERSET。因此我们将在我们自己的组件控制器中创建一个新的、相同的上下文节点。
前往组件控制器并且创建使用基本实体(base entity)BTPartnerSet创建一个上下文节点。
为基本实体命名,完成向导。
我们已经创建了上下文节点。接下来我们需要把数据交给这个上下文节点。
无法通过配置来实现,让我们用代码来做它。
如我们所知,在结果视图的事件处理器(用户点击超链接时触发),我们获取了BTAdminh实体。我们将从它获取相关的BTPARTNER SET并且将其提供给组件控制器的上下文节点。
按照下图修改事件处理器。保存并激活之。
(这只是针对以上情景进行代码修改的部分,前面的代码保留原样。)
一旦我们获取了BTAdminh的头实体,我们使用关系获取它的相关实体BTPARTBERSET。获取相关记录后我们将其添加到集合(collection)中,这个集合会被提供给组件控制器的上下文节点。
向组件控制器提供数据完成。一件更重要的事是将你的组件控制器的上下文节点和BTPARTNER组件的上下文节点绑定。像上面说过的那样,我们将使用方法WD USAGE INITIALIZE来做这件工作。
前往组件控制器并且重新定义上面提到的方法。
重定义后,双击方法打开它,写下如下代码并激活。
在不同的组件的上下文节点间分析数据的工作就这样完成了。
测试该应用,如果服务合同有任何合作伙伴,数据将显示在合作伙伴的分配对象展示区中。