ServiceNow - Desarrollo

ServiceNow proporciona una gran cantidad de funciones y aplicaciones integradas, que podemos usar fácilmente para implementar ITSM en cualquier organización. Al mismo tiempo, existen requisitos comerciales para configurar diferentes procesos y funciones. ServiceNow es altamente personalizable y los desarrolladores pueden crear fácilmente aplicaciones y módulos basados ​​en los requisitos del cliente utilizando principios de Javascript.

Javascript es obligatorio para las secuencias de comandos de ServiceNow. En esta sección, le daremos una descripción general del desarrollo de ServiceNow.

Descripción general de la creación de aplicaciones

ServiceNow proporciona una aplicación llamada “Studio”, donde puede crear sus nuevas aplicaciones, dar los códigos fuente, crear nuevas tablas para sus aplicaciones, etc. Studio proporciona una interfaz guiada y fácil de usar para crear nuevas aplicaciones. Creemos una nueva aplicación para el siguiente caso de BookWorm ltd.

El equipo de TI de Frontend necesita una aplicación en ServiceNow en la que el Gerente pueda publicar el turno ROTA (turno de rotación). Habría un turno de 6 horas para cada empleado y el equipo debe brindar soporte 24 x 7.

Desde el navegador goto Studio, se abrirá una nueva ventana. Haga clic en Crear aplicación. Se le pedirá que ingrese el nombre y la descripción de la aplicación. Finalmente, haz clic en Crear.

Encontrará la página de la aplicación a continuación. Ahora es el momento de crear una tabla para nuestra aplicación. Vaya a "Crear archivo de aplicación".

Haga clic en Tabla en Modelo de datos y haga clic en crear. Se le pedirá que ingrese los detalles de la nueva tabla. Dé el nombre de la tabla y mantenga los detalles restantes como predeterminados.

Ahora desplácese hacia abajo y comience a definir las columnas para estas tablas. Tenemos la definición de la columna a continuación, el punto importante a tener en cuenta aquí es que hemos seleccionado la referencia de sys_user en la columna Miembro.

Ahora, haga clic en la columna Turno y seleccione "Crear lista de opciones" como aquí, crearemos opciones de turno como 6 am-12pm, 12 pm-6pm, 6 pm-12am y 12 am-6am.

Entonces, ahora que hemos creado la tabla, nuestra aplicación en el estudio se ve así.

El estudio ha creado automáticamente formulario, lista, módulo, menú de aplicación para nosotros. Podemos crear módulos, tablas, UI, etc. adicionales desde la opción de crear archivo de aplicación, como hicimos para crear la tabla ROTA.

Ahora veamos cómo se ve nuestra aplicación en servicio ahora. Busque Frontend_IT_ROTA en la barra de navegación y vaya a nuestro nuevo módulo.

Sigamos adelante y agreguemos algunos registros ROTA nuevos en nuestra aplicación. Haga clic en el botón Nuevo.

Política y acciones de UI

ServiceNow define las políticas de IU como una herramienta a través de la cual podemos cambiar dinámicamente el comportamiento de la información en un formulario y controlar los flujos de procesos personalizados para las tareas. La acción de la interfaz de usuario, por otro lado, se utiliza para hacer que la interfaz de usuario sea más interactiva, personalizada y específica para las actividades del usuario. Entendamos esto con la ayuda de un ejemplo.

Supongamos que tenemos que configurar el formulario Incidente de tal manera que, si se asigna algún incidente al grupo de asignación del equipo de TI de Frontend, el campo Servicios debería volverse invisible y los elementos de Configuración deberían desactivarse. La política de la interfaz de usuario aquí es, "si el grupo de asignación se selecciona como equipo de TI frontend" y las acciones de la interfaz de usuario aquí, es "El campo de servicios debería volverse invisible y el campo del elemento de configuración debería desactivarse".

La acción de la interfaz de usuario se puede implementar a través de una interfaz fácil de usar y también a través del script del cliente. Escribir el script del cliente nos ayudará a realizar operaciones avanzadas en los campos. También demostraremos la secuencia de comandos del cliente más adelante en esta sección.

El punto importante a tener en cuenta aquí es que las acciones de la interfaz de usuario son más rápidas y se ejecutan primero, seguidas de los scripts del cliente. Creemos una política y una acción de IU para nuestro caso de uso. Desde la barra de navegación, abra el módulo "Política de IU" en la aplicación "IU del sistema" y haga clic en el botón Nuevo.

Dar el nombre de la mesa, es Incidente en nuestro caso. Mantenga la aplicación como Global. Si no puede encontrar la opción de global, navegue hasta la rueda dentada en la esquina superior derecha y desde la pestaña de desarrollador seleccione la aplicación como global.

Ahora, comience a dar las condiciones en la siguiente sección. Sería “El grupo de asignación es el equipo de TI de Frontend” en nuestro caso. A continuación, hay algunas casillas de verificación, que son las siguientes:

  • Global - marque si lo desea, sus políticas de interfaz de usuario se implementarán globalmente.

  • On load - marque si lo desea, para ejecutar su política de IU cada vez que se actualice la página.

  • Reverse if false - Marque si lo desea, para revertir todas las acciones que creamos si las condiciones cambian.

  • Heredar: marque si lo desea, la tabla (en la que se crea la política de IU) que amplía la tabla especificada hereda esta Política de IU.

Complete todos los detalles requeridos y presione enviar.

Ahora, abra la política de la IU nuevamente y encontrará la opción para ingresar las acciones de la IU. Démosle las acciones de la interfaz de usuario según nuestro caso de uso. Haga clic en el botón Nuevo en la sección de acciones de la interfaz de usuario.

Seleccionaremos las siguientes acciones para los campos de elementos de Servicios y Configuración.

Haga clic en enviar para confirmar sus acciones de IU y, finalmente, haga clic en 'Actualizar' para guardar los cambios en la política de IU. Ahora puede ir a los formularios de incidentes y verificar su política y acciones de UI.

Scripting de ServiceNow

Hay dos tipos de secuencias de comandos en ServiceNow, que son del lado del cliente y del lado del servidor. La secuencia de comandos del lado del servidor significa que el procesamiento tiene lugar en el servidor web, mientras que la secuencia de comandos del cliente significa que el procesamiento tiene lugar en la máquina del usuario. Hay tareas específicas que pueden realizarse con cada tipo de script. Analicemos ejemplos de ambos guiones:

Secuencias de comandos del lado del cliente

La secuencia de comandos del lado del cliente se puede utilizar en varios escenarios, como completar algunos valores predeterminados en el campo del formulario, mostrar algún mensaje de alerta, establecer el valor en un campo según la respuesta del usuario en otro campo en un formulario, alterar la lista de opciones, etc. Hay tres tipos principales de scripts de cliente.

  • Onload (): se ejecuta cuando se carga el formulario.

  • Onchange (): se ejecuta cuando se cambia un campo particular en el formulario.

  • Onsubmit (): se ejecuta cuando se envía el formulario.

Creemos un script de cliente para dos casos de uso. En nuestra nueva aplicación, "Frontend IT team ROTA", implementaremos una alerta "Utilice esta aplicación una vez a la semana, para establecer la rotación de turno", una vez que se cargue la aplicación. Luego, mostraremos una alerta "El miembro tiene derecho a la asignación de turno", si el horario de turno se selecciona de 12 a.

Navegue al módulo Studio, abra la aplicación y haga clic en el archivo 'Crear aplicación'. Luego, seleccione el script del cliente en la opción de desarrollo del cliente y proporcione los detalles requeridos a continuación:

Desplácese hacia abajo y dé el guión. Daremos una alerta como se muestra a continuación.

Function onLoad() {
alert (“Please use this application once a week to set the shift rotation”);
}

Haga clic en enviar y cargue su nueva aplicación para ver el resultado.

Ahora, implementemos el siguiente caso de uso. Aquí, usaremos onChange. La función onChange se pasa automáticamente con 5 argumentos por ServiceNow.

  • Control - Es el campo para el que está configurado el Client Script.

  • OldValue - Es el valor del campo, cuando se carga el formulario (antes del cambio).

  • newValue - Es el valor del campo después del cambio.

  • isLoading- Es el valor booleano que indica si el cambio se está produciendo como parte de una carga de formulario. El valor es verdadero si el cambio se debe a una carga de formulario. Cuando se carga el formulario, todos los valores de campo en el formulario cambian.

  • isTemplate- Es el valor booleano que indica si el cambio ocurrido se debe a la población del campo por una plantilla. El valor es verdadero si el cambio se debe a la población de una plantilla.

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '12am-6pm') {
      alert("The member is entitled for shift allowance");
      return;
   }
}

Clase Glideform (g_form)

El glideform es la clase que se usa para controlar los formularios y los campos de los formularios. Podemos realizar tareas como Ocultar un valor de campo, establecer el valor de campo en función de la respuesta en los otros campos, agregar campos a la lista de opciones, etc.

La clase de forma de deslizamiento viene con muchos métodos. Algunos métodos importantes son addOption (), clearOptions (), showFieldMsg (), clearMessages (), clearValue (), setValue (), etc.

Creemos un script de cliente en forma de incidente para completar algún mensaje en el campo de descripción, si el grupo de asignación está seleccionado como el equipo de TI de Frontend. Vaya a las políticas de IU y cree una nueva política. Indique la condición en la sección "Dónde presentar la solicitud" como "El grupo de asignación es el equipo de TI de Frontend".

Envíe la política de IU, ábrala nuevamente y luego haga clic en la vista avanzada. Posteriormente, encontrarás la opción de dar el guión.

El script se completa automáticamente con la función onCondition (). La función onCondition se ejecutará automáticamente una vez, se cumpla la condición que le hemos dado en la política de UI. Otro punto a tener en cuenta es que hay dos scripts, "Ejecutar si es verdadero" y "Ejecutar si es falso".

El script 'ejecutar si es verdadero' se ejecutará una vez que se cumpla la condición y si cambiamos los valores en los campos de manera que la condición que hemos mencionado ya no se cumpla, entonces se ejecutará el script en 'ejecutar si es falso'.

Escribamos un guión para ambos. Aquí, usaremos los métodos setValue y clearValue. Para obtener el nombre del campo, que debe mencionarse en el script, abra el formulario de incidente y haga clic con el botón derecho en el campo deseado, puede encontrar el nombre del campo en el formato "Mostrar - <nombre del campo>"

On true script

function onCondition() {
   g_form.clearValue('description');
   g_form.setValue(‘description’,'**Please mention server name, instance name and error code**');
}

On false script

function onCondition() {
   g_form.clearValue('description');
}

Ahora, abra el formulario de incidentes y verifique el resultado.

Secuencias de comandos del lado del servidor

Los scripts del lado del servidor se ejecutan en el servidor o la base de datos de ServiceNow. Las secuencias de comandos del lado del servidor tienen dos categorías:

  • Reglas del negocio

  • El guión incluye

Echemos un vistazo a cada categoría una por una.

Reglas del negocio

El módulo de reglas comerciales se puede encontrar en Aplicación de definición del sistema. Para crear una regla comercial, haga clic en nuevo. Podemos crear una regla comercial simple usando acciones de reglas comerciales, que tienen una interfaz desplegable simple.

Puede utilizar la acción de la regla empresarial para establecer los valores del campo o para agregar un mensaje en el formulario. Podemos elegir cuándo ejecutar la regla comercial de la siguiente manera:

  • Before - La lógica en la regla de negocio se ejecuta antes de la operación de la base de datos.

  • After - La lógica de la regla de negocio se ejecuta después de la operación de la base de datos.

  • Async - Async Business Rules ejecuta su lógica después de que ocurre una operación de base de datos, pero el programador pone en cola la tarea para que se ejecute lo antes posible, pero no necesariamente inmediatamente después de la operación de la base de datos.

  • Display - Display Business Rules ejecuta su lógica, cuando se carga un formulario y se carga un registro desde la base de datos.

También podemos elegir la operación de la base de datos, en la que se debe ejecutar la regla de negocio. Creemos una acción de regla de negocio, en la aplicación ROTA del equipo de TI de Frontend, que creamos en la última sección.

Tenemos que establecer el valor en el campo Observación como “Monitorear trabajos por lotes XO887” si el horario de turno es de 12 a. M. A 6 a. M. Dé el nombre y la tabla frontend_it_rota. En el interior, cuando se debe ejecutar la pestaña, indique la condición, ya que el turno es de 12 a.

La pestaña Acción interior proporciona su condición para el campo de comentario.

También podemos incluir nuestro script personalizado en esta regla comercial. Para comenzar a escribir el script personalizado, marque la casilla de verificación Avanzado y verá la nueva pestaña Avanzado para escribir el script.

Escribamos un script para abortar la transacción de inserción cuando no se proporciona el campo de miembro, hora o fecha. Usaremos objetos 'actuales' y 'anteriores' para este propósito.

(function executeRule(current, previous /*null when async*/)) {
   if((current.member = ' ') || (current.date = ' ') || (current.shift = ' '){
      current.setAbortAction(true);
   }
}

Incluir guión

Usando secuencias de comandos, podemos escribir funciones o clases personalizadas y luego usarlas en otras secuencias de comandos tantas veces como necesitemos. Son una especie de scripts reutilizables; podemos usar en otros scripts del lado del cliente o del lado del servidor. Sin embargo, solo se ejecutan cuando los otros scripts los llaman explícitamente. Para crear un nuevo script include, tenemos un módulo "Script include”En la aplicación“ Definición del sistema ”. Haga clic en nuevo para crear un nuevo script incluido.

En el formulario de inclusión de secuencia de comandos, proporcione el nombre de la inclusión de secuencia de comandos. El campo de nombre de API es el nombre interno del script include y se utiliza cuando se llama a este script include desde otras aplicaciones. Marque la casilla de verificación del cliente invocable, si desea utilizar este script, inclúyalo en los scripts del lado del cliente. En la aplicación, proporcione la aplicación para la que se utiliza este script. En el campo "accesible desde", indique el alcance de la aplicación.

Escribamos un script para el siguiente caso en la aplicación ROTA del equipo de TI de Frontend. Primero, escribiremos un script include, que verificará un carácter no válido en cualquier campo. Definiremos una función, que tomará el argumento como una cadena y devolverá verdadero o falso, según los caracteres de la cadena.

Usaremos esta función en nuestra secuencia de comandos de reglas comerciales para validar, si el valor dado en el campo Miembro (Nombre) (en la aplicación ROTA del equipo de TI de la interfaz), no tiene ningún carácter no válido al enviar el formulario.

Abra el módulo de inclusión de secuencias de comandos, a continuación se muestra la secuencia de comandos que utilizaremos.

function validatefieldcharacters(fieldinput) {
   var validcharacters = /^[a-zA-Z]+$/;
   if(fieldinput.value.match(validcharacters)) {
      return true;
   } else {
      return false;
   }
}

Ahora, anotemos el script de reglas comerciales para validar el campo Miembro. Abra el módulo de reglas de negocio y cree una nueva regla de negocio para nuestra aplicación Frontend IT team ROTA.

var memberfieldstatus = validatefieldcharacters(current.member)
   if(memberfieldstatus == false) {
   gs.addErrorMessage(" Special characters not allowed in member field");
   current.setAbortAction(true);
}

Depuración

Podemos usar varias técnicas de depuración, si nuestro script no está funcionando según las expectativas o si estamos recibiendo algún error. Analicemos varias formas en las que podemos depurar el script del lado del cliente y del lado del servidor.

Depurar scripts de cliente

La mejor forma de depurar la secuencia de comandos del cliente es consultar los registros. Javascript proporciona el método jslog () para escribir mensajes en registros de Javascript. El método jslog () acepta mensajes, que queremos en los registros en el argumento. A continuación se muestra un ejemplo sobre cómo podemos implementar jslog (). Puede utilizar el siguiente script en el script de reglas comerciales.

function onLoad(){
   jslog("This log is displayed from jslog().");
   jslog("The value of Member field is = " + g_form.getValue('Member'));
}

Esto le dará el valor dado en el campo de miembros en los registros. En este caso, hemos utilizado el método getvalue para recuperar el valor del campo miembro. Ahora, el siguiente paso es encender los registros. Vaya a la opción de configuración en la esquina superior derecha y haga clic en la pestaña de desarrollador. Active la opción "Registro de Javascript y observador de campo".

Los registros de JavaScript se abrirán en una nueva sección en la parte inferior de la ventana principal del navegador de ServiceNow.

Además de jslog (), también podemos usar declaraciones try / catch que generalmente usamos en Javascript para depurar los scripts.

Depurar el script del lado del servidor

La forma más común de depurar el script del lado del servidor es utilizando el módulo "Depurador de script". El depurador de secuencias de comandos se puede utilizar para colocar puntos de interrupción, recorrer el código paso a paso, ver el valor de las variables, etc. Para acceder al depurador de secuencias de comandos, busque "depurador de secuencias de comandos" en la barra de navegación. Está presente dentro de la aplicación "Diagnóstico del sistema".

Aparte de esto, también podemos referirnos al módulo “Registros de la aplicación”, que está presente dentro de la “Aplicación de registro del sistema”.