Der SDK-Helper ============== Der Helper ist in Skripten der Kommunikationsweg zur Anwendung und stellt darüberhinaus unterstützende Funktionen zur Verfügung. Parameter aus Verbindung und Prozessen können damit ausgetauscht werden. Neben dem Helper und einigen .Net Basisfunktionen steht auch noch die Bibliothek Newtonsoft.Json zur Verfügung, die vorallem das Lesen und Erzeugen von Json-Daten stark vereinfacht. Alle Eigenschaften und Funktion des Helper beziehen sich immer auf den aktuellen Account. Eigenschaften ------------- Folgende Eigenschaften stehen am Helper zur Verfügung. Einige werden nur intern vom Helper genutzt oder indirekt über Methoden gesetzt. :Helper.IsCancelled (bool): Die Wert zeigt an, dass das Skript einen Abbruch angefordert hat. Der Wert wird auch mit der Methode Cancel gesetzt. Der Wert wird in den SDK-Prozessen, der SDK-Verbindung und der Transformation ausgewertet. :Helper.ConnectionId (int): Die ID der aktuellen Verbindung. Dieser Wert kann für API-Aufrufe verwendet werden. :Helper.ProcessId (int): Die ID des aktuellen Prozesses. Dieser Wert kann für API-Aufrufe verwendet werden. Wird von den Methoden IncreaseComplementaryMappings, IncreaseParallelMappings und InsertLog verwendet. :Helper.ClientNumber (int): Die Client-Number des aktuellen Prozesses. Dies ist ein Prozessparameter, der für die Datenstrukturierung genutzt werden kann. Die Methoden GetDataMappingComplementaryBySourceId und GetDataMappingParallelByTargetId schränken das Ergebnis mit diesem Wert ein, realisieren das aber mittels Abfrage direkt. :Helper.WhereClause (string): Dies ist der Prozess-Filter für die Abfrage von Quelldaten. In den SDK-Prozessen wird der Wert zurück an den Prozess gegeben und kann damit die Prozessausführung direkt beeinflussen. :Helper.ForceQueryAll (bool): Dies ist der Prozessparameter für die Aktivierung des kompletten Lesens ohne Änderungseinschränkung. In den SDK-Prozessen wird der Wert zurück an den Prozess gegeben und kann damit die Prozessausführung direkt beeinflussen. :Helper.ConflictAction (string): Dies ist der Prozessparameter für die Behandlung von Konflikten. Die möglichen Werte sind USE_SOURCE, USE_TARGET, SKIP, IGNORE und SOURCE_CHANGES. :Helper.ErrorAction (string): Dies ist der Prozessparameter für die Behandlung von Fehlern. Die möglichen Werte sind REPEAT_ALL, REPEAT_DIFFERENCES, QUERY_NEXT, IGNORE und STOP. :Helper.ClientWhereClause (string): Dies ist der Prozessparameter für die Suche nach Übereinstimmungen bei unbekannten Datensätzen. :Helper.DublettActionNoMatch (string): Dies ist der Prozessparameter für die Behandlung von keinem Treffer bei der Übereinstimmungssuche. Die möglichen Werte sind SKIP, SKIP_WITH_WARNING, WRITE, REPEAT und REPEAT_WRITE. :Helper.DublettActionOneMatch (string): Dies ist der Prozessparameter für die Behandlung von einem Treffer bei der Übereinstimmungssuche. Die möglichen Werte sind SKIP, SKIP_WITH_WARNING, MAPPING_ONLY, MAPPING_AND_SYNCH und WRITE_NEW. :Helper.DublettActionMultipleMatches (string): Dies ist der Prozessparameter für die Behandlung von mehreren Treffern bei der Übereinstimmungssuche. Die möglichen Werte sind SKIP, SKIP_WITH_WARNING, MAPPING_ONLY_FIRST, MAPPING_AND_SYNCH_FIRST und WRITE_NEW. :Helper.SecondWhereClause (string): Dies ist der Prozess-Zweitfilter für die Auswahl von transformierten Quelldaten. In den SDK-Prozessen wird der Wert zurück an den Prozess gegeben und kann damit die Prozessausführung direkt beeinflussen. :Helper.SourceObject (string): Der aktuelle Quellobjekttyp in Prozessskripten. :Helper.TargetObject (string): Der aktuelle Zielobjekttyp in Prozessskripten. In der SDK-Verbindung definiert der Wert das aktuell angeforderte Objekt. :Helper.SourceType (string): Der Typ der Quellverbindung in Prozessskripten. :Helper.TargetType (string): Der Typ der Zielverbindung in Prozessskripten. :Helper.SourceSchemaObject (JObject): Ein Schemaobjekt zur Beschreibung des aktuellen Quellobjekttyps. :Helper.TargetSchemaObject (JObject): Ein Schemaobjekt zur Beschreibung des aktuellen Zielobjekttyps. In der SDK-Verbindung definiert der Wert das aktuell angeforderte Objekt. :Helper.Statement (string): Die Abfrage der aktuellen Abfrageanforderung. Dies wird in JSON Abfrage Skript übergeben. :Helper.Action (JObject): Dieses Objekt beschreibt die aktuellen Ausführungsparameter. :Helper.Page (int): Dieser Wert wird beim Lesen mit Paging mit jeder Ausführung erhöht. Der Startwert ist 0. :Helper.SkipLoading (bool): Dieser Wert wird von der Methode SkipLoad gesetzt. In den SDK-Prozessen führt der Wert true zum Überspringen des Lesens aus der Quelle. :Helper.InnerException (string): Dieser Wert wird vom Datensatzskript in den SDK-Prozessen verwendet. Er wird als Fehlermeldung in den Prozess gegeben, wenn das Ergebnis Failed lautet. In diesem Fall muss ein Wert zugewiesen sein. :Helper.GetObject (JObject): In den SDK-Prozessen wird hier der aktuelle Datensatz an das Datensatzskript übergeben. :Helper.GetChildObjects (JArray): Im SDK-Prozess für geschachtelte Daten enthält dieses Array die Liste der transformierten Positionsdatensätze. Der Objektparameter "DELETE" führt je nach Verbindung zum Löschen der Position. :Helper.SetObject (JObject): Dieses Objekt repräsentiert das aktuelle Zielobjekt. In den SDK-Prozessen wird das Zielobjekt für das Datensatzskript übergeben. In der SDK-Verbindung und dem JSON-Daten schreiben Skript ist hier das Zielobjekt enthalten. :Helper.SetObjectChanges (JObject): Dieses Objekt repräsentiert die Änderungen des aktuellen Zielobjektes und steht in der SDK-Verbindung zur Verfügung. Sobald der Datensatz über einen Primärschlüssel verfügt können so die tatsächlichen Änderungen in den Daten ermittelt werden. :Helper.DeleteSetObject (bool): Dieses Objekt soll von der Verbindung gelöscht werden. :Helper.Mappings (JArray): Diese Liste enthält alle Feldzuordnungen, die im aktuellen Prozess definiert sind. In den SDK-Prozessen werden Änderungen an dieser Liste für das Schreiben übernommen. Die Eigenschaften des einzelen Objektes sind SourcePath (string), SourceColumn (SchemaColumn), TargetPath (string) und TargetColumn (SchemaColumn). Methoden -------- Folgende Methoden stehen im Helper direkt oder über Eigenschaften zur Verfügung. :Helper.Cancel(): Fordert einen Abbruch der aktuellen Ausführung an. Die Anforderung wird in SDK-Prozessen, der SDK-Verbindung und in Transformationen ausgewertet. :Helper.SkipLoad(): Fordert das Überspringen der Lese-Operation an. Die Anforderung wird in SDK-Prozessen ausgewertet und überspringt das Lesen der Quelldaten. :Helper.GetParam: Parameter: * string Name Rückgabewert: string Liefert einen Parameterwert aus der Parameterliste über den Namen des Parameters. Wenn der Parameter nicht vorhanden ist, wird eine leere Zeichenkette zurückgeliefert. :Helper.GetParam\: Parameter: * string Name * T DefaultValue = default Rückgabewert: T Liefert einen Parameterwert aus der Parameterliste über den Namen des Parameter in einem bestimmten Typ. Wenn der Parameter nicht vorhanden ist, wird der DefaultValue verwendet. Die Typangabe kann bei einem typisierten Defaultvalue auch weggelassen werden. Abhängig vom Typ des Parameters wird der Wert oder Verweis geliefert. :Helper.GetParamOrNull\: Parameter: * string Name Rückgabewert: T Liefert einen Parameterwert aus der Parameterliste über den Namen des Parameter in einem bestimmten Typ. Wenn der Parameter nicht vorhanden ist, wird Null verwendet. Diese Notation kann für explizites Nullable verwendet werden. z.B. DateTime? :Helper.SetParam\: Parameter: * string Name * T Value Speichert einen Parameter in der Parameterliste. Sollte der Parameter bereits vorhanden sein, wird der Wert aktualisiert. Die Typangabe kann bei typisierten Value auch weggelassen werden. :Helper.FieldStringToColumnObject: Parameter: * string FieldString Rückgabewert: JObject Mit dieser Methode kann eine Zeichenkette, z.B. aus einem Filter, die in Feldnotation übergeben wird, in ein JObject mit ansprechbaren Eigenschaften umgewandelt werden. :Helper.GetDataMappingBySourceId: Parameter: * int ProcessId * string SourceId Rückgabewert: SisDataMapping Ruft eine Datenabbildung aus der Datenbank des aktuellen Accounts über die Quell-ID ab. Datenabbildungen sind Prozess-bezogen und enthalten eine Quell- und Ziel-Identifikation. :Helper.GetDataMappingByTargetId: Parameter: * int ProcessId * string TargetId Rückgabewert: SisDataMapping Ruft eine Datenabbildung aus der Datenbank des aktuellen Accounts über die Ziel-ID ab. Datenabbildungen sind Prozess-bezogen und enthalten eine Quell- und Ziel-Identifikation. :Helper.GetDataMappingComplementaryBySourceId: Parameter: * int ProcessId * string SourceId * string TargetObject = null Rückgabewert: List\ Ruft eine Liste von Datenabbildungen entgegengerichteter Prozesse zum aktuellen Prozess aus der Datenbank des aktuellen Accounts über eine Quell-ID ab. Zusätzlich kann das Target-Objekt eingeschränkt werden. Dies kann erforderlich sein, wenn zwei unterschiedliche Objekte das gleiche Zielobjekt haben. Die Arbeit mit komplementären Datenabbildungen ist für das Konfliktmanagement und die Zielerkennung bei bidirektionalen Synchronisationen relevant. :Helper.GetDataMappingParallelByTargetId: Parameter: * int ProcessId * string TargetId Rückgabewert: List\ Ruft eine Liste von Datenabbildungen paralleler Prozesse zum aktuellen Prozess aus der Datenbank des aktuellen Accounts über eine Ziel-ID ab. An diesen muss die Änderungsinformation des Ziels angepasst werden, da dort ansonsten ein Konflikt erkannt wird. :Helper.SaveDataMapping: Parameter: * SisDataMapping Mapping Rückgabewert: SisDataMapping Speichert eine neue oder aktualisiert eine bestehende Datenabbildung. :Helper.IncreaseOwnDataMapping: Parameter: * SisDataMapping DataMapping * object NewUpdatedInfoA * object NewUpdatedInfoB * bool OnlyA = false * bool OnlyB = false Diese Methode aktualisiert die Änderungsinformation von Quelle und Ziel für die aktuelle Datenabbildung. Zum Auflösen eines Konflikts können die einzelnen Informationen gezielt per Parameter aktualisiert werden. :Helper.IncreaseComplementaryMappings: Parameter: * string CurrentSourceId * string CurrentTargetId * object NewUpdatedInfoA * object NewUpdatedInfoB * bool OnlyA = false * bool OnlyB = false Diese Methode sucht und aktualisiert oder legt komplementäre Datenabbildungen an. Bei Neuanlagen oder in Konfliktsituationen kann dies auch nur partiell erfolgen. :Helper.IncreaseParallelMappings: Parameter: * string CurrentSourceId * string CurrentTargetId * object NewUpdatedInfoA * object NewUpdatedInfoB * bool OnlyA = false * bool OnlyB = false Diese Methode sucht und aktualisiert oder legt parallele Datenabbildungen an. Bei Konfliktsituationen kann dies auch nur partiell erfolgen. :Helper.GetProcessInfoList: Parameter: * int? SourceConnectionId = null * int? TargetConnectionId = null Rückgabewert: List\ Liefert eine Liste von Informationsobjekten zu den Prozessen des aktuellen Accounts. Die Abfrage kann auf bestimmte Verbindungen eingeschränkt werden. :Helper.GetProcessInfoComplementary: Parameter: * int ProcessId Rückgabewert: List\ Liefert eine Liste von Informationsobjekten zu den komplementären Prozessen einen Prozesses. :Helper.GetProcessInfoParallel: Parameter: * int ProcessId Rückgabewert: List\ Liefert eine Liste von Informationsobjekten zu den parallelen Prozessen einen Prozesses. :Helper.InsertLog: Parameter: * SisLog Log Speichert einen Protokolleintrag in der Datenbank des aktuellen Accounts. :Helper.InsertLog: Parameter: * string Message * int Level Speichert einen Protokolleintrag in der Datenbank des aktuellen Accounts. Mit dem Level wird der Typ des Eintrags festgelegt. 0 = Meldung, 1 = Fehler, 2 = Warnung, 3 = Nachricht, 4 = Rückmeldung, 5 = Debug :Helper.InsertMessage: Parameter: * string Message * int Level Speichert eine Nachricht in der Broadcast-Datenbank des aktuellen Accounts. Diese Nachrichten werden in der Benutzeroberfläche angezeigt, aber nicht dauerhaft vorgehalten. Mit dem Level wird der Typ des Eintrags festgelegt. 0 = Meldung, 1 = Fehler, 2 = Warnung, 3 = Nachricht, 4 = Rückmeldung, 5 = Debug :Helper.InvokeUrl: Parameter: * string Url * string Method * JObject Header * string Data * bool Base64 (default: false) Rückgabewert: string Diese Methode führt einen HTTP-Request aus und liefert die Antwort als Zeichenkette zurück. Zusätzliche Header können als JObject übergeben werden. Einzelne Properties werden als einzelner Header-Parameter übernommen. Mit dem Parameter Base64 werden die abgerufenen Daten binär in Base64 konvertiert und zurückgegeben. :Helper.GetParameterList: Parameter: * string Name * string ConnectionId = null * string ProcessId = null Rückgabewert: List\ Ruft eine Parameterliste aus der internen Datenbank ab. Jeder Parameter hat einen Namen, einen Wert und eine ID. Zusätzlich können Parameter noch einer Verbindung oder einem Prozess zugeordnet werden. Das ist für die Strukturierung und Bereinigung sinnvoll. :Helper.SaveParameter: Parameter: * SisParam Parameter * string ConnectionId = null * string ProcessId = null Speichert einen Parameter in der internen Datenbank. :Helper.DeleteParameter: Parameter: * int ParameterId Löscht einen Parameter aus der internen Datenbank. :Helper.InvokeGetData: Parameter: * string ConnectionId * string TargetObject * List\ GetParams Rückgabewert: JArray Ruft Daten aus einer Verbindung ab. Das Schemaobjekt wird über TargetObject festgelegt. Die Liste der Parameter steuert die Abfrage. Dabei unterstützen nicht alle Verbindungen den gleichen Umfang an Optionen. Übliche Namen von Parametern sind: GETDATA_ID, GETDATA_RELATED_ID, GETDATA_RELATED, GETDATA_WHERE, GETDATA_MODIFIED, GETDATA_ORDER, LAST_SYNC_DATE, LAST_SYNC_VERSION Die Ausführung erfolgt über die Syncler API. :Helper.InvokeSetData: Parameter: * string ConnectionId * string TargetObject * JObject JsonObject Rückgabewert: JObject Speichert Daten über eine Verbindung. Das Schemaobjekt wird über TargetObject festgelegt. Zusätzliche Parameter, wie "DELETE" (bool) können über die Eigenschaft "Params" am JsonObjekt mitgegeben werden. :Helper.ServiceCall: Parameter: * string Method * string Url * string Data Rückgabewert: string Führt einen Aufruf der Syncler API aus. Als Url muss nur der Endpunkt übergeben werden. :Helper.InsertAction: Parameter: * int ProcessId * DateTime ExecuteDate * bool IsAdhoc * List\ ActionParams Speichert einen neuen Warteschlangeneintrag für einen Prozess. Parameter --------- :SisParam.Name: Parameter Name (string) :SisParam.Value: Parameter Wert (object) :SisParam.ID: Parameter ID (int) Wird beim Speichern in der Datenbank gesetzt. :SisParam.GetValue(): Parameter Wert als String :SisParam.GetValue\(DefaultValue): Parameter Wert als Typ T oder Default :SisParam.GetValueOrNull\(): Parameter Wert als Typ T oder Null :SisParam.HasValue(): Parameter hat einen Wert (bool) Datenabbildung -------------- :SisDataMapping.ID: Interne Datenbank ID (int) :SisDataMapping.ProcessId: Zugeordneter Prozess (int) :SisDataMapping.Description: Datensatzbeschreibung (string) :SisDataMapping.SourceRecordId: ID des Quelldatensatzes (string) :SisDataMapping.TargetRecordId: ID des Zieldatensatzes (string) :SisDataMapping.LastSyncDate: Letztes Datum der Synchronisation (DateTime) :SisDataMapping.TargetIsDeleted: Zieldatensatz wurde gelöscht (bool) :SisDataMapping.LastSyncInfo: Parameterliste mit Änderungs- und Zusatzinformationen (List\) Prozessbeschreibung ------------------- :SisProcessInfo.ID: Prozess ID (int) :SisProcessInfo.Name: Prozessname (string) :SisProcessInfo.DisplayName: Voller Prozessname (string) :SisProcessInfo.SourceObject: Names des Quelldatensatzes (string) :SisProcessInfo.TargetObject: Name des Zieldatensatzes (string) :SisProcessInfo.SourceConnectionId: Quellverbindung ID (int) :SisProcessInfo.TargetConnectionId: Zielverbindung ID (int) :SisProcessInfo.ClientNumber: Mandantennummer (int) :SisProcessInfo.IsScheduled: Zeitsteuerung ist aktiv (bool) :SisProcessInfo.SourceType: Typ der Quellverbindung (string) :SisProcessInfo.TargetType: Typ der Zielverbindung (string) :SisProcessInfo.ProcessType: Typ des Prozesses (string) Protokoll --------- :SisLog.CreatedDate: Erstelldatum (DateTime) :SisLog.Level: Level der Nachricht 0 (message) - 5 (debug) (int) :SisLog.ProcessId: Zugeordneter Prozess (int) :SisLog.ActionId: Zugeordneter Warteschlangeneintrag (int) :SisLog.RecordType: Names des Datensatzes (string) :SisLog.RecordId: ID des Datensatzes (string) :SisLog.LogMessage: Meldung (string)