Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— |
engine:procedures:ac_insertaction_ad [11.01.2016 ] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== ac_InsertAction_Ad ===== | ||
+ | |||
+ | Legt eine neue "Action" an.\\ | ||
+ | |||
+ | Unter "Actions" sind Aufrufe anderer "Programme" zu verstehen, die irgendwelche Aktionen (wie z.B. das Versenden einer Bestell-Bestätigung per Mail oder das Generieren eines Rechnungs-Dokumentes) durchführen, die nicht aus dem ASE heraus initiiert werden können.\\ | ||
+ | |||
+ | |||
+ | |||
+ | Anmerkung zu den Parametern "ParameterNames" und "ParameterValues" :\\ | ||
+ | |||
+ | Übergibt man für BEIDE Parameter "NULL" an, überprüft die Prozedur, ob in "tempdb.dbo.AnyValues" Daten vorhanden sind. Möchte man Parameter über "AnyValues" angeben, ist folgendes zu beachten : In der Spalte "ID" kann ein beliebiger Wert übergeben werden, in "Value" müssen die "Key - Value" - Paare angegeben sein, und zwar in der Form :\\ "<ParamaterName>char(10)<ParameterValue>".\\ Hinweis : Möchte man "<ParameterName>" und "<ParameterValue>" durch eine andere Zeichenkette als "line feed" (ASCII-Code "10") voneinander trennen, belegt man "SepInAnyValuesOtherThanLF" entsprechend.\\ | ||
+ | |||
+ | |||
+ | |||
+ | Hinweise :\\ | ||
+ | |||
+ | 1. Möchte man KEINE Parameter zur "Action" anlegen, ist entweder... | ||
+ | * genau einer der beiden Parameter "ParameterNames" und "ParameterValues" mit "NULL" zu belegen (der andere aber nicht) | ||
+ | oder | ||
+ | * "tempdb.dbo.AnyValues" vor dem Aufruf dieser Prozedur zu leeren (durch Ausführen von [[dstoreproc>mi_DeleteFromTempdbTable]]) und "NULL" sowohl für "ParameterNames" als auch für "ParameterValues" anzugeben ! | ||
+ | |||
+ | |||
+ | 2. Egal wie die "ParameterName"-"ParameterValue"-Paare übergeben werden, es gelten folgende Beschränkungen :\\ a) Ein "ParameterName"-Wert darf maximal 50 Bytes enthalten\\ b) Ein "ParameterValue"-Wert darf maximal 255 Bytes enthalten\\ | ||
+ | |HTTP-Method|POST | | ||
+ | |HTTP-Auth|Optional | | ||
+ | |Tags|{{tag>[ac Insert Action Ad]}}| | ||
+ | |Engine-Kategorie|actions | | ||
+ | |Engine-Typ|Daten-Änderung | | ||
+ | |Letzte Aktualisierung|7.0.7 (2015-01-29)| | ||
+ | |||
+ | ==== Parameter ==== | ||
+ | |||
+ | ^Name ((Pflichtparameter sind unterstrichen)) ^Standard-Wert ^Beschreibung ((siehe [[webservice:engine_parameterconventions|Parameter-Konventionen engine/<Prozedur-Name>]])) ^SQL-Datentyp((siehe [[:webservice:engine_datatypes|Datentypen im Bereich "engine"]])) ^ab Version ^ | ||
+ | |CommandID|NULL |ID eines Kommandos/Programms mit dem die "Action" abzuarbeiten ist. Die ID muß in der Tabelle "Commands" vorkommen (s.a. [[dstoreproc>ac_GetCommands_Ad]] bzw. [[dstoreproc>ac_ModifyCommands_Ad]]).\\ |smallint|4.0.0| | ||
+ | |__Status__| |Mit welchem Status soll die "Action" eingefügt werden. Die Status sind frei wähl- und interpretierbar, mit Ausnahme des Wertes "-1", der intern (z.B. von "_ac_DatabaseError") verwendet wird und als "nicht abgearbeitet" zu interpretieren ist.\\ |integer|4.0.0| | ||
+ | |ParameterNames|NULL |Liste von Parameter-Namen (durch '¶' getrennt). Die zugehörigen Werte, die zur "Action" eingetragen werden sollen, sind durch "ParameterValues" zu übergeben. Bei Angabe von "NULL" für beide Parameter : siehe Beschreibung !\\ |varchar(255)|4.0.0| | ||
+ | |ParameterValues|NULL |Werte zu den in "ParameterNames" angegebenen Parametern, die zur neuen "Action" hinterlegt werden sollen.. Bei Angabe von "NULL" für beide Parameter : siehe Beschreibung !\\ |varchar(255)|4.0.0| | ||
+ | |SeparatorInParamValues|'¶' |Durch welche Zeichenkette die Werte in "ParameterValues" getrennt sind, gibt man hier an\\ |varchar(4)|5.5.0| | ||
+ | |SepInAnyValuesOtherThanLF|NULL |Möchte man die "Key-Value"-Paare in "tempdb.dbo.AnyValues" (s. Beschreibung) durch eine andere Zeichenkette als "line feed" (ASCII-Code "10") voneinander trennen, belegt man diesen Parameter hier entsprechend\\ |varchar(4)|5.5.0| | ||
+ | ==== Rückgabe ==== | ||
+ | |||
+ | Die Prozedur hat keine Rückgaben. | ||
+ | ==== Output-Parameter ==== | ||
+ | |||
+ | |NewActionID|Ausgabeparameter, die (falls eine neue "Action" angelegt werden sollte) die neue ID der "Action" enthält (falls diese erfolgreich angelegt werden konnte)| | ||
+ | ==== Mögliche Return-Codes ==== | ||
+ | |||
+ | ^Code ^Beschreibung ^Quelle ((direkt meint "von der Prozedur selber" und indirekt meint "von intern aufgerufenen Unterprozeduren")) ^ | ||
+ | |-569|Der Benutzer hat kein Ausführungsrecht für die Prozedur|nur indirekt| | ||
+ | |-567|Die Prozedur darf z. Zt. nicht ausgeführt werden|nur indirekt| | ||
+ | |-566|Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden|nur indirekt| | ||
+ | |-535|Das Datum liegt nicht in der Vergangenheit|nur indirekt| | ||
+ | |-530|Der Wert ist nicht konvertierbar|nur indirekt| | ||
+ | |-510|Der Benutzer ist nicht registriert|nur indirekt| | ||
+ | |-504|Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen|nur indirekt| | ||
+ | |-502|Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)|nur indirekt| | ||
+ | |-500|Falsche Parameter|direkt und indirekt| | ||
+ | ==== XML-Schema ==== | ||
+ | |||
+ | Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema [[http://resources.dstore.de/xsd/webservice_SmartGate/Response/EngineProcedure_v1_0.xsd|Response/EngineProcedure_v1_0.xsd]] validiert. | ||
+ | ==== Historie ==== | ||
+ | |||
+ | |7.0.7 |2015-01-29|Interne Änderung : Datentyp-Erweiterung des "ReferenceKey" [für "_mi_StartProcedure"-Aufruf]\\ | | ||
+ | |7.0.1 |2013-08-07|1. Anpassungen wg. Erweiterung der "Value"-Spalte von "tempdb.dbo.AnyValues"\\ 2. Ab jetzt werden "ParameterName"- und "ParameterValue"-Werte hinsichtlich der maximalen Länge geprüft und es gibt ggf. einen Fehler [vorher wurden Werte abgeschnitten]\\ | | ||
+ | |6.5.3 |2013-03-18|1. Anpassungen an den aktuellen Quellcode-Standard, u.a. wg. UTF8-Unterstützung\\ 2. Datentyp der Parameter "SeparatorInParamValues" und "SepInAnyValuesOtherThanLF" wurde erweitert [von "1" auf\\ "4"]\\ | | ||
+ | |5.5.0 |2008-01-07|1. Neue Parameter "SeparatorInParamValues" und "SepInAnyValuesOtherThanLF"\\ 2. Ausgabe via "print" im Fehler-Fall "-500", die nähere Informationen über die Ursache enthält\\ | | ||
+ | |4.0.12 |2004-04-30|Interner Fehler, der dazu führte, daß nie evtl. in "tempdb.dbo.AnyValues" übergebene Key-Value-Werte als Parameter zur "Action" angelegt wurden !\\ | | ||
+ | |4.0.10 |2004-03-15|Interne Änderung : Änderung am Ende der Prozedur bzgl. "rollback tran"\\ | | ||
+ | |4.0.9 |2004-03-03|1. Verwendung von "_mi_StartProcedure", "_mi_FinishProcedure" und "_mi_ChooseParamValueSeperator"\\ 2. Fehler : "return" mitten in der Transaktion !\\ 3. Neuer Parameter "NewActionID"\\ 4. "set transaction isolation level 1", "set rowcount 0" zu Beginn\\ | | ||
+ | |4.0.0 |2003-04-03|Erstmalig in dieser Version erstellt\\ | | ||
+ | |||
+ | ==== Code-Snippets ==== | ||
+ | |||
+ | == Engine Playground == | ||
+ | Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist: | ||
+ | * [[http://playground.dstore.de/index.php?proc=ac_InsertAction_Ad|ac_InsertAction_Ad im Engine Playground öffnen]] | ||
+ | == cURL == | ||
+ | Unformatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/ac_InsertAction_Ad?Status=<value>'</code>Mit xmllint ((I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org)) formatierte Ausgabe: | ||
+ | <code bash> | ||
+ | curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/ac_InsertAction_Ad?Status=<value>' | xmllint --format -</code>== dStore_php == | ||
+ | <code php> | ||
+ | use dStore_php\WebService; | ||
+ | |||
+ | $service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80); | ||
+ | |||
+ | $request = new WebService\Requests\Engine\Procedure\Request( | ||
+ | new WebService\Requests\AccessData('default'), | ||
+ | 'ac_InsertAction_Ad', | ||
+ | array( | ||
+ | 'Status' => <value>, | ||
+ | // 'CommandID' => NULL, | ||
+ | // 'ParameterNames' => NULL, | ||
+ | // 'ParameterValues' => NULL, | ||
+ | // 'SeparatorInParamValues' => '¶', | ||
+ | // 'SepInAnyValuesOtherThanLF' => NULL | ||
+ | ) | ||
+ | ); | ||
+ | |||
+ | $service->execute($request); | ||
+ | |||
+ | $xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument(); | ||
+ | $ResultSet = $xml_result->getRowsAsArray(); | ||
+ | |||
+ | $OutputParams = $xml_result->getOutputParametersAsArray();</code> | ||
+ | == engine/execute == | ||
+ | XML zur Ausführung mit der Methode [[:webservice:engine:execute|engine/execute]], z.B. per | ||
+ | curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>' | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <ListOfBatches> | ||
+ | <Batch No="0"> | ||
+ | <Procedure Name="ac_InsertAction_Ad"> | ||
+ | <Parameters> | ||
+ | <Parameter Name="Status"><!-- integer value --></Parameter> | ||
+ | <!-- <Parameter Name="CommandID">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="ParameterNames">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="ParameterValues">NULL</Parameter> --> | ||
+ | <!-- <Parameter Name="SeparatorInParamValues">'¶'</Parameter> --> | ||
+ | <!-- <Parameter Name="SepInAnyValuesOtherThanLF">NULL</Parameter> --> | ||
+ | </Parameters> | ||
+ | </Procedure> | ||
+ | </Batch> | ||
+ | </ListOfBatches></code> | ||