Alfresco Anteckningar

 
 
 
  • About

    Anteckningar under utvecklingen av Alfresco
 
Javaprogram som når både Lotus Notes och Alfresco May 21st, 2008

Vi har behov av att överföra dokument och metadata från Lotus Notes/Domino till Alfresco. Min första tanke var därför att skriva en java-agent i Lotus Notes som skulle koppla upp sig mot Alfresco men vi använder version 7 av Lotus Notes och den använder JDK version 1.4. För att nyttja Alfresco behövs JDK 1.5. Jag utvecklar därför istället i Eclips där man kan välja version av JDK.

Det problem som uppstår när koden inte körs inne i Lotus Notes är att det blir svårt att nå den aktiva sessionen med de API:er som IBM tillhandahåller. Det löste sig genom ett öppet API vid namn Domino med vilket jag enkelt kan komma åt dokument i Lotus Notes. För att nå Alfresco använder jag Web Services API och har gjort en enkel anpassning av FirstWebServiceClient.java som följer med i Alfresco SDK.

Nedan följer koden som jag använder för att koppla upp mig mot Lotus Notes. Den körs lokalt på min PC och man måste ha Notes i systemsökvägen (path) för att det ska fungera men den skulle likaväl kunna köras på servern. Hela java-filen finns här.

Även om det fungerar utan större problem funderar jag ändå på att exponera den data jag vill åt i Lotus Notes via web services istället. Det är ganska enkelt att skapa web services i Lotus Notes och det skulle bli en stadigare lösning med mer flexibilitet t.ex. skulle man enkelt kunna använda ett integreringsvektyg som Jitterbit istället för att skriva kod.

// Get Notes session
DNotesFactory factory = DNotesFactory.getInstance();

DSession session = factory.getSession();

// Open address book

DDatabase database = session.getDatabase("", "names.nsf");

System.out.println(database.getTitle());

// Open view People and get all documents

DView dv = database.getView("People");

Iterator docs = dv.getAllDocuments();

String fullname = "Not found";

String email = "Not found";

if(docs.hasNext())

{

DDocument doc = (DDocument)docs.next();

fullname = doc.getItemValueString("Fullname");

email = doc.getItemValueString("InternetAddress");

}