Transfer List-Komponente des Jitterbit Connector SDK
Übersicht
Die Transfer List-Komponente kann zur Entwurfszeit dynamisch eine Liste von Objekten generieren und es einem Benutzer ermöglichen, ein oder mehrere Objekte auszuwählen. Sie wird in Verbindung mit einer List Object-Komponente auf einer vorherigen Seite (Schritt) der Aktivität verwendet, um die Liste der Objekte zu definieren. Dieses Beispiel zeigt eine Transferliste, die in der Integration Studio LDAP-Connector Add Entry-Aktivität verwendet wird:
Komponenten-JSON
Da die list-object
-Komponente, die dieser Transferliste vorausgeht, ein wesentlicher Bestandteil ihrer Funktionsweise ist, enthält dieses JSON-Fragment sowohl die list-object
- als auch die transfer-list
-Komponenten:
"addEntry": {
"displayName": "Add Entry",
"properties": [
{
"name": "list-object-page",
"type": "pagination",
"children": [
{
"name": "list-object",
"displayName": "Select Structural Class",
"type": "list-object",
"use": {
"ui": {
"selectObjectLabel": "Selected Structural Class: ",
"tableHeaders": [
"Name"
]
},
"discoveryType": "provided",
"orientation": "output",
"documentIdPath": "this"
}
},
{
"name": "continue",
"displayName": "Continue on error",
"type": "boolean",
"defaultValue": false,
"validators": [
{
"name": "required"
}
]
}
]
},
{
"name": "transfer-list-page",
"type": "pagination",
"children": [
{
"name": "transfer-list",
"displayName": "Select Auxiliary Class",
"type": "transfer-list",
"widgetHint": "component:connector/transfer-list",
"use": {
"ui": {
"mainTitle": "Object Classes",
"leftSubTitle": "Available Auxiliary Classes",
"rightSubTitle": "Selected Auxiliary Classes",
"showDefaultTypeIcons": false
}
},
"validators": [
{
"name": "min",
"args": [
0
]
}
]
}
]
}
]
}
In dem JSON, das die transfer-list
beschreibt, können folgende Eigenschaften konfiguriert werden:
type
: Der Typ der Transfer List-Komponente muss"transfer-list"
sein.mainTitle
: Titel für die Transferliste.leftSubTitle
: Untertitel über der linken Liste.rightSubTitle
: Untertitel über der rechten Liste.showDefaultTypeIcons
: Wenntrue
, werden die LDAP-Objekttyp-Icons angezeigt.args
: Definiert die Mindestanzahl an Feldern, die ausgewählt werden müssen, um die Komponente gültig zu machen. Kann[0]
sein, was es erlaubt, dass keine Auswahl gültig ist und der Benutzer zum nächsten Schritt fortfahren kann.
Komponentenentdeckung
Der Connector wird erwartet, die Liste der Objekte bereitzustellen. Dies geschieht auf eine Weise, die der Art und Weise ähnelt, wie die List Object-Komponente ihre Objektliste entdeckt, und dieselbe Methode (getObjectList
) wird in der Aktivität aufgerufen. Um den Aufruf dieser Methode zu unterscheiden, wenn sie für eine Transferliste aufgerufen wird, die einer Listenobjekt folgt, wechseln Sie den Rückgabewert basierend auf dem Seitennamen des aufgerufenen Schrittes. Wie in diesem Beispiel gezeigt, wird der Seitenname aufgelöst und dann verwendet, um die Bildung der Objektliste zu wechseln:
@Override
public List<DiscoverableObject> getObjectList(
DiscoverContextRequest<DiscoverableObjectRequest> objectListRequest) throws DiscoveryException {
logger.info("Getting objectList for Activity: " + getName());
List<DiscoverableObject> objectList = new ArrayList<DiscoverableObject>();
try {
LdapConnection ldapConnection = (LdapConnection) objectListRequest.getConnection();
List<Properties> properties = objectListRequest.getRequest().getSelectionPath();
String page = null;
for (Properties property : properties) {
if (property.getKey().equalsIgnoreCase(PROPERTY_NAME)) {
page = property.getValue().toString();
break;
}
}
switch (page) {
case LIST_OBJECT:
objectList = ldapConnection.getObjectList(ObjectClassTypeEnum.STRUCTURAL);
break;
case TRANSFER_LIST:
objectList = ldapConnection.getObjectList(ObjectClassTypeEnum.AUXILIARY);
break;
}
} catch (Exception ex) {
ex.printStackTrace();
String msg = Messages.getMessage(Messages.LDAP_CODE06_MSG,
new Object[] {getName(), ex.getLocalizedMessage()});
throw new DiscoveryException(Messages.LDAP_CODE06, msg, ex);
}
return objectList;
}
Komponentenausgabe
Die Übertragungsliste gibt dem Connector seine Ausgabe in Form eines JSON-Strings zurück. Dieser String muss vor der Verwendung wieder in ein Objekt umgewandelt werden. Dies geschieht in der execute()
-Methode der Aktivität:
@Override
public void execute(ExecutionContext context) throws Exception {
Map<String, String> functionalParam = context.getFunctionParameters();
String transferList = functionalParam.get(TRANSFER_LIST);
JSONObject transferListJsonObject;
JSONArray selectedNameJsonArray;
. . .
try {
transferListJsonObject = new JSONObject(transferList);
selectedNameJsonArray = transferListJsonObject.getJSONArray(SELECTED_NAMES);
} catch (JSONException e) {
transferList = transferList.substring(transferList.indexOf('['), (transferList.indexOf(']') + 1));
selectedNameJsonArray = new JSONArray(transferList.replaceAll("\\\\", ""));
}
. . .