|
In dit onderwerp een stukje over hoe je in een Java Agent een gedeelde bibliotheek kunt gebruiken:
Als eerste maak je eerst een gedeelde Java bibliotheek, in dit voorbeeld een routine om een gedeelte van een string te vervangen:
public class Global { public static String replaceSubstring(String str, String pattern, String replace) { int s = 0; int e = 0; StringBuffer result = new StringBuffer();
while ((e = str.indexOf(pattern, s)) >= 0) { result.append(str.substring(s, e)); result.append(replace); s = e+pattern.length(); } result.append(str.substring(s)); return result.toString(); } }
In dit geval noemen we de bibliotheek globalfunctions. (Blijkbaar mag je bij het opslaan van de bibliotheek wel kiezen voor namen als global.java, maar we kwamen er achter dat als je een bibliotheek met een punt in de naam wilt toevoegen aan een project dit niet goed wordt opgeslagen!)
Nu kunnen we in een Agent (in dit geval gewoon een Java agent, hoe dit moet vanuit een LotusScript agent beschrijven we later nog wel op het forum) de bibliotheek toevoegen door in de Designer te kiezen voor "Edit Project". Kies de database waar de bibliotheek in staat, zorg dat en voeg hem toe.
Nu zijn er twee methodes mogelijk om de functie(s) uit deze bibliotheek aan te roepen. De eerste is met een rechtstreekse aanroep uit een Agent, bijvoorbeeld:
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); // input: Porsche 911 String newstring = new String(Global.replaceSubstring("Porsche 911","911","944")); System.out.println(newstring); // output: Porsche 944 } catch(Exception e) { e.printStackTrace(); } } }
De tweede methode is om eerst Global te definiëren en dan de aanroep te doen:
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try { Session session = getSession(); AgentContext agentContext = session.getAgentContext(); Global car = new Global(); // input: Porsche 911 String newstring = new String(car.replaceSubstring("Porsche 911","911","944")); System.out.println(newstring); // output: Porsche 944 } catch(Exception e) { e.printStackTrace(); } } }
Het verschil in beide methodes is afhankelijk van de bedoeling van de code, en is niet van belang in dit voorbeeld.
De functionaliteit is het zelfde als het aanroepen van een functie uit een class die direct in het huidige project zou staan. Voordeel van deze manier is natuurlijk dat het nu mogelijk is om een gedeelde functie op meerdere plekken te gebruiken (agents, Webservices e.d.), en de code maar op een plek onderhouden hoeft te worden.
|