2012-03-27 8 views
3

Wir müssen eine SSJS-Bibliothek in einer Datenbank mit DXL importieren. Dafür haben wir ein Java-Agenten geschrieben und seinen Code geht in etwa so:SSJS-Skriptbibliothek mit DXL in eine Datenbank importieren

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(); 
      } 
     } 
    } 
} 

Die Datei C: \ tempssjslib.xml enthält eine SSJS Bibliothek, die ich in Domino Designer erstellt und dann exportiert mit „Extras> DXL Utilities> Exporter "(zu Testzwecken). Aber wenn ich diese Agent-Bibliothek ausführen wird nicht in der Datenbank importiert werden. Es gibt keinen Fehler in DxlImporter.getLog() auch.

Ich habe versucht, ähnliche Prozedur mit XPages, Form, LotusScript-Skript-Bibliothek und war erfolgreich in der Lage, sie zu importieren. Aber derselbe Agent kann die SSJS-Bibliothek nicht importieren.

Gibt es etwas, das ich im Code verpasst habe? Können wir die SSJS-Bibliothek mit DXL in die Datenbank importieren?

Antwort

1

Es sieht so aus, als ob das Exporter-Tool (oder vielleicht sogar der DXLexporter) nicht alle benötigten Felder exportiert. Wenn Sie dies manuell in der dxl-Datei einfügen, kurz vor dem Eintrag name = '$ ServerJavaScriptLibrary' ..., wird es erfolgreich importiert.

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

Danke Fähre für den genauen Code. Es funktioniert auch, indem Sie nur das Tag für $ Flags einschließen. – Naveen

1

Wenn Sie die importierte Notiz-ID drucken und diese in einem geeigneten Tool (Ytria oder Notespeek) analysieren, werden Sie feststellen, dass das Problem im Feld $ Flags liegt.

Ich erstellte eine Test-SSJS-Bibliothek und $ Flags-Feld enthält ".5834Q". Aber der importierte hat nur "34Q".

Ich habe nicht die genaue Referenz für diese Flaggen, aber es kann ein guter Anfang sein. Manuelles Überschreiben dieses Feldes funktioniert erfolgreich, aber dieses Flag kann einige wertvolle Informationen enthalten.

Es scheint wie ein Fehler für mich.

Darüber hinaus hat YTria Tool eine gute Referenz über $ flags Feldinhalt.

+0

Ja, es ist das Feld $ flags, das in der exportierten Datei fehlt. Diese Referenz sollte für alle SSJS-Bibliotheken funktionieren. –

+0

Danke Serder und Fähre. Die $ Flags Felder waren tatsächlich das Problem. – Naveen

1

Sie Ihr Leben leichter und verwenden Sie den Import/Export-Plug-in auf OpenNTF gefunden: http://www.openntf.org/blogs/openntf.nsf/d6plinks/NHEF-7YAAF6 Es hat eine ANT-API, so dass Sie Vorgänge automatisieren können. Benötigt Domino Designer, daher passt es möglicherweise nicht zu Ihrem Anwendungsfall. Alternativ (nicht angekreuzt): Haben Sie sich angesehen, ob webDAV die Skriptbibliotheken verfügbar macht?

Verwandte Themen