我创建了一个Xpage,允许管理员将单个Notes文档(它们是契约) ID输入到编辑框中,然后按下按钮删除合同。删除调用一个传递合同ID的代理。下面是按钮脚本,然后是代理的相关部分。所发生的只是将第一个字符传递给代理,即,如果合同ID为9MXCB 4,则在代理消息框将其打印到日志时只传递"9“。我在这里做错什么了?如果在消息框后硬编码合同ID,则合同将被正确处理。
按钮码
ag = database.getAgent("DeleteOneContract");
noteid = getComponent("ContractIDDelete").getValue()
ag.run(noteid)代理代码的一部分
Dim runAgent As NotesAgent
Dim deleteID As Variant
deleteID = runAgent.Parameterdocid
MsgBox "Input is " & deleteID
'If line below is uncommented it processes the Contract correctly
'deleteID = "9MXCB4"
' Rest of agent process
....请注意,我也尝试过runAgent.Target和runAgent.Query
发布于 2015-05-02 11:21:22
要对杰西和马克的正确答案多加思考:从AJF的问题中,我们无法判断Xpage是否绑定到实际的NotesDocument对象,或者它是否是一个(临时的)独立页面。当然,在这种情况下,agent.runWithDocumentContext将无法工作。
但是,除非您有充分的理由使用LotusScript编码来执行剩下的任务:为什么首先使用代理?为什么不直接使用SSJS代码执行删除呢?在流程的Xpages方面,您很可能必须从SSJS代码开始,这与Mark的示例非常相似,但是为什么不继续用两三行完成它呢?
实际上,我试图避免直接从Xpages驱动的应用程序中调用代理,这是因为性能问题,而且我不希望我的代码散落在各处。
发布于 2015-05-01 10:59:08
只是测试了它,当我传递给它一个有效的NoteID时,代理就可以读取它了。我不认为您可以通过这种方式将NoteID以外的任何其他值传递给代理。
另一种选择可能是在将文档发送到代理之前使用agent.runWithDocumentContext(doc)方法并检索文档。
发布于 2015-05-01 10:53:55
我认为note参数实际上必须是字符串形式的十六进制数字。它不需要与数据库中的实际便笺ID对齐,但它只能包含0-9和a(可能有大小上限)。
https://stackoverflow.com/questions/29985333
复制相似问题