繁体   English   中英

在XPage上载中从LotusScript调用Java代理

[英]Calling Java agent from LotusScript in XPages upload

我正在使用带有标准文件上传控件的XPage上传文件。 在数据源上,我有一个WebQuerySave代理。

WQS-agent在LotusScript中。

用户正在上传XML文件,我们有一个现有的帮助库来帮助解析正在上传的XML - 这就是WQS在LotusScript中的原因。

由于我无法将上传的文件分离到服务器,因此我调用Java代理只是将XML读取为字符串并将其存储在文档中。

我正在使用param文档调用Java代理,这些都是基本的东西。

在param doc中,我包含了包含附件的文档的UniversalID,这是我的问题!

Java代理声称UniversalID无效:

“HTTP JVM:4091无效的通用ID”

但是,如果我尝试在LotusScript代理中找到该文档,则在调用Java代理之前,使用相同的UNID找到该文档:Set tempDoc = db.Getdocumentbyunid(unid)

Java代码:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import lotus.domino.Agent;
import lotus.domino.AgentBase;
import lotus.domino.AgentContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;
import lotus.domino.Session;

public class JavaAgent extends AgentBase {
    public void NotesMain() {
        try {
            Session session = getSession();
            AgentContext agentContext = session.getAgentContext();
            Database db = agentContext.getCurrentDatabase();
            Agent agent = agentContext.getCurrentAgent();

            // Get document used for passing data
            System.out.println(agent.getParameterDocID());

            Document paramDoc = db.getDocumentByID(agent.getParameterDocID());
            String UniversalID = paramDoc.getItemValueString("unid");

            System.out.println(UniversalID);
            Document doc = db.getDocumentByUNID(UniversalID);

当我运行Java代理时,我不会从打印命令中获得任何内容,但可能是预期的......(?)

如果我在现有文档上手动运行所有文件就可以了。 但不是通过浏览器提交的文档。

对我而言,感觉包含附件的文档尚未准备好使用Java。

Domino 8.5.3

非常感谢任何帮助!

/ J

PS我是Java新手,所以你知道.. ;-)

您是否可以将扩展库与extlibx包一起使用? 如果是这样,那么已经内置了一个XML解析器sbt.XmlNavigator。 请参阅XPages Extension Library一书的第13章。 可能值得注意避免调用调用Java代理的LotusScript代理。 您可以使用Java中的这些包,但也可以使用SSJS。 关闭绑带并使用它(或者其他基于Java的XML解析器,我确信有一些)可能更容易。 现在可能有点工作,但对未来会更有用。

我似乎记得上下文文档有一个临时的UNID,当你调用save()方法时,它会被更改为永久值。 所以我最好的猜测是你的LotusScript代码在保存它之前正在读取上下文文档的universalId属性。

因此,如果我是对的,只需移动您的调用以获取LotusScript代理中的universalId属性,直到您保存上下文文档,并将该值传递给Java代理。

请记住在将paramDoc传递给Java代理之前将其保存在LotusScript代理中。

我能解决它的唯一方法是将documentContext中的所有项目复制到我在数据库中创建的新文档中。

  • 保存
  • 检索此新文档的UNID
  • 将它传递给agent.run - java并且它有效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM