簡體   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