Pasos Editar Datos
Los pasos Editar datos proporcionan una región de formato libre donde puede especificar comandos para controlar el procesamiento de scripts.
Ingrese los comandos de generación de scripts en el campo Texto de Edición de Datos. Haga click en el ícono adyacente para abrir una ventana que permita obtener más espacio para definir el paso de edición de datos.
En general, la sintaxis disponible dentro de la edición de datos emula los comandos disponibles dentro de los tipos de pasos explícitos. Sin embargo, hay algunos comandos que están disponibles sólo dentro de la edición de datos. Por ejemplo, los dos comandos estructurados: For e If.
Los temas de esta sección proporcionan detalles de la sintaxis que se soporta en el tipo de paso de edición de datos.
Contenido
Funciones para el Procesamiento de Lista
Declaración e Invocación de Objetos Basados en Esquema
Variables del Sistema y Globales
Ejecución de Script y Transferencia
Declarar Objeto de Negocio con Grupo de Objeto de Negocio
Depuración de un Script del Asistente de Proceso de Negocios
Comentarios
Se pueden incluir comentarios en un script usando la notación de doble barra // en los primeros dos caracteres del paso de edición de datos. Ejemplo:
//
// quit with error
//
if ("not(customer/securityEnabled)")
terminate with error (8000, 1001 %1="customer/id" %2='not allowed');
end-if;
Variables Temporales
Las variables temporales se pueden declarar en todos los tipos de scripts. Para hacer referencia a ellas, se debe incluir un signo de dólar a la izquierda ("$"). Sin embargo, las variables temporales varían su comportamiento según los diferentes tipos de scripts:
-
En los Scripts del Asistente de Proceso de Negocios, las variables temporales se conservan de un script del Asistente de Proceso de Negocios a otro (consulte Sentencias Perform Script y Transfer Control), lo que significa que se pueden usar para establecer la comunicación entre scripts del Asistente de Proceso de Negocios.
-
Las variables temporales no se pueden transmitir de un script del Asistente de Proceso de Negocios a un script de servicio o de conector. Solamente los elementos del área de datos se pueden transmitir entre estos tipos de scripts.
-
En los scripts de servicio y de conector, las variables temporales se conservan solamente durante el ciclo de vida del script que declaró la variable. Esto significa que no se pueden transmitir variables temporales entre scripts de conector y scripts de servicio, sino solamente variables globales, variables de contexto y elementos del área de datos.
Declaración, Inicialización y Fijación por Defecto de Variables Temporales
Cuando se utiliza una variable temporal, se debe declarar o inicializar con un valor determinado antes de utilizarla. Un método que se utiliza típicamente para declarar una variable consiste en tan solo mover datos a ella usando una sentencia Move, por ejemplo.
move "0" to $index;
Para los scripts del Asistente de Proceso de Negocios, tal como se mencionó anteriormente, las variables temporales se pueden transmitir de un script del Asistente de Proceso de Negocios a otro. Como tal, es común hacer referencia a una variable temporal de un Asistente de Proceso de Negocios que debería haber inicializado un Asistente de Proceso de Negocios anterior. Sin embargo, si por alguna razón un Asistente de Proceso de Negocios anterior no inicializó una variable temporal, al hacer referencia a ella, se generará un error. Por lo tanto, se recomienda usar la sentencia default que inicializará las variables temporales que no se hayan creado o inicializado aún.
-
La siguiente sentencia inicializará la variable temporal $InputAction, pero solamente si no se ha inicializado aún:
default $InputAction;
-
La siguiente sentencia fijará el valor de la variable temporal $InputAction en 'read', pero solamente si aún no se ha inicializado la variable:
default $InputAction as 'read';
Palabra Clave |
---|
add |
as |
asError |
bpa |
branch |
data |
declareBO |
declareBS |
declareDA |
declareMap |
declareSS |
default |
delete |
edit |
element |
else |
end-edit |
end-for |
end-if |
error |
escape |
evaluate |
fastAdd |
fastUpdate |
for |
goto |
if |
in |
invokeBO |
invokeBS |
invokeMap |
invokeSS |
label |
map |
move |
navigate |
navigateAndReloadDashboard |
null |
page |
performScript |
popup |
read |
readWithoutVersion |
replace |
suppress |
target |
terminate |
to |
transferControl |
update |
using |
warn |
with |
Variables de Contexto
Las variables de contexto están disponibles únicamente en los scripts de servicio. La variable de contexto estará disponible durante la vigencia del script de servicio y todo lo que invoca. Por lo tanto, se puede usar una variable de contexto en un script de servicio para transmitir la información a un esquema o script de servicio de un nivel inferior. Para hacer referencia a ellas, se debe incluir doble signo de dólar a la izquierda ("$$").
Declaración, Inicialización y Fijación por Defecto de Variables de Contexto
Cuando se utiliza una variable de contexto, se debe declarar o inicializar con un valor determinado antes de utilizarla. Un método que se utiliza típicamente para declarar una variable consiste en tan solo mover datos a ella usando una sentencia Move, por ejemplo.
move 'context variable' to $$contextVariable;
Sentencia Move
La sentencia move copia un valor de origen en un destino. En la siguiente tabla, se realzan varias opciones que soporta la sentencia Move.
Sentencia | Descripción de Ejemplo | Sintaxis de Ejemplo |
---|---|---|
Mover a Elemento move "xpath" to "xpath"; Nota: Una expresión XPath se encierra en comillas dobles.
|
Sentencia Move con referencia XPath simple. |
|
Sentencia Move con función de concatenar XPath. |
|
|
Sentencia Move con función substring-before XPath. |
|
|
Sentencia Move con función substring-after XPath. |
|
|
Sentencia Move con función substring XPath. |
|
|
Mover a Elemento move 'literal' to "xpath"; Nota: Un valor literal se encierra en comillas simples.
|
Sentencia Move con una cadena literal. |
|
Mover a Elemento move 'Boolean' to "xpath"; |
Sentencia Move con valor booleano como cadena literal. |
|
Mover una expresión resulta en un valor booleano. Tenga en cuenta que el filtro del ejemplo a continuación se encuentra en un nodo de grupo. |
|
|
Mover a Grupo move "xpath" to "xpath"; |
Mover un juego de elementos de un grupo a otro. El sistema asocia el nivel inicial de nombres de elementos y los nombres de grupo/lista del esquema de origen al esquema de destino. Para listas y grupos, el comportamiento por defecto es mover todos los elementos dentro del grupo/lista de origen al grupo/lista de destino (aun si no están definidos en el grupo/lista de destino). El servicio de negocio F1-MoveByName se puede usar para un control más específico del movimiento (sin tener que definir cada sentencia Move individual). |
Esta sentencia es equivalente a la siguiente sentencia:
|
Mover usando una Variable Temporaria |
Al mover una variable local temporal, no se encierra en comillas dobles. move "xpath" to $variable; |
|
Al mover una variable temporal, se encierra en comillas dobles. move "$variable" to “xpath”; |
|
|
Mover usando una Variable de Contexto move "xpath" to $$variable; move $$variable to “xpath”; |
Al hacer referencia a variables de contexto, de origen o de destino, no se usan comillas dobles. |
|
Mover usando una Ubicación Dinámica move "xpath" | 'literal' to evaluate("xpath" | $variable); move evaluate("xpath" | $variable) to "xpath" | $variable; |
La sentencia evaluate permite mover la ubicación de origen o de destino para que derive dinámicamente de una ubicación de elemento de esquema o variable. |
|
Move escape move escape("xpath" | $variable) to "xpath" | $variable; |
Move escape está disponible únicamente para los scripts de servicio y de conector. La sentencia escape busca contenido HTML en el valor de texto de origen y lo escapa, es decir, reemplaza los caracteres similares a HTML con caracteres especiales que se escapan de la presentación HTML. Al hacer esto, el texto se despliega como texto sin formato cuando forma parte de un elemento HTML. Nota: Esta función se debe utilizar únicamente si el texto se desplegará como parte de un elemento HTML y se sospecha que contendrá caracteres similares a HTML o, incluso, HTML maliciosos que no se deben presentar como HTML. Si se despliega incorrectamente usando un elemento que no es HTML, se verían caracteres de escape especiales (si corresponde) como parte del texto. Consulte Funciones y Atributos de Mapa de Interface de Usuario para obtener más información sobre cómo definir un elemento para el despliegue de contenido HTML.
|
|
Move null move null to "xpath"; |
Se puede remover información del documento de la instancia XML por medio de la sintaxis especial "move null". Tenga en cuenta que se puede especificar un nombre de nodo en la expresión XPath o un nombre de grupo. Si se especifica un grupo, tanto el grupo como todos los elementos secundarios se eliminarán del procesamiento. |
Para remover un nodo y todos sus nodos secundarios:
Para remover todos los nodos secundarios de un nodo de grupo con el sufijo "/*":
|
Sentencia Go To
El paso de edición de datos soporta la funcionalidad análoga al tipo de paso Ir a. La sintaxis es goto label;, donde la etiqueta representa si la ubicación en el campo de texto de edición de datos (identificado con esta etiqueta) o representa otro paso del script.
A continuación, se proporciona un ejemplo de cómo ir a otra ubicación en el mismo paso identificado con la etiqueta addSpouse.
if ("string(parm/spouse/name) != $BLANK")
goto addSpouse;
end-if;
addSpouse: invokeBO 'Person' using "parm/spouse" for add;
A continuación, se proporciona un ejemplo de cómo ir a otro paso del mismo script. La secuencia de pasos es la referencia que se usa como etiqueta.
if ("string(parm/spouse/name) != $BLANK")
goto 110;
end-if;
.
.
.
110: invokeBO 'Person' using "parm/spouse" for add;
Sentencia de Ramificación Condicional
El paso de edición de datos soporta la funcionalidad análoga al tipo de paso Ramificación Condicional. La sintaxis es branch (“xpath”) goto label else label;, donde:
-
La condición XPath en la sentencia branch se debe evaluar en un valor booleano de Verdadero o Falso.
-
Los destinos para las sentencias goto y else son etiquetas que representan otra ubicación en el campo de texto de edición de datos (identificado con esta etiqueta) o representan otro paso del script.
En el siguiente ejemplo, se usan las etiquetas para addSpouse y addAccount
branch ("string(parm/spouse/name) != $BLANK") goto addSpouse else addAccount;
Sentencia If
La sentencia if es similar a la sentencia de ramificación condicional. Se puede usar para estructurar la lógica del script. Esta sentencia puede incluir opcionalmente una sentencia else, pero siempre debe terminar con una sentencia end-if.
La sintaxis es if (“xpath”) else end-if;. La condición XPath se debe evaluar en un valor booleano de Verdadero o Falso. A continuación, se incluyen ejemplos.
Ejemplo en el cual XPath contiene una condición lógica simple.
if ("string(parm/spouse/name) != $BLANK")
//
// Create spouse since spouse name present
goto addSpouse;
else
//
// Create account without spouse
goto addAccount;
end-if;
Ejemplo en el cual XPath contiene una condición compleja.
if ("string(parm/spouse/name) != $BLANK and string(parm/hasSpouse) = true or boolean(parm/requireSpouse)")
//
// Create spouse since spouse name present
goto addSpouse;
end-if;
Ejemplo de un juego apilado de sentencias que se utiliza para evaluar múltiples valores posibles de un campo.
if ("parm/rowCount = 0")
//
// no rows found
goto quit;
end-if;
if ("parm/rowCount = 1")
//
// one row found
goto process;
end-if;
if ("parm/rowCount > 1")
//
// more than one row found
goto quit;
end-if;
quit: terminate;
El siguiente ejemplo de XPath muestra un valor booleano en función de la existencia del nodo. En este ejemplo, si existe el nodo en el documento de la instancia XML que se está procesando, la sentencia se evaluará en Verdadero. Si no se encuentra ningún elemento, la sentencia se evalúa en Falso.
if ("boolean(parm/spouse/name)")
goto addSpouse;
else
//
// Create account without spouse
goto addAccount;
end-if;
if ("not(parm/spouse/name)")
//
// Create account without spouse
goto addAccount;
else
goto addSpouse;
end-if;
Sentencia For
La sentencia for crea una lista de nodos o valores según la expresión XPath. Si especifica un nodo de lista, cada nodo secundario de la lista, junto con su contenido, estará disponible en el ciclo. Si especifica un nodo secundario directamente, solo habrá una lista de valores disponible en el ciclo.
La sintaxis es for ($variable in "xpathList") end-for;. La condición XPath se debe evaluar en un valor booleano de Verdadero o Falso.
Los siguientes ejemplos se basan en este esquema de ejemplo:
<schema>
<SAList type="list">
<id/>
<balance/>
</SAList>
<SAContributor type="list">
<id/>
</SAContributor>
</schema>
El ejemplo que especifica el nodo de lista en la expresión XPath donde están disponibles todos los nodos secundarios para procesar.
move "0" to $AccountBalance;
move "0" to $index;
for ($SAList in "SAList")
move "$SAList/balance + $AccountBalance" to $AccountBalance;
//
// keep track of each SA contributing to the balance in the SA Contributor list
move "1 + $index" to $index;
move "$SAList/id" to "SAContributor[$index]/id";
end-for;
Ejemplo que especifique un nodo secundario del nodo de lista de la expresión XPath. Solo están disponibles los valores de ese nodo para procesar.
move "0" to $AccountBalance;
for ($SABalance in "SAList/balance")
move "$SABalance + $AccountBalance" to $AccountBalance;
end-for;
Ejemplo que muestra cómo se puede utilizar un filtro para limitar las filas seleccionadas por el ciclo for.
move "0" to $AccountDebitBalance;
for ($SAList in "SAList[Balance>0]")
move "$SAList/balance + $AccountDebitBalance" to $AccountDebitBalance;
end-for;
Ejemplo que muestra el uso de un filtro al especificar nodos secundarios.
move "0" to $AccountCreditBalance;
for ($SABalance in "SAList[Balance<0]/balance")
move "$SABalance + $AccountCreditBalance" to $AccountCreditBalance;
end-for;
Procesamiento de Lista
En esta sección, se proporcionan detalles sobre el procesamiento de listas. Los ejemplos de esta sección hacen referencia al siguiente esquema:
<schema>
<parm type="group">
<name/>
</parm>
<Person type="group">
<names type="list">
<type/>
<name/>
</names>
</Person>
</schema>
Referencia a un Elemento de Lista. Se puede mover un valor a una instancia de lista determinada al hacer referencia a un nodo de identificación de la lista en un filtro. La sintaxis es move "xpath" to "xpathList[filter]/element";. Ejemplo:
move "parm/name" to "Person/names[type='main']/name";
Creación de una Nueva Instancia de Lista. Se puede utilizar una notación especial en una sentencia Move de destino para indicar que se debe crear una nueva instancia de lista. El signo "+" indica al procesador de script que se debe iniciar una nueva instancia de una lista para el elemento de destino. La sintaxis es move "xpath" to "+xpathList";. Ejemplo:
move "parm/name" to "Person/+names/name";
Supresión de una Instancia de Lista. Se puede suprimir una entrada de lista XML de la base de datos al mover un atributo de acción 'delete' al nombre del elemento. Para que una base de datos suprima una entrada de lista, es necesario un atributo action="delete" en el nodo de destino y una interacción de Objeto de Negocio de actualización posterior. La sintaxis es move 'delete' to "xpathList@action");. Ejemplo:
if ("parm/action = 'd'")
move "0" to $index;
for ($CCList in "CCList")
move "1 + $index" to $index;
if ("$CCList/id = parm/id")
move 'delete' to "CCList[$index]@action";
goto update;
end-if;
end-for;
end-if;
En el siguiente ejemplo, se muestra el XML resultante.
<root>
<CCList>
<id>9876538976</id>
<balance>309.98</balance>
</CCList>
<CCList action="delete">
<id>4321125899</id>
<balance>87.45</balance>
</CCList>
</root>
Funciones para el Procesamiento de una Lista
XPath proporciona varias funciones útiles para procesar los elementos de una lista, por ejemplo, count, sum y last.
Los siguientes ejemplos se basan en este documento XML de muestra:
<xml>
<ft>
<type>bill</type>
<date>20100101</date>
<amt>30.30</amt>
<cat>tax</cat>
</ft>
<ft>
<type>adj</type>
<date>20100301</date>
<amt>20.20</amt>
<cat>int</cat>
</ft>
<ft>
<type>bill</type>
<date>20100201</date>
<amt>10.10</amt>
<cat>tax</cat>
</ft>
</xml>
El siguiente es un ejemplo de una suma. La sintaxis es move "sum(xpathList/element)" to $variable;. El ejemplo suma el saldo total.
move "sum(ft/amt)" to $TotalBalance;
El siguiente es un ejemplo de una suma que usa un filtro para obtener un subtotal. El ejemplo suma el saldo de las entradas cuya categoría es ‘tax’.
move "sum(ft[cat='tax']/amt)" to $TaxBalance;
El siguiente es un ejemplo de una cuenta. La sintaxis es move "count(xpathList)" to $variable;. En el ejemplo, se encuentra la cuenta del número de entradas de Transacciones Financieras.
move "count(ft)" to $TranCount;
El siguiente es un ejemplo de ‘last’, que se utilizar para buscar la última entrada. La sintaxis es move "last(xpathList)" to $variable;. En el ejemplo, se encuentra la última cantidad en la lista de Transacciones Financieras.
move "ft[last()]/amt" to $LastAmount;
Declaración e Invocación de Objetos Basados en Esquema
Se puede invocar un objeto o un servicio de negocio, o un script de servicio en el paso de edición de datos. Para soportar la invocación dinámica, se puede declarar un nombre de área de datos dinámicos.
El esquema que se declara puede ser un esquema de objeto de negocio (BO), un esquema de servicio de negocio (BS), un esquema de script de servicio (SS), un esquema de área de datos (DA) o un esquema de mapa de interface de usuario. La sentencia declare variará en función del tipo de esquema, pero la sintaxis es análoga.
-
declareBO 'BO Name' | $variable | "xpath" as 'DynamicDataArea';
-
declareBS 'BS Name' | $variable | "xpath" as 'DynamicDataArea';
-
declareSS 'SS Name' | $variable | "xpath" as 'DynamicDataArea';
-
declareDA 'DA Name' | $variable | "xpath" as 'DynamicDataArea';
-
declareMap 'Map Name' | $variable | "xpath" as 'DynamicDataArea';
Al invocar un Objeto de Negocio, un Servicio de Negocio o un Script de Servicio, se puede especificar el nombre del objeto como un valor literal o puede ser un valor incluido en un elemento o una variable. Para cada invocación, se debe proporcionar una referencia XPath a un nombre de grupo.
Al invocar un objeto de negocio, se debe proporcionar una acción. La sintaxis es invokeBO 'BO Name' | $variable | "xpath" using "xpath" for action;. Las acciones válidas son las siguientes:
-
read. Esta acción lee la visualización actual de los datos del Objeto de Negocio.
-
add. Esta acción agregará el objeto y leerá y devolverá la visualización resultante del Objeto de Negocio.
-
fastAdd. Esta acción agregará el objeto, pero no realiza una "lectura" posterior para devolver la visualización resultante del Objeto de Negocio. Con fines de performance, esta opción es mejor que "add" si no existe ningún motivo para volver a leer el registro.
-
update. Esta acción actualizará el objeto y leerá y devolverá la visualización resultante del Objeto de Negocio. Esta acción ejecuta una 'fusión' de la información especificada en el documento XML de la solicitud del estado de cuenta con los datos del Objeto de Negocio existentes. El uso de esta acción permite al script indicar solamente los elementos que están cambiando.
-
fastUpdate. Esta acción actualizará el objeto, pero no realiza una "lectura" posterior para devolver la visualización resultante del Objeto de Negocio. Con fines de performance, esta opción es mejor que "update" si no existe ningún motivo para volver a leer el registro.
-
delete. Esta acción suprime el objeto.
-
replace. Esta acción es una alternativa para la acción de actualización. La acción de reemplazo reemplaza por completo los datos del Objeto de Negocio existentes con la información del documento de la solicitud. Por lo general, la acción de reemplazo se utiliza cuando un Objeto de Negocio contiene una lista, ya que es más simple reemplazar todas las instancias de una lista que intentar fusionar listas, lo cual requiere una lógica especial para suprimir una instancia de lista explícitamente.
Nota: La acción de reemplazo se debe utilizar cuando se utiliza la funcionalidad de mapa de interface de usuario para Cargar un Archivo CSV.Nota: Actualmente, la acción "replace" no está soportada para ningún objeto de mantenimiento incluido en una página "fija" que usa una metáfora de lista para mostrar todos los registros de la página a la vez. Divisa es un ejemplo de este tipo de página.
Ejemplos:
invokeBO 'BusinessObject' using "dataArea" for fastAdd;
invokeBO $variableBO using "dataArea" for fastUpdate;
invokeBO "daName/boElement" using "dataArea" for replace;
La sintaxis de las sentencias invoke tanto para un servicio de negocio como para un script de servicio es similar. El Servicio de Negocio y el Script de Servicio se especifica junto con la referencia XPath al nombre de grupo:
-
invokeBS 'BS Name' | $variable | "xpath" using "xpath";
-
invokeSS 'SS Name' | $variable | "xpath" using "xpath";
Los ejemplos usan la sentencia invokeBS, pero las sentencias son similares para la sentencia invokeSS.
invokeBS 'BusinessService' using "dataArea";
invokeBS $variableBS using "dataArea";
invokeBS "daName/bsElement" using "dataArea";
Advertencias de Objeto de Negocio. Tenga en cuenta que, en el caso del scripting del Asistente de Proceso de Negocios, las sentencias invoke también pueden indicar cómo manejar las advertencias.
Sintaxis | Descripción | Ejemplos |
---|---|---|
with warn asError |
Indica que una advertencia se debe considerar un error desplegado en el mapa de interface de usuario. El texto asError es opcional. |
|
with warn popup |
Indica que una advertencia se debe presentar en la ventana desplegable standard del marco. En este escenario, se presentan al usuario los botones Aceptar y Anular standard. Si el usuario hace click en Aceptar, el proceso debe continuar. Si el usuario hace click en Anular, se debe interrumpir el procesamiento. Esta es la configuración recomendada. |
|
with warn suppress |
Indica que se debe suprimir una advertencia. Este es el valor por defecto si no se agrega ninguna sintaxis de advertencia a la sentencia invoke. |
|
En el caso de los scripts del Asistente de Proceso de Negocios, también debe haber una lógica que siga la invocación para manejar errores y advertencias (si se usa con advertencia desplegable). La variable del sistema $WARNING se define como verdadera si el usuario hizo click en el botón Cancelar en la ventana desplegable de advertencia. Si se mostró un mapa, la lógica debería volver a desplegarlo (en el lugar donde se volverá a desplegar el mensaje de advertencia). Esto permite que el usuario realice posibles cambios y grabe nuevamente. Si no se mostró ningún mapa antes de la advertencia, la lógica debería finalizar.
La variable del sistema $ERROR indica que se recibió un error. Si se mostró un mapa antes del error, la lógica debería volver a desplegar el mapa en el lugar donde se mostrará el error. Si no se mostró ningún mapa, el producto proporciona el script de Asistente de Proceso de Negocios F1–HandleErr que debe usarse para desplegar el error. El siguiente es un ejemplo de la típica lógica de manejo de errores.
invokeBO "F1-DetermineBo/output/bo" using "boSchema" for update with warn popup;
if ("$WARNING")
if ("map_schema/action = 'DEL'")
terminate;
else
goto maintMap;
end-if;
end-if;
if ("$ERROR")
if ("map_schema/action != 'DEL'")
goto maintMap;
else
transferControl 'F1-HandleErr';
end-if;
end-if;
Variables del Sistema y Globales
Las siguientes tablas realzan las variables del sistema y globales disponibles para la escritura de scripts.
Variables del Sistema: Todos los Tipos de Scripts
Las siguientes variables del sistema están disponibles para todos los tipos de scripts (scripts de servicio, scripts de conector y scripts del Asistente de Proceso de Negocios).
Variable | Descripción | Ejemplo |
---|---|---|
$BLANK | Representa un nodo vacío. |
|
$CURRENT-DATE | Representa la fecha actual. En el caso de los scripts del Asistente de Proceso de Negocios, corresponde a la fecha del browser. En el caso de los scripts de servidor, corresponde a la fecha del servidor (la cual se ve afectada por la lógica de sustitución de la fecha del sistema). |
|
$CURRENT-STD-DTTM | Representa la fecha y la hora actuales expresadas en hora standard (es decir, sin ajustes por horario de verano). |
|
$DEVICE-OS | Representa el sistema operativo del dispositivo del usuario. |
|
$DEVICE-BROWSER | Representa el browser del dispositivo del usuario. |
|
$DEVICE-DISPLAY-TYPE | Representa el tipo de despliegue de la pantalla del dispositivo del usuario, es decir, si es de tamaño de escritorio, mediano o pequeño. Los valores resultantes pueden ser: oraDesktop, oraTablet y oraPhone. |
|
$DEVICE-INFO | Proporciona la combinación de las tres propiedades del dispositivo (DEVICE-OS, DEVICE-BROWSER y DEVICE-DISPLAY-TYPE) y separa el valor de cada propiedad con punto y coma. |
|
Variables del Sistema: Solamente Scripts del Asistente de Proceso de Negocios
Las siguientes variables del sistema están disponibles o se pueden aplicar únicamente a tipos de scripts del Asistente de Proceso de Negocios.
Variable | Descripción | Ejemplo |
---|---|---|
$DOUBLE_QUOTE | Representa una comilla doble. |
|
$SINGLE_QUOTE | Representa un apóstrofo. |
|
$SPACE | Contiene un valor de un solo espacio. |
|
$SYSTEM-DATE | Representa la fecha del servidor. Tenga en cuenta que esta fecha se ve afectada por la lógica de sustitución de fecha del sistema) |
|
Variables del Sistema: Solamente Scripts del Servidor
Las siguientes variables del sistema están disponibles o se pueden aplicar únicamente a tipos de scripts de servicio o de conector.
Variable | Descripción | Ejemplo |
---|---|---|
$ADDITIONAL-IP-INFO | Una solicitud HTTP incluye un campo de encabezado "dirección IP adicional". Esto se puede completar en una implementación si hay información disponible en el servidor proxy o el equilibrador de carga, como la dirección IP de origen. |
|
$CURRENT-DTTM | Representa la fecha y la hora actuales. |
|
$F1-INSTALLATION-TIMEZONE | Representa el código de la zona horaria definido en las opciones de instalación. |
|
$LANGUAGE | Representa el código de idioma que utiliza el script. Normalmente, es el idioma por defecto del usuario. |
|
$PROCESS-DATE | Representa la fecha del proceso. La fecha del proceso es diferente a la fecha actual porque la fecha del proceso permanece igual durante la toda la ejecución del proceso. Por ejemplo, si un script de servicio almacena varios objetos de negocio, la fecha del proceso se inicializa al iniciar la ejecución del script de servicio y cada objeto de negocio tiene la misma fecha de proceso fijada por defecto. La fecha actual, especialmente la fecha y la hora actuales, reflejará la hora real de procesamiento. |
|
$PROCESS-DTTM | Representa la fecha y la hora de proceso. Tenga en cuenta que la fecha y la hora de proceso se inicializan al iniciar un proceso determinado y no reflejan la fecha y la hora exactas de una actualización. |
|
$REQUESTING-IP-ADDRESS | Representa la dirección IP de la solicitud HTTP. Tenga en cuenta que, si la solicitud se enruta por medio de un servidor proxy o un equilibrador de carga, la dirección IP corresponde al servidor proxy o al equilibrador de carga, no al usuario final. Consulte la variable $ADDITIONAL-IP-INFO para obtener información. |
|
$USER | Representa la ID del usuario que ejecuta el script. |
Para los scripts de Asistente de Proceso de Negocios que necesitan conocer la ID de usuario del usuario actual, consulte Consejos y Trucos útiles. |
Variables Globales
Los scripts del Asistente de Proceso de Negocios y de servicio tienen acceso a los valores definidos en Contexto Global.
Cuando se inicia un script del Asistente de Proceso de Negocios desde la interface de usuario, estas variables se inicializan automáticamente. Se puede hacer referencia a ellas con un solo signo de dólar a la izquierda del nombre del campo. Por ejemplo, si PER_ID es una variable global soportada, en el script del Asistente de Proceso de Negocios, se puede hacer referencia a ella como $PER_ID:
move "$PER_ID" to "schema/customerId";
En el caso de los scripts de servicio, solo se puede hacer referencia a las variables globales si se ha invocado el script de servicio directamente desde un script del Asistente de Proceso de Negocios o una zona de un portal. Cuando se invoca un script de servicio desde un script del Asistente de Proceso de Negocios o una zona de portal, tendrá acceso al conjunto de variables de contexto globales que se completan en la sesión de la Interface de Usuario. Para el proceso de scripting de servicios, los campos globales se deben prefijar con dos signos de dólar (en lugar de uno, como se utiliza para el scripting del Asistente de Proceso de Negocios). Por ejemplo, si PER_ID es una variable de contexto global soportada, en el script de servicio, se puede hacer referencia a ella como $$PER_ID:
move $$PER_ID to "schema/customerId";
Sentencias Perform Script y Transfer Control
El paso de edición de datos soporta la funcionalidad análoga a los tipos de pasos Ejecutar script y Transferir Control. Estos se aplican solamente a scripts del Asistente de Proceso de Negocios.
Sintaxis | Valores Válidos | Comentarios |
---|---|---|
performScript |
'Nombre de Script del Asistente de Proceso de Negocios' | El script que se debe ejecutar se proporciona explícitamente. |
$Variable | El script que se debe ejecutar se encuentra en una variable. | |
"XPath" | El script que se debe ejecutar se encuentra en un elemento y se hace referencia a él con su XPath. | |
transferControl |
Análogo a la sentencia performScript |
Declarar Objeto de Negocio con Grupo de Objeto de Negocio
Esta sentencia es específica para los scripts del Asistente de Proceso de Negocios que planifican usar el Procesamiento del Mantenimiento del Objeto de Negocio Principal (F1–MainProc) para sus sentencias Generate Edit Map. Este script espera que los datos utilizados para desplegar en el mapa estén dentro de una etiqueta boGroup.
Sintaxis | Valores Válidos | Comentarios |
---|---|---|
declareBOWithBOGroup |
'Nombre de Objeto de Negocio' | El Objeto de Negocio se proporciona explícitamente. |
$Variable | El Objeto de Negocio se encuentra en una variable. | |
"XPath" | El Objeto de Negocio se encuentra en un elemento y se hace referencia a él con su XPath. |
La siguiente tabla realza la sintaxis adicional para esta sentencia.
Sintaxis | Valores Válidos |
---|---|
as |
'Nombre de Esquema Dinámico' |
Ejemplos:
declareBOWithBOGroup 'BusinessObject' as 'newMapSchema';
declareBOWithBOGroup $variableBO as 'newMapSchema';
declareBOWithBOGroup "daName/boElement" as 'newMapSchema';
Sentencia Invoke Map
El paso de edición de datos soporta la funcionalidad análoga al tipo de paso Invocar mapa. Esto solamente se aplica a scripts del Asistente de Proceso de Negocios.
Sintaxis | Valores Válidos | Comentarios |
---|---|---|
invokeMap |
'Nombre de Mapa' | El Mapa de Interface de Usuario se proporciona explícitamente. |
$Variable | El Mapa de Interface de Usuario se encuentra en una variable. | |
"XPath" | El Mapa de Interface de Usuario se encuentra en un elemento y se hace referencia a él con su XPath. |
La siguiente tabla realza la sintaxis adicional para esta sentencia.
Sintaxis | Valores Válidos | Comentarios |
---|---|---|
using |
"Nombre de grupo de Área de Datos" | Indica el área de datos que se debe transmitir al servidor o se debe recibir de él al presentar el formato HTML asociado con el mapa. |
target |
bpa |
|
page |
||
popup |
Consulte el tipo de paso Invocar mapa para obtener más información sobre los valores de destino.
Si se configura el mapa de Interface de Usuario para devolver un valor, se puede evaluar con la variable $MAP-VALUE.
invokeMap 'UI Map' using "dataArea";
invokeMap $variableMap using "dataArea";
invokeMap "daName/mapElement" using "dataArea" target bpa;
// $MAP-VALUE is a variable returned by the invoked map.
if ("$MAP-VALUE='continue' ")
goto 300;
else
terminate;
end if;
Sentencias Generate Edit Map
Las sentencias 'generate edit map' se utilizan para generar dinámicamente e iniciar un mapa de edición de Interface de Usuario en función de una definición de esquema. El esquema utilizado puede ser un esquema de Objeto de Negocio, un esquema de Servicio de Negocio, un esquema de Script de Servicio o un esquema de Área de Datos. Esto solamente se aplica a scripts del Asistente de Proceso de Negocios. La sentencia generate variará en función del tipo de esquema, pero la sintaxis es análoga.
Sintaxis |
---|
generateBOEditMap |
generateBSEditMap |
generateSSEditMap |
generateDAEditMap |
El código de Objeto de Negocio, el código de Servicio de Negocio, el código de Script de Servicio y el código de Área de Datos se pueden especificar usando un valor literal (encerrado en comillas simples), como variable temporal o haciendo referencia a una ubicación de un esquema XPath (encerrado en comillas dobles).
La siguiente tabla realza la sintaxis adicional para esta sentencia.
Sintaxis | Valores Válidos | Comentarios |
---|---|---|
using |
"Nombre de grupo de Área de Datos" | Indica el área de datos que se debe transmitir al servidor o se debe recibir de él al presentar el formato HTML asociado con el mapa. |
target |
bpa |
|
page |
||
popup |
Los valores de destino indican dónde se debe desplegar el mapa generado como se describe en el tipo de paso Invocar mapa. Si se configura el mapa de Interface de Usuario para devolver un valor, se puede evaluar con la variable $MAP-VALUE.
En los ejemplos, se usa generateBOEditMap, pero las sentencias son similares para los otros tipos de esquemas.
generateBOEditMap 'BO Name' using "dataArea";
generateBOEditMap $variableMap using "dataArea";
generateBOEditMap "daName/mapElement" using "dataArea" target bpa;
// $MAP-VALUE is a variable returned by the invoked map.
if ("$MAP-VALUE='continue' ")
goto 300;
else
terminate;
end if;
Sentencia Terminate
El paso de edición de datos soporta la funcionalidad análoga al tipo de paso Terminar.
El siguiente es un ejemplo de un simple paso Terminar que detendrá el script.
if ("not(parm/spouse/name)")
terminate;
else
goto addSpouse;
end-if;
La sentencia terminate with error solamente está disponible en un script de servicio.
Sintaxis | Atributos | Comentarios |
---|---|---|
terminate with error (x, y %n= element= ) |
'x' representa la categoría de mensaje | Requerido. |
'y' representa el número de mensaje | Requerido. | |
%n="Element XPath" o %n='literal' | Especifique los parámetros de sustitución que soporta el mensaje usando valores literales o referencias XPath. Cuando el valor que se sustituirá es un elemento de una lista, utilice la XPath del elemento de la lista calificado por la ocurrencia en la lista. | |
element='Element XPath' or element=$variable | Opcionalmente, especifique un nombre de elemento en un mapa de Interface de Usuario para realzar como parte del error. Cuando el elemento erróneo está dentro de una lista, utilice la XPath del elemento de la lista calificado por la ocurrencia en la lista. |
Ejemplo de un campo simple:
if ("string(customer/lastName) = $BLANK")
terminate with error (8000, 1001 %1="customer/lastName" %2='Last name required' element='customer/lastName');
end-if;
Ejemplo de finalización cuando el elemento que se debe marcar forma parte de una lista:
for ($list in "parm/hard/newBusinessObject/listName")
if //** check some condition for elementName
terminate with error (11000, 11000 %1="$list/elementName" element='$list/elementName');
end-if;
end-for;
Invocación de Código Groovy
Si tiene un script de conector o un script de servicio que combina scripting de XPath y scripting de Groovy, el paso de edición de datos soporta la capacidad de invocar el código Groovy mediante la sintaxis invokeGroovy 'método';, donde "método" es el nombre de un método definido en un paso Miembros de Groovy dentro del script. Solo los métodos que no reciben argumentos y regresan vacíos se pueden invocar así. Sin embargo, el método invocado desde el paso de datos de edición se puede soportar mediante código Groovy adicional en otros tipos de paso de Miembros de Groovy.
Ejemplo de paso de Datos de Edición:
invokeGroovy 'invoke';
Ejemplo de paso de Miembros de Groovy:
void invoke() {
initParms()
readBO()
initConfig()
retrieve()
updateBO()
}
Depuración de un Script del Asistente de Proceso de Negocios
Si un script del Asistente de Proceso de Negocios tiene una altura mayor que cero, los nodos seleccionados del área de datos del script se pueden desplegar durante el tiempo de ejecución. Los datos XML se despliegan durante la ejecución del script en el área de despliegue del script del Asistente de Proceso de Negocios. Especifique la XPath de un nodo XML de cualquier área de datos del script del Asistente de Proceso de Negocios entre los siguientes pares de caracteres: '%+' y '+%'.
Por ejemplo, todo el contenido del nodo de grupo de esquema denominado 'input' y el contenido específico del elemento de esquema denominado 'output/status' se desplegarán en el área de despliegue del script del Asistente de Proceso de Negocios. El texto de depuración se debe escribir en el área de texto del script del Asistente de Proceso de Negocios y no en el campo de edición de datos del script. El texto de depuración se puede declarar para cualquier paso explícito del script.
display input: %+input+% , and output status: %+output/status+%
Consejos y Trucos Útiles
En esta sección, se proporcionan algunas sugerencias sobre cómo implementar cierta lógica común.
Localización del Usuario Conectado en el Asistente de Proceso de Negocios
Para los scripts basados en servidor, la variable $USER se completa con el usuario actualmente conectado. Esta variable no está disponible para los scripts de Asistente de Proceso de Negocios. El Asistente de Proceso de Negocios puede llamar al script de servicio F1-GetUser si necesita esta información.
Emisión de un Error desde un Script de Asistente de Proceso de Negocios
Para los scripts basados en servidor, utilice la sentencia terminate with error para devolver un mensaje de error al usuario. Para desplegar ese error, el Asistente de Proceso de Negocios puede transferir el control a F1–HandleErr, como se describe en Declaración e Invocación de Objetos Basados en Esquema. Esto no se soporta con un script de Asistente de Proceso de Negocios. Una técnica disponible para que un Asistente de Proceso de Negocios emita un error es llamar al servicio de negocio F1-RethrowError y transferir los detalles del error. Este servicio de negocio completa los campos de error del sistema necesarios para emitir el error. A continuación, transfiere el control a F1–HandleErr.
if ("string($assignedToUser) != string(F1-GetUser/user)")
declareBS 'F1-RethrowError' as 'errorMsg';
move '11010' to "errorMsg/messageCategory";
move '11511' to "errorMsg/messageNumber";
move "$toDoEntryId" to "errorMsg/messageParameters/+parameters/parameterValue";
invokeBS 'F1-RethrowError' using "errorMsg";
transferControl 'F1-HandleErr';
end-if;