Hallo Miteinander
Ich habe schon eine weile an einem Programm gearbeitet, welches es einem erlaubt, Beanshell Scripts per Remote auszuführen.
Es ist noch nicht Releasebereit, ich möchte jedoch schon einen Einblick geben.
Damit kann man so ziemlich alles, was das Modulsystem kann aus der Ferne ausführen.
Das Modul kann zusätzlich die Ergebnisse in eine CSV Datei schreiben.
Das Programm unterstützt Commandozeilenargumente, somit kann man Scripts z.b. automatisch ausführen, und sogar die Argumente per CMD mitgeben.
Ein par Beispielscripts, die ich bereits geschrieben habe beinhalten:
- Module de-aktivieren
- Benutzerdaten Abrufen /Aktualisieren
- Serverlizenzen Abrufen
Zu dem Modul auf der Anlage gibt's nicht viel zu sagen, es muss einfach installiert werden, und eine Instanz erstellt werden.
Zum Client:
Bitte beachtet, dass ich kein UI Designer bin
Das Programm läuft auf Java.
Die Scripts werden in einem Format .sfscript abgespeichert
Darin werden die folgenden Einstellungen gesichert:
- Script
- Argumente
- Selektierte STARFACE's
- Output (CSV/NONE)
- Zieldatei/Ordner (CSV)
- Header Ja/Nein
- Eine CSV pro STARFACE Ja/Nein
Oben Links mit dem + kann man STARFACE hinzufügen.
Für die Ausführung des Scripts können ein, oder mehrere STARFACE gewählt werden.
Im Script können Argumente verwendet werden, welche in der GUI Rechts hinzugefügt werden können. Diese können später beim Aufruf auf der Kommandozeile überschrieben werden.
Die Scripte laufen wie gesagt auf Beanshell.
Rückgabewerte müssen in "Data" geschrieben werden, dieses darf aber im Script nicht separat definiert werden.
Data ist eine Map<String, Object>
Man kann es in eine CSV Schreiben lassen.
Dafür muss Data eines der Folgenden Formate haben:
Map<String, String>
Map<String, Map<String Object>
Map<String, List<String>
Map<String, List<Map<String, Object>
Beispiel:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import de.starface.bo.UserBusinessObject;
import de.starface.core.component.StarfaceComponentProvid er;
import de.vertico.starface.persistence.databean.core.Exte ndedUserData;
StarfaceComponentProvider componentProvider = StarfaceComponentProvider.getInstance();
UserBusinessObject UBO = (UserBusinessObject)componentProvider.fetch(UserBu sinessObject.class);
List Users = new ArrayList(); //Liste von Benutzern
for(ExtendedUserData UserData: UBO.getUsers("", "", true)) //Alle User aus dem UserBusinessObject Abrufen
{
//Die Stücke des Benutzers in eine HashMap platzieren
Map User = new HashMap();
User.put("AccountId", UserData.getAccountId());
User.put("LoginNumber", UserData.getLoginNumber());
User.put("FamilyName", UserData.getFamilyName());
User.put("FirstName", UserData.getFirstName());
User.put("Email", UserData.getEmail());
User.put("Emailfaxjournal", UserData.getEmailfaxjournal());
User.put("FaxCallerId", UserData.getFaxCallerId());
User.put("Faxcoverpage", UserData.getFaxcoverpage());
User.put("FaxHeader", UserData.getFaxHeader());
User.put("Language", UserData.getLanguage());
User.put("LicenseType", UserData.getLicenseTypeString());
User.put("MissedCallReport", UserData.getMissedCallReport());
User.put("ExtPrimaryPhone", UserData.getExtPhoneNumber().getPhoneNumber());
User.put("IntPrimaryPhone", UserData.getIntPhoneNumber().getPhoneNumber());
Users.add(User); //Den Benutzer der Liste hinzufügen
}
Data.put("Users", Users); //Die ganze Liste ins Datenpaket schreiben, damit dieses zurückkommt
Alles anzeigen
Ausgabe:
"AccountId";"Email";"FamilyName";"Emailfaxjournal";"FirstName";"FaxHeader";"FaxCallerId";"LicenseType";"ExtPrimaryPhone";"MissedCallReport";"Language";"Faxcoverpage";"LoginNumber";"IntPrimaryPhone"
"1001";"zuend@si-solutions.ch";"821";"false";"821";"Test";"0041717271818";"User";"";"false";"";"false";"821";"821"
"1623";"test@test.ch";"891";"true";"891";"Fax";"+41717271808";"User";"";"false";"";"true";"891";"891"
"1879";"email@muster.ch";"Nachname";"false";"Vorname";"";"";"User";"";"false";"";"false";"831";"831"
Das ist es mal etwa im groben.
MfG
Fabian