CosmoCode
  • Great software.

  • Bright people.

  • Happy customers!

CosmoCode GmbH
  • Start
  • Geschäftsfelder
  • Über uns
  • Referenzen
  • Blog
  • Open Source
←
Alle Blogposts
→

Publizieren in Rhino

Heute will ich erklären, wie man in formelCMS aus Rhino einen publish anstösst. Der Hintergrund: will man dynamsich Seiten zur Content-Base zufügen (zum Beispiel über die Kommentar-Funktion eines Blogs ;-), so sollten diese Dokumente sowohl im CMS-Repository als auch im Live-Repository eingetragen werden. Der komfortabelste Weg dafür ist, diekre die im CMS bereits vorhandenen Funktionen der Publikation zu verwenden.

Detlef Hüttemann, 09.11.2005 16:02

Publizieren in Rhino

Heute will ich erklären, wie man in formelCMS aus Rhino einen publish anstösst. Der Hintergrund: will man dynamsich Seiten zur Content-Base zufügen (zum Beispiel über die Kommentar-Funktion eines Blogs ;-), so sollten diese Dokumente sowohl im CMS-Repository als auch im Live-Repository eingetragen werden. Der komfortabelste Weg dafür ist, diekre die im CMS bereits vorhandenen Funktionen der Publikation zu verwenden.

Da formelCMS JAVA/Rhino basiert ist, kann man per Rhino-Scripting direkt auf die formelCMS API zugreifen. Dies hat zudem den Vorteil, dass der Publish auch protokolliert wird und nachtäglich in der Publish-Übersicht eingesehen werden kann.

In formelCMS wird ein Publish als Job (Thread) gestartet und läuft asynchron ab; somit sind auch keine Verzögerungen/Blockaden zu erwarten, wenn dies innerhalb eines Seitenaufrufs geschieht.

Aufruf in einer Seite:

   var list = new Packages.java.util.ArrayList();

   list.add( path1 );
   list.add( ... );
   list.add( path15 );

   var job = publish( list );
   job.start();

   // das war es !

Benutzte Funktion:

   function publish( list ) {
        var fromRep = config.lookup( "PreviewRepository") ;
        var toRep = config.lookup( "LiveRepository") ;

        var fromSession = null;
        var toSession = null;
        try {

            fromSession = fromRep.createSession(true) ;
            toSession = toRep.createSession(true) ;

            var sync = new Packages.com.cosmocode.cms.rep.sync.Synchronizer( 
                null, fromRep, fromSession, toRep, toSession ) ;
            sync.setComparator( new Packages.com.cosmocode.cms.rep.sync.SelectAllComparator() ) ;

            var resolver = new Packages.com.cosmocode.cms.rep.sync.UpdateIdCollector( 0, null) ;

            sync.synchronize( resolver, list ) ;

            var results = resolver.getList() ;

            var update = new Packages.com.cosmocode.cms.rep.sync.Update( 
                "publish", path.ROOT, "SYSTEM", fromRep.getSystem(), new Date(), results ) ;

            var scheduler = config.lookup("UpdateScheduler");

            var updateJob = new Packages.com.cosmocode.cms.rep.sync.UpdateJob(
                null, fromRep, toRep, update, scheduler ) ;

            return updateJob;
 
        } finally {
            if ( fromSession != null ) fromSession.close() ;
            if ( toSession != null ) toSession.close() ;
        }

    }

Zu Beachten ist, dass der UpdateScheduler in der formel-Konfig-Datei eingetragen werden muss. Die benutzte Funktion publish lässt sich natürlich bequem in eine zentrale Komponente auslagern.


Mehr zum Thema

  • rhino again
  • jsr223/javax.script experiences and problems
  • Collections.sort in Rhino
  • The return of flat formel
  • Intelligente Android REST Autocompletion
  • ApacheCon Amsterdam 2009; first impressions
  • Maven - Java Project Management
  • Launch TheLabelFinder.com
  • CosmoCode sucht studentische Mitarbeiter (JAVA Entwickler)
  • Palava 1.0 released

Kontakt

Wir freuen uns sehr über Ihr Interesse!
Sie erreichen uns hier:

CosmoCode GmbH

Prenzlauer Allee 36G
10405 Berlin

Telefon: +49 30 814 50 40 70

Telefax: +49 30 2809 7093


mail: info@cosmocode.de

CosmoCode GmbH  
   

© CosmoCode 2021 | Impressum | Datenschutz | Cookies verwalten

Schließen
Deutsch Englisch
  • Jobs