Thema dieser Dokumentation / Das FirstSpirit 5 Modul- / Komponenten-Modell / Von Gadgets, Aspects, Brokern und Agents / Agents / Das Interface BrokerAgent
Das Interface BrokerAgent
Package: de.espirit.firstspirit.agency
Ein SpecialistsBroker bietet über unterschiedliche „Spezialisten“ (Agents) Zugriff auf bestimmte Dienste oder Informationen. Einige Agents benötigen einen projektgebundenen SpecialistsBroker (z. B. ProjectAgent), andere können auch auf einem Broker ohne Projektbindung angefordert werden (z. B. ServerInformationAgent) ( Informationen zum Interface SpecialistsBroker siehe Das Interface SpecialistsBroker).
Generell gilt, über jede Instanz vom Typ SpecialistsBroker ohne Projektbindung kann eine neue Instanz vom Typ SpecialistsBroker mit Projektbindung geholt werden. Der Wechsel von einem projektungebundenen zu einem projektgebundenen SpecialistsBroker erfolgt über das Interface BrokerAgent.
Ein BrokerAgent wird über ein Objekt vom Typ SpecialistsBroker mithilfe der Methode <S> S requireSpecialist(SpecialistType<S> type) angefordert:
...
final BrokerAgent brokerAgent =
_context.getBroker().requireSpecialist(BrokerAgent.TYPE);
...
Alle FirstSpirit-Kontexte, die von BaseContext ableiten (z. B. GuiScriptContext), sind zugleich auch eine Instanz vom Typ SpecialistsBroker. In diesem Fall kann die Methode <S> S requireSpecialist(SpecialistType<S> type) auch direkt auf dem Kontext aufgerufen werden, z. B.über:
//!Beanshell
import de.espirit.firstspirit.agency.BrokerAgent;
context.requireSpecialist(BrokerAgent.TYPE);
Das Interface BrokerAgent bietet u.a. Zugriff auf folgende Methoden:
@Nullable SpecialistsBroker getBroker(@NotNull String symbolicProjectName): Diese Methode kann nur auf einem projektgebundenen SpecialistsBroker aufgerufen werden. Der Methode wird ein symbolischer Projektname aus einer Remote-Projektkonfiguration übergeben. Die Methode liefert eine weitere Instanz vom Typ SpecialistsBroker zurück, die an das Remote-Projekt gebunden ist oder null falls kein Remote-Projekt mit diesem symbolischen Projekt-Namen im aktuellen Projekt-Kontext existiert. Mithilfe der an das Remote-Projekt gebundenen Instanz vom Typ SpecialistsBroker können anschließend weitere Aktionen im Remote-Projekt ausgeführt werden (siehe Beschreibung zum Interface SpecialistsBroker in Das Interface SpecialistsBroker).
Beispiel: „Project_A“ besitzt eine Remote-Konfiguration zum „Project_Remote“: Der BrokerAgent wird hier über den GuiScriptContext geholt. Da der GuiScriptContext in diesem Fall eine an das „Project_A“ gebundene Instanz vom Typ SpecialistsBroker ist, kann über den Aufruf der Methode #getBroker(…) auf dieser Instanz, auf alle Remote-Projekte von „Project_A“ zugegriffen werden – in diesem Fall auf das Projekt mit dem symbolischen Projektnamen „Project_Remote“:
//!Beanshell
import de.espirit.firstspirit.agency.BrokerAgent;
brokerAgent = context.requireSpecialist(BrokerAgent.TYPE);
sp1 = brokerAgent.getBroker("Project_Remote");
projectAgent =
sp1.requireSpecialist(de.espirit.firstspirit.agency.ProjectAgent.TYPE);
print ("\t" + "Project Name: " + projectAgent.getName());
@Nullable SpecialistsBroker getBroker(long revision): Diese Methode kann nur auf einem projektgebundenen SpecialistsBroker aufgerufen werden. Der Methode wird die gewünschte Revision des aktuellen Projektes übergeben. Die Methode liefert eine weitere Instanz vom Typ SpecialistsBroker zurück, die an die übergebene Revision des Projektes gebunden ist oder null, falls die Revision im Projekt nicht existiert. Über diese Methode kann also ein bestimmter Projektstand geholt werden. So liefert beispielsweise eine Instanz vom Typ StoreElementAgent, die über einen solchen SpecialistsBroker geholt wird, nur Informationen über StoreElement-Objekte, die in dieser Revision vorhanden sind.
Ein Spezialist vom Typ BrokerAgent kann auch über eine Instanz vom Typ SpecialistsBroker zur Verfügung gestellt werden, der keine Projektbindung besitzt. In diesem Fall liefern die Methoden #getBroker(symbolicProjectName) und #getBroker(revision) null zurück. |
@Nullable SpecialistsBroker getBrokerByProjectName(@NotNull String projectName): Die Methode kann auf projektgebundenen und auf projektungebundenen Instanzen vom Typ SpecialistsBroker aufgerufen werden. Der Methode wird ein gültiger FirstSpirit-Projektname übergeben. Die Methode liefert eine weitere Instanz vom Typ SpecialistsBroker zurück, die an das Projekt mit dem übergeben Projektnamen gebunden ist oder null falls kein Projekt mit diesem Projekt-Namen auf dem aktuellen FirstSpirit-Server existiert.
Weiterführende Informationen zum Interface BrokerAgent siehe FirstSpirit-DEV-API.