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…
oder
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 | |
Engine-Kategorie | actions |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
Name 1) | Standard-Wert | Beschreibung 2) | SQL-Datentyp3) | ab Version |
---|---|---|---|---|
CommandID | NULL | ID eines Kommandos/Programms mit dem die „Action“ abzuarbeiten ist. Die ID muß in der Tabelle „Commands“ vorkommen (s.a. ac_GetCommands_Ad bzw. 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 |
Die Prozedur hat keine Rückgaben.
NewActionID | Ausgabeparameter, die (falls eine neue „Action“ angelegt werden sollte) die neue ID der „Action“ enthält (falls diese erfolgreich angelegt werden konnte) |
Code | Beschreibung | Quelle 4) |
---|---|---|
-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 |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
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 |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
Unformatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/ac_InsertAction_Ad?Status=<value>'
Mit xmllint 5) formatierte Ausgabe:
curl -X POST 'http://<partner>-<project>.dstore.de/default/engine/ac_InsertAction_Ad?Status=<value>' | xmllint --format -
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();
XML zur Ausführung mit der Methode engine/execute, z.B. per
curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?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>