lotusscript代理呼叫另一个Lotusscript代理不起作用

时间:2019-05-17 19:29:08

标签: lotus-domino

1。)在Web表单上,我有一个Notes按钮(不是HTML输入或按钮标签).....它使用@Command([RunAgent];“ agentname”)命令调用Lotusscript代理。 ..效果很好

2。)其最后一行使用“ runonserver”调用另一个Lotusscript代理

3。)第二个代理尝试使用“ DocumentContext”来标识当前文档,但似乎无法做到这一点,我记录的错误表明情况确实如此。

所以我的问题是...如何运行第一个代理,并成功使用“ DocumentContext”,然后调用第二个代理,然后让该代理将SAME文档标识为第一个使用的文档?第二个代理有其自己的:

  • 将dim作为新的笔记会话
  • 将db调为notesdatabase
  • 将此文档视作记事文档
  • 设置db = s.currentdatabase

...然后尝试使用以下命令设置此文档: 设置thisdoc = s.DocumentContext

第二个代理在其他地方用作主要代理(在菊花链情况下不会被呼叫),并且一切正常。

也许有一个简单的解决方案我暂时没有想到。我知道我可以在按钮后面放置两个@Command([RunAgent] ...命令,但这有其自身的挑战,所以我想知道是否有人对我的工作有一些精明/聪明的想法。

2 个答案:

答案 0 :(得分:2)

DocumentContext是传递给代理的内存构造,因此database.documentcontext中没有此类内容。您需要做的是将DocumentContext保存为文档,然后将NoteID(而不是UNID)传递给第二个代理。看看这是否适合您。

https://www.ibm.com/developerworks/lotus/library/ls-Run_and_RunOnServer/index.html

答案 1 :(得分:2)

由于您正尝试通过按钮和RunOnServer调用使用相同的代理,并且这行不通(根据@Duston的回答),因此最好的选择可能是将大部分代理代码移入脚本库中的一个子或函数,然后有两个代理。一个代理程序像现在一样获取文档上下文,并将其传递到脚本库代码中。另一个使用agent.paramaterID和getDocumentById并将其传递到脚本库代码中。