Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:ac_insertaction_ad

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 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-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategorieactions
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
CommandIDNULL 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).
smallint4.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.
integer4.0.0
ParameterNamesNULL 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
ParameterValuesNULL 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
SepInAnyValuesOtherThanLFNULL 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

NewActionIDAusgabeparameter, 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 4)
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameterdirekt und indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.1 2013-08-071. 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-181. 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-071. 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-30Interner 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-15Interne Änderung : Änderung am Ende der Prozedur bzgl. „rollback tran“
4.0.9 2004-03-031. 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-03Erstmalig 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:

cURL

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 -
dStore_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();
engine/execute

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>
1)
Pflichtparameter sind unterstrichen
4)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
5)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/ac_insertaction_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)