2012-03-27 8 views
3

DXLを使用してデータベースにSSJSライブラリをインポートする必要があります。このために、私たちは、Javaエージェントに書かれているし、そのコードは次のようなものになる:データベースでDXLを使用してSSJSスクリプトライブラリをインポートする

import lotus.domino.*; 
public class JavaAgent extends AgentBase { 
    private DxlImporter importer = null; 
    public void NotesMain() { 
     try { 
      Session session = getSession(); 
      AgentContext agentContext = session.getAgentContext(); 

      String filename = "C:\\tempssjslib.xml"; 

      Stream stream = session.createStream(); 
      if (stream.open(filename) & (stream.getBytes() > 0)) { 
       Database importdb = session.getCurrentDatabase(); 
       importer = session.createDxlImporter(); 
       importer.setReplaceDbProperties(true); 
       importer.setReplicaRequiredForReplaceOrUpdate(false); 
       importer.setAclImportOption(DxlImporter.DXLIMPORTOPTION_REPLACE_ELSE_IGNORE); 
       importer.setDesignImportOption(DxlImporter.DXLIMPORTOPTION_REPLACE_ELSE_CREATE); 
       importer.importDxl(stream, importdb); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     finally { 
      try { 
       System.out.println(importer.getLog()); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

ファイルC:\ tempssjslib.xmlは、私は、Domino Designerで作成し、「ツール>を使用してエクスポートSSJSライブラリが含まれていますがDXL Utilities> Exporter "(テスト目的)。しかし、私がこのエージェントライブラリを実行するとではなく、がデータベースにインポートされます。 DxlImporter.getLog()にもエラーはありません。

XPages、Form、LotusScriptスクリプトライブラリと同様の手順を試してみましたが、正常にインポートできました。しかし、同じエージェントはSSJSライブラリをインポートすることができません。

私がコードで見逃したことはありますか? DXLを使用してSSJSライブラリをデータベースにインポートできますか?

答えて

1

エクスポータツール(またはおそらくDXLexporter)が必要なすべてのフィールドをエクスポートしていないようです。 dxlファイルの中でitem name = '$ ServerJavaScriptLibrary' ...行の直前にこれを手動で追加すると、その行が正常にインポートされます。

<item name='$Flags'><text>.5834Q</text></item> 
<item name='$TITLE'><text>...name of the SSJS library...</text></item> 
+0

正確なコードはフェリーにありがとう。また、$ Flagsのタグを入れるだけで動作します。 – Naveen

1

インポートされたメモIDを印刷し、それを適切なツール(YtriaまたはNotespeek)で分析すると、問題が$フラグフィールドにあることがわかります。

私はテストSSJSライブラリを作成し、$ Flagsフィールドには ".5834Q"が含まれています。しかし、輸入されたものは「34Q」しか持っていません。

私はそれらのフラグの正確な参照を持っていませんが、それは良いスタートかもしれません。手動でこのフィールドを上書きすると正常に動作しますが、このフラグには重要な情報が含まれている可能性があります。

私にはバグのようです。

さらに、YTriaツールには、$ flagsフィールドの内容についての良いリファレンスがあります。

+0

はい、エクスポートされたファイルには、$ flagsフィールドがありません。この参照はすべてのSSJSライブラリで有効です。 –

+0

サーダーとフェリーに感謝します。 $ Flagsフィールドは本当に問題でした。 – Naveen

1

はあなたのライブをより簡単に作成し、インポート/エクスポートを使用して、プラグインOpenNTFで発見:http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7YAAF6をあなたが操作を自動化することができますので、それは、ANT APIを持っています。 Domino Designerが必要なため、ユースケースに合わない場合があります。代わりに(チェックしていない):WebDAVがスクリプトライブラリを公開しているかどうか調べましたか?

関連する問題