cniSqlCreateModifyablePathExpression

Erstellt ein SqlPathExpression-Objekt, das den durch das Pfadargument angegebenen Pfad darstellt. Pfadelemente werden erstellt, wenn zu ihnen navigiert wird und sie nicht bereits vorhanden sind. Diese Funktion gibt einen Zeiger auf das Objekt 'PathExpression' zurück, das als Eingabe für die Funktionen, die zu dem Pfad, d. h. zur cniSqlNavigatePath-Familie, navigieren.

Das Erstellen des Ausdrucks ist mit einem Aufwand verbunden. Wenn also für jede Nachricht derselbe Pfadausdruck verwendet werden soll, sollte diese Funktion einmal aufgerufen werden und der Ausdruck CciSqlPathExpression*, der zurückgegeben wird, sollte in einem Aufruf an cniSqlNavigate für jede Nachricht verwendet werden. Sie können CciSqlPathExpression für andere Threads verwenden als für den Thread, für den der Ausdruck erstellt wurde.

Syntax

CciSqlPathExpression* cniSqlCreateModifiablePathExpression( 
	int*           returnCode,
	CciNode*            nodeObject,
	CciChar*           dataSourceName,
	CciChar* path);

Parameters

Rückkehrcode (Ausgabe)
Die Eingabe eines Nullzeigers bedeutet, dass der benutzerdefinierte Knoten nicht für Fehler zuständig sein möchte. Alle Ausnahmebedingungen, die bei der Ausführung dieses Aufrufs ausgegeben werden, werden beim nächsten vorgeschalteten Knoten im Nachrichtenfluss erneut ausgegeben. Wenn die Eingabe nicht NULL ist, gibt die Ausgabe den Erfolgsstatus des Aufrufs an. Wenn während der Ausführung eine Ausnahmebedingung auftritt, wird *returnCode bei der Ausgabe auf CCI_EXCEPTION gesetzt. Rufen Sie cciGetLastExceptionData für Details der Ausnahmebedingung auf. Wenn ein ungültiger 'nodeObject'-Parameter übergeben wurde, wird der Rückkehrcode auf CCI_INV_NODE_OBJECT gesetzt. Wenn ein ungültiger Pfadparameter, wie z. B. NULL oder eine leere Zeichenfolge, übergeben wurde, wird der Rückkehrcode auf CCI_INV_ESQL_PATH_EXPR gesetzt.
nodeObject (Eingabe)
Gibt den Verarbeitungsknoten des Nachrichtenflusses an, dem der ESQL-Pfadausdruck angehört. Dieser Zeiger wird an die Implementierungsfunktion cniCreateNodeContext weitergegeben. Dieser Parameter darf nicht NULL sein.
dataSourceName (Eingabe)
Der ODBC-Datenquellenname, der verwendet wird, wenn die Anweisung auf eine externe Datenbank verweist. Dieser Parameter darf NULL sein.
path (Eingabe)
Zeiger auf eine mit NULL beendete Zeichenfolge von 'CciChars'. Mit diesem Parameter wird der ESQL-Pfadausdruck angegeben, der, wie vom Syntaxdiagramm der ESQL-Feldreferenz definiert, erstellt werden soll. Allerdings kann er keine lokalen ESQL-Variablen, ESQL-Referenzvariablen, benutzerdefinierten Funktionen und ESQL-Namespacekonstanten enthalten, da diese nicht deklariert werden können. Dieser Parameter darf nicht NULL sein.

Rückgabewerte

Bei Erfolg wird die Adresse des Objekts 'SQLPathExpression' zurückgegeben. Wenn ein Fehler auftritt, wird CCI_NULL_ADDR zurückgegeben, und der Rückkehrcodeparameter gibt die Fehlerursache an. Sobald 'SQLPathExpression' nicht mehr benötigt wird (normalerweise wenn der Knoten gelöscht wurde), sollte es gelöscht werden, indem cniSqlDeletePathExpression aufgerufen wird.

Beispiel

Durch Hinzufügen des folgenden Codes zum Umwandlungsknotenmuster kann mit einem Funktionsaufruf ein Element und alle notwendigen Vorgängerelemente erstellt werden.

CciSQLPathExpression wird in der Funktion '_Transform_createNodeContext' erstellt:

 {
        CciChar ucsPathExpressionString[32];
        char*   mbPathExpressionString =
                           "OutputRoot.XMLNS.Request.A.B.C.D.E";
        /* Pfadzeichenfolge in Unicode konvertieren*/
        cciMbsToUcs(NULL,
            mbPathExpressionString,
            ucsPathExpressionString,
            32,
            BIP_DEF_COMP_CCSID);
        
        p->pathExpression =
                     cniSqlCreateModifiablePathExpression(
                                 NULL,
                                 nodeObject,
                                 NULL, /*es wird nicht auf die Datenbank verwiesen*/
                                 ucsPathExpressionString);
    }

Nun 'CciSqlPathExpression' in der Funktion '_Transform_evaluate' verwenden.

{
      CciElement* newElement = 
               cniSqlNavigatePath(
                     NULL,
                    ((NODE_CONTEXT_ST *)context)->pathExpression,
                     message,
                     localEnvironment,
                     exceptionList,
                     outMsg,
                     NULL,/*es wird nicht auf OutputLocalEnvironment verwiesen*/
                     NULL/*es wird nicht auf OutputLExceptionList verwiesen*/);
}

Durch die Eingabe der Eingabenachricht 'PluginSample.change.xml':

<Request
type="change">
  <CustomerAccount>01234567</CustomerAccount>
  <CustomerPhone>555-0000</CustomerPhone>
</Request>

Es wird folgende Ausgabenachricht generiert:

<Request
type="modify">
  <CustomerAccount>01234567</CustomerAccount>
  <CustomerPhone>555-0000</CustomerPhone>
  <A>
    <B>
      <C>
        <D/>
      </C>
    </B>
  </A>
</Request>
Im Vergleich mit der Verwendung von Funktionen wie beispielsweise cniCreateElementAsLastChild bietet diese Methode folgende Vorteile:
  • Der Pfad ist dynamischer: Die Pfadzeichenfolge kann zum Zeitpunkt des Implementierens festgelegt werden, z. B. auf einer Knoteneigenschaft basierend (CciSqlPathExpression kann in der Implementierungsfunktion cniSetAttribute erstellt werden).
  • Während der Navigation zum Element und während dessen Erstellung wird nur ein Funktionsaufruf anstatt mehrerer gemacht. Dieses Verfahren wird deutlicher, wenn sich das Zielelement weit innerhalb der Baumstruktur befindet.
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:29:58

as08032_