cniSqlCreateModifyablePathExpression

Cria um objeto SqlPathExpression que representa o caminho especificado pelo argumento de caminho. Quando eles forem navegados, os elementos de caminho serão criados se eles ainda não existirem. Essa função retorna um ponteiro para o objeto PathExpression, que é utilizado como entrada para as funções que navegam o caminho, isto é, a família cniSqlNavigatePath family.

Como um código extra envolvido na criação da expressão, se for necessário utilizar a mesma expressão de caminho a ser utilizada para cada mensagem, chame essa função uma vez e utilize CciSqlPathExpression* que é retornada em uma chamada a cniSqlNavigate para cada mensagem. Você pode utilizar CciSqlPathExpression em encadeamentos diferentes daqueles em que ele foi criado.

Sintaxe

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

Parâmetros

returnCode (saída)
Uma entrada de ponteiro NULL significa que o nó definido pelo usuário não manipulará os erros. Quaisquer exceções lançadas durante a execução desta chamada serão lançadas novamente para o próximo nó de envio de dados no fluxo. Se a entrada não for NULL, a saída significará o status de êxito da chamada. Se uma exceção ocorrer durante a execução, *returnCode será definido como CCI_EXCEPTION na saída. Uma chamada para cciGetLastExceptionData fornecerá detalhes da exceção. Se um parâmetro nodeObject inválido foi transmitido, o returnCode será configurado como CCI_INV_NODE_OBJECT. Se um parâmetro de caminho inválido, como uma cadeia vazia ou NULL, foi transmitido, o returnCode será configurado como CCI_INV_ESQL_PATH_EXPR.
nodeObject (entrada)
Especifica o nó de processamento do fluxo de mensagens pertencente à Expressão de Caminho do ESQL. Esse ponteiro é transmitido à função de implementação cniCreateNodeContext. Esse parâmetro não deve ser NULL.
dataSourceName (entrada)
O nome da origem de dados ODBC a ser utilizado, se a instrução referenciar um banco de dados externo. Este parâmetro pode ser NULL.
path (entrada)
Ponteiro para uma cadeia finalizada NULL de CciChars. Esse parâmetro especifica a expressão de caminho ESQL a ser criada como definida pelo diagrama de sintaxe de referência de campo ESQL, exceto que ele não pode incluir variáveis ESQL locais, variáveis de referência de ESQL, funções definidas pelo usuário ou constantes de espaço de nomes ESQL, porque não podem ser declaradas. Esse parâmetro não deve ser NULL.

Valores de Retorno

Se bem-sucedidos, o endereço do objeto SQLPathExpression será retornado. Se um erro ocorrer, CCI_NULL_ADDR será retornado e o parâmetro de código de retorno indicará a razão do erro. Quando a SQLPathExpression não é mais necessária (normalmente, quando o nó é excluído), chame cniSqlDeletePathExpression para excluí-la.

Exemplo

Se você incluir o código a seguir na amostra do nó Transform, será possível criar um elemento e todos os elementos ascendentes necessários com uma chamada de função.

Crie a CciSQLPathExpression na função _Transform_createNodeContext:

 {
        CciChar ucsPathExpressionString[32];
        char*   mbPathExpressionString =
                           "OutputRoot.XMLNS.Request.A.B.C.D.E";
        /* Converter a cadeia de caminho para unicode*/
        cciMbsToUcs(NULL,
            mbPathExpressionString,
            ucsPathExpressionString,
            32,
            BIP_DEF_COMP_CCSID);
        
        p->pathExpression =
                     cniSqlCreateModifiablePathExpression(
                                 NULL,
                                 nodeObject,
                                 NULL, /* não referenciar o Banco de Dados*/
                                 ucsPathExpressionString);
    }

Agora utilize a CciSqlPathExpression posteriormente na função _Transform_evaluate

{
      CciElement* newElement =
               cniSqlNavigatePath(
                     NULL,
                    ((NODE_CONTEXT_ST *)context)->pathExpression,
                     message,
                     localEnvironment,
                     exceptionList,
                     outMsg,
                     NULL,/* não referenciar OutputLocalEnvironment*/
                     NULL/* não referenciar OutputLExceptionList*/);
}

Assim, a transmissão na mensagem de entrada PluginSample.change.xml:

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

A seguinte mensagem de saída é gerada:

<Request
type="modify">
  <CustomerAccount>01234567</CustomerAccount>
  <CustomerPhone>555-0000</CustomerPhone>
  <A>
    <B>
      	<C>
        <D/>
      	</C>
    </B>
  </A>
</Request>
Essa abordagem, em vez de utilizar funções como cniCreateElementAsLastChild, tem as seguintes vantagens:
  • O caminho é mais dinâmico: a cadeia de caminhos poderá ser determinada no tempo de implementação, por exemplo, com base em uma propriedade do nó (você poderá criar a CciSqlPathExpression na função de implementação cniSetAttribute).
  • Durante a navegação e a criação do elemento, é feita apenas uma chamada de função. Essa técnica torna-se mais evidente quando o elemento de destino é profundo na estrutura em árvore.
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:13:09

as08032_