我刚刚开始使用Lotus Notes进行Web服务。我希望能够创建一个生成序列号的Web服务。生成数字的代码基于我们在数据库中使用了一段时间的现有代码(只是直接莲花脚本,没有Web服务)。基本上有一个文档存储下一个号码,下一个号码被返回并更新以用于下一个呼叫保存冲突被检测到并且如果在保存号码时出现问题则再次尝试该号码。
我以为我可能会使用网络服务来生成这个号码。 Web服务是顺序还是并行处理的?因为如果它们是连续的,那么我不需要处理两个试图同时保存数字的人。
答案 0 :(得分:2)
Web服务是两个系统在没有共同语言的情况下相互通信的一种方式。
例如连接到.Net服务器的LotusScript代理。
在Domino上创建Web服务提供者(服务器)时,您可以使用LotusScript或Java对其进行编码。然后,服务器为消费者(客户端)提供WSDL文件,以编写与该Web服务通信所需的代码。
本教程应该更好地为您解释:
现在和Domino一样。 Web服务按照从服务器请求的顺序运行。然而,无法控制说“在Webservice X完成之前不要启动”。
您也可以将此代码编写到应用程序中,但除非您反击,否则会为其他用户带来严重的内存/性能问题死锁风险。
Domino服务器也可以设置为不并行运行Web服务/代理。但是你再次面临同样的问题。
如果它是唯一ID,那么您可以通过Web服务创建的文档的UNID。或者您可以通过评估使用@UNIQUE,但两者都只返回文本。
答案 1 :(得分:1)
来自Lotus Designer文档:
要在服务器上启用并发Web服务,必须在该服务器上启用并发Web代理。打开要编辑的“服务器”文档。单击“Internet协议 - Domino Web引擎”选项卡。同时启用运行Web代理。
最大并发Web服务调用数由“最大并发代理”设置确定。从Lotus Administration文档:
最大并发代理数指定允许并发运行的代理程序数。有效值为1到10.默认值为1表示白天,2表示夜间。启用更多数量的并发代理可以减轻负载很重的代理管理器,但也会减少可用于运行其他服务器任务的资源。
Lotus Notes Domino V8.5.x
答案 2 :(得分:0)
是的网络服务将并行运行。但既然你写了你的代码处理保存冲突,你应该没有问题 在2个用户的标准笔记调用中:第一个获取文档然后第二个获取文档并保存(快速两个)然后首先得到保存冲突。 总而言之,它是平行的,但这不是问题。
答案 3 :(得分:0)
我原以为默认情况下它们会依次运行,因为除非你打开它,否则异步Web代理会关闭。因此,如果你只是通过网络服务分配一个号码并且你没有改变异步设置,那么做“安全”顺序编号是一个很好的设计模式,那么你就没事了
答案 4 :(得分:0)
我还要补充一下:
Employ document locking to assure number uniqueness in sequential document numbering solution
答案 5 :(得分:0)
有一个简单的解决方案可以避免同步性考虑。
您应该使用@Unique
生成临时号码,然后使用预定代理按文档创建顺序分配序号,使用正确构成的视图仅选择未处理的文档。如果您不关心创建文档的顺序并且只关心所有数字都是唯一的,则不需要视图,您只需在未处理的文档上触发代理。
临时号码可暂时用于参考,直到分配了正确的序号。
当预定代理程序运行时,它应该使用正确的引用号发送作者确认。
答案 6 :(得分:0)
或者,您可以导出到DXL并获取标记的sequence =属性。但这仅在您访问数据库的单个实例时才有效。 DXL导出/ XML导入是一个巨大的开销。
不幸的是,我看不到从LotusScript NotesDocument轻松获取笔记序列号的方法。如果您有一个有效的支持合同,您可以打开一个问题管理报告来获取软件增强请求(“APAR”,用IBM的说法,虽然我不知道它的缩写扩展到了什么)。
祝你好运!