单店Xpages是如何工作的?

单店Xpages是如何工作的?,xpages,Xpages,我在许多不同的数据库中使用了许多XPAges设计元素。如果我读对了维基,那么单个商店就是要么全有要么全无。 因此,我希望在数据库中创建独特的设计,但使用来自单个存储位置的可重用XPages元素集。维基上说: 除了在每个实例应用程序中使用与默认XPage同名的伪XPage或空白XPage外,“实例”是否包含XPage设计元素是否重要 否。如果在应用程序上设置了SCXD,则会忽略数据库上的所有XPages设计元素,并且应用程序会使用SCXD数据库上的设计元素 如果是这种情况,那么我必须创建数据库,其

我在许多不同的数据库中使用了许多XPAges设计元素。如果我读对了维基,那么单个商店就是要么全有要么全无。 因此,我希望在数据库中创建独特的设计,但使用来自单个存储位置的可重用XPages元素集。维基上说: 除了在每个实例应用程序中使用与默认XPage同名的伪XPage或空白XPage外,“实例”是否包含XPage设计元素是否重要

否。如果在应用程序上设置了SCXD,则会忽略数据库上的所有XPages设计元素,并且应用程序会使用SCXD数据库上的设计元素


如果是这种情况,那么我必须创建数据库,其中大约75%的代码是可重用的,但我必须重复它,并在几十个单独的数据库中维护它。可怜

XPages和相关元素自定义控件、SSJS库、Java代码可以像其他设计元素一样从特定模板继承。因此,我将设置一个名为Core Components.ntf或.nsf的数据库,模板名为Core Components。然后在目标数据库中的各个元素上,您可以将继承设置为专门来自CoreComponents模板。然后,每个数据库唯一的元素不会从任何模板继承。然后,您可以使用文件应用程序刷新设计来更新具有特定继承的元素,并且该数据库中唯一的元素不会被覆盖


刷新后确实需要进行干净的构建,因此我建议您将核心组件数据库保存在本地或与其他服务器不同的服务器上,以便日常设计任务不会更新它们,从而导致xsp元素损坏。

XPages和相关元素自定义控件、SSJS库、,Java代码可以像其他设计元素一样从特定模板继承。因此,我将设置一个名为Core Components.ntf或.nsf的数据库,模板名为Core Components。然后在目标数据库中的各个元素上,您可以将继承设置为专门来自CoreComponents模板。然后,每个数据库唯一的元素不会从任何模板继承。然后,您可以使用文件应用程序刷新设计来更新具有特定继承的元素,并且该数据库中唯一的元素不会被覆盖


刷新后,您确实需要执行干净的构建,因此,我建议您将核心组件数据库保存在本地或与其他服务器不同的服务器上,以便日常设计任务不会更新它们,从而导致损坏的xsp元素。

IBM在多个应用程序中重用XPage工件的首选模型是创建利用这些组件的OSGi插件

演示如何将现有自定义控件设计元素设置为库组件,然后可以在任何具有库的应用程序中使用,而无需将设计元素单独复制到每个应用程序。当部署新版本的库时,对该组件的任何后续更改都会立即应用于使用该组件的任何应用程序

如果你真的有几十个应用程序都共享某些功能,但整个设计不应该在所有应用程序中都是相同的,那么OSGi模型肯定是一条出路

但是为什么不把整个模型翻转过来呢?传统上,我们总是将代码和数据放在同一个地方,例如同一个NSF,因为通过另一个NSF中的代码访问一个NSF中的数据,尤其是直观地表示数据是一件痛苦的事情。那不再是真的了。为什么仅仅因为数据存在于几十个地方就有几十个应用程序?XPages中的任何数据源都可以知道数据所在的位置。。。您可以将中央用户界面链接到任意数量的远程数据存储—同一服务器上的不同NSF,甚至其他服务器上的数据库

例如,RedPill将这一点发挥到了逻辑的极致:他们部署了一个NSF,作为所有数据的门户,而不管这些数据存在于何处。各种NSF和Reader字段的ACL仍然确保用户不会窥探他们没有被授予访问权限的数据,并且他们有复杂的分析算法来确定用户真正关心的数据。但是如果你在域中有500个NSF,你就不能维护500个不同的代码模板。。。它实际上只是1;但只有一个用户界面,用户才能找到所有数据并与之交互

你当然不必把这个前提推到极端,但也许你可以确定,比如说,5个应用程序的UI和/或业务逻辑相似甚至相同,但数据只存在于多个地方。创建一个用于与所有数据交互的中心应用程序。创建一个主页,为用户提供一种选择他们试图访问哪个应用程序的方法,或者,如果他们应该只访问一个应用程序,则计算该应用程序是哪个应用程序,然后在他们进入t o对于特定的应用程序,只需将数据源绑定到相关NSF,而不是假设每个视图或文档与代码位于同一NSF中


了解可扩展性API仍然是一个好主意,这不仅是为了代码的可重用性,而且也是为了了解平台的行为有多少真正在我们的控制范围内——当然,如果我们愿意偶尔编写一些自定义Java代码的话。但如果您不再使用我们在Domino中长期习惯性维护的代码和数据之间的一对一映射,我可以保证您会更喜欢这种方法。。。为了易于实现和维护,以及它为最终用户提供的相对简单性。

IBM在跨多个应用程序重用XPage工件方面的首选模型是创建利用

演示如何将现有自定义控件设计元素设置为库组件,然后可以在任何具有库的应用程序中使用,而无需将设计元素单独复制到每个应用程序。当部署新版本的库时,对该组件的任何后续更改都会立即应用于使用该组件的任何应用程序

如果你真的有几十个应用程序都共享某些功能,但整个设计不应该在所有应用程序中都是相同的,那么OSGi模型肯定是一条出路

但是为什么不把整个模型翻转过来呢?传统上,我们总是将代码和数据放在同一个地方,例如同一个NSF,因为通过另一个NSF中的代码访问一个NSF中的数据,尤其是直观地表示数据是一件痛苦的事情。那不再是真的了。为什么仅仅因为数据存在于几十个地方就有几十个应用程序?XPages中的任何数据源都可以知道数据所在的位置。。。您可以将中央用户界面链接到任意数量的远程数据存储—同一服务器上的不同NSF,甚至其他服务器上的数据库

例如,RedPill将这一点发挥到了逻辑的极致:他们部署了一个NSF,作为所有数据的门户,而不管这些数据存在于何处。各种NSF和Reader字段的ACL仍然确保用户不会窥探他们没有被授予访问权限的数据,并且他们有复杂的分析算法来确定用户真正关心的数据。但是如果你在域中有500个NSF,你就不能维护500个不同的代码模板。。。它实际上只是1;但只有一个用户界面,用户才能找到所有数据并与之交互

你当然不必把这个前提推到极端,但也许你可以确定,比如说,5个应用程序的UI和/或业务逻辑相似甚至相同,但数据只存在于多个地方。创建一个用于与所有数据交互的中心应用程序。创建一个主页,让用户可以选择要访问的应用程序,或者,如果一开始只能访问一个应用程序,则可以计算该应用程序是哪一个,然后在用户导航到特定应用程序后,只需将数据源绑定到相关NSF,而不是假设每个视图或文档与代码位于同一NSF中


了解可扩展性API仍然是一个好主意,这不仅是为了代码的可重用性,而且也是为了了解平台的行为有多少真正在我们的控制范围内——当然,如果我们愿意偶尔编写一些自定义Java代码的话。但如果您不再使用我们在Domino中长期习惯性维护的代码和数据之间的一对一映射,我可以保证您会更喜欢这种方法。。。为了易于实施和维护,以及它为最终用户提供的相对简单性。

您可以将模板技术和所有代码结合在一个数据库中:

将应用程序设计分为两部分:数据部分和代码部分

数据部分包含所有Notes视图。如果它是一个经典的Notes应用程序,它还将包含Notes客户端的所有设计元素,如表单、子表单、框架等

代码部分包含所有xpage、自定义控件、CSS、客户机/服务器JavaScript库、主题、图像、jar等等

将75%的通用代码放入masterData.ntf和masterCode.ntf

应用程序代码数据库appCodeX.ntf继承masterCode.ntf的所有设计元素,并包含其他特定于应用程序的设计元素

来自所有应用程序模板的代码在allCode.ntf中统一。它继承masterCode.ntf中的所有代码,并继承应用程序模板中的附加代码

在此基础上创建一个allCode.nsf

在数据方面,您使用经典的模板方式

从这里开始,您必须了解以下可能性:

您使用单拷贝XPage设计-使用allCode.nsf连接每个appData数据库

< p> 将allCode.nsf中的XPages与appData数据库连接

我喜欢后者。您可以在allCode.nsf中定义所有应用程序数据数据库所在的位置,例如在属性文档中


使用图中所示的方法,您仍然能够轻松地分离应用程序,例如,如果您想出售它们。您已经为每个应用程序提供了一个单独的模板。

您可以将模板技术和所有代码结合在一个数据库中:

将应用程序设计分为两部分:数据部分和代码部分

数据部分包含所有Notes视图。如果它是一个经典的Notes应用程序,它还将包含Notes客户端的所有设计元素,如表单、子表单、框架等

代码部分包含所有xpage、自定义控件、CSS、客户机/服务器JavaScript库、主题、图像、jar等等

将75%的通用代码放入masterData.ntf和masterCode.ntf

应用程序代码数据库appCodeX.ntf继承masterCode.ntf的所有设计元素,并包含其他特定于应用程序的设计元素

来自所有应用程序模板的代码在allCode.ntf中统一。它继承masterCode.ntf中的所有代码,并继承应用程序模板中的附加代码

在此基础上创建一个allCode.nsf

在数据方面,您使用经典的模板方式

从这里开始,您必须了解以下可能性:

您使用单拷贝XPage设计-使用allCode.nsf连接每个appData数据库

将allCode.nsf中的XPages与appData数据库连接

我喜欢后者。您可以在allCode.nsf中定义所有应用程序数据数据库所在的位置,例如在属性文档中


使用图中所示的方法,您仍然能够轻松地分离应用程序,例如,如果您想出售它们。每个应用程序都有一个单独的模板。

我一直在寻找单个存储,因为当多个数据库使用同一个元素时,服务器会在内存中保留它的单个实例,这可能会提高性能。我以前使用过ntf解决方案,它是有效的,我同意你的观点,但看起来单拷贝XPage是一个全有或全无的解决方案,这真的太糟糕了。我之所以选择单存储,是因为当同一个元素被多个DBs使用时,服务器在内存中保留它的一个实例可能会提高性能。我以前使用过ntf解决方案,它是有效的,我同意你的观点,但单拷贝XPage似乎是一个全有或全无的解决方案,这真的太糟糕了。如果像我们的许多客户一样,政策不允许它在服务器上安装OSGi插件,那么这是一个好办法。通过这种方式,应用程序的所有部分都在nsf文件中,因此易于部署。如果像我们的许多客户一样,政策不允许在服务器上安装OSGi插件,那么这是一种很好的方式。这样,应用程序的所有部分都在nsf文件中,因此易于部署。