Solución de problemas: ¡Mi regla de automatización no funciona!

La primera pregunta que hay que responder es: What exactly is “not working”? El registro de la regla puede ayudarte a comprender lo que ha sucedido.

Opción 1: la regla no se activa en absoluto (no hay registros en el registro)

Asegúrate de que la regla está activa y de que el desencadenante es correcto. Asegúrate de que realmente has realizado la acción que corresponde al desencadenante.

Opción 2: la regla se activa, pero el filtro no coincide

Comprueba dos veces el filtro. ¿Quizás la entidad sobre la que estás intentando aplicar la regla no coincide realmente con el filtro?

Los errores de filtrado más comunes son:

  • Error tipográfico en el nombre (por ejemplo, EntityState el nombre es “InProgress”, mientras que el estado se denomina «En curso»)
  • Utilizar un filtro por Proceso para las entidades que no tienen Proceso (entidades ExD globales, Asignaciones, Asignaciones de equipo, Comentarios, etc.)
  • Utilizar un filtro por ID para algunas entidades que no son elementos de trabajo y esperar que el filtro se aplique al ID del elemento de trabajo (por ejemplo, para filtrar un comentario añadido al elemento n.º 123, debemos filtrar por General.ID es 123, y no por ID es 123)
  • Uso de un filtro por campos no obligatorios para el desencadenador Crear (el valor aún no estaba presente cuando se activó la regla)
  • Utilizar un filtro por equipo responsable, cuando en realidad se quería utilizar un filtro por equipo asignado (es decir, utilizar un filtro por equipo)
rule1

Opción 3: la regla se activa, pero falla con un error

¿Cuál es el mensaje de error?

tiempo de espera

O bien la regla no está redactada de forma óptima y debería revisarse, o bien la regla está realizando una llamada a un recurso externo que es demasiado lento. Más información sobre los tiempos de espera

HTTPTpRestService Solicitud completada con código non-2xx de estado: BadRequest

rule2

El mensaje de error suele ser muy claro. Debes encontrar la llamada GET API defectuosa y corregirla:

  • Asegúrate de que todos los nombres de los campos sean correctos.
  • Asegúrese de que todos los nombres de tipos de entidad sean correctos (se utilizan nombres reales en lugar de términos ).

Más información sobre la resolución de problemas en las llamadas API GET

HTTPTargetprocessApiException: El servidor devolvió un error: BadRequest (Error durante la deserialización del recurso)

HTTP El servidor devolvió un error

Comprueba dos veces el comando que has devuelto. ¿Es una llamada POST API válida?

Más información sobre la resolución de problemas con las llamadas POST a la API

PipelineProcessingException: El valor del campo de referencia debe ser un ID numérico o una referencia de entidad real.

PipelineProcessingException

Intentar establecer un objeto (como EntityState, Lanzamiento, Proyecto, Equipo, etc.) utilizando su nombre (en lugar de su ID).

Debe utilizar ID o bien otro tipo de acción ( MoveToState en lugar de Actualizar).

TargetprocessApiException: No se puede ejecutar el comando. MoveToState

No se puede ejecutar el comando. MoveToState

Comprueba qué entidad exacta está intentando mover la regla a qué estado exacto. Este error significa que al menos uno de los parámetros ( resourceType,resourceId,stateName o ) stateKind no es válido. Los ejemplos más comunes de parámetros no válidos son:

  • resourceType y no resourceId son coherentes (por ejemplo, resourceId es para un error, mientras que resourceType dice “UserStory” )
  • un estado con no stateName existe en el proceso para la entidad con este resourceId
  • una entidad con esto resourceId no existe
  • resourceType no está escrito correctamente (error tipográfico, espacio adicional, término en lugar del nombre real)

Promesas activas restantes: La ejecución se ha completado, pero x de las y promesas creadas durante la ejecución permanecen sin cumplir

rule4

Hay varias llamadas a la API que se realizan en paralelo con Promise.all, y al menos una de ellas está fallando. Corrija el error en la llamada a la API (si es fácil de encontrar) o separe las llamadas para obtener un error más significativo.

Advertencia: No olvide agrupar las llamadas para que se ejecuten en paralelo una vez que haya encontrado y corregido la llamada API defectuosa.

TargetprocessApiException: No se puede ejecutar en un recurso abstracto

Intento de actualizar un campo personalizado utilizando «Asignable» o «General» como tipo de entidad. Aquí hay un ejemplo de acción de Javascript que produciría dicho error:

const api = context.getService("targetprocess/api/v2");
const assignables = await api.queryAsync("Assignable", {
  select: ___PROTECTED_13___,
  where: "(EntityType.Name='UserStory' or EntityType.Name='Task') and Project.Process.Name='Kanban'"
});

return assignables.map(assignableId => ({
  command: "targetprocess:UpdateResource",
  payload: {
    resourceType: "Assignable",
    resourceId: assignableId,
    fields: {
      "Work Type": "Business Project"
    }
  }
}));
Una forma adecuada es utilizar el tipo de entidad exacto en su lugar:
const api = context.getService("targetprocess/api/v2");
const assignables = await api.queryAsync("Assignable", {
  select: "{id,type:EntityType.Name}",
  where: "(EntityType.Name='UserStory' or EntityType.Name='Task') and Project.Process.Name='Kanban'"
});

return assignables.map(assignable => ({
  command: "targetprocess:UpdateResource",
  payload: {
    resourceType: assignable.type,
    resourceId: assignable.id,
    fields: {
      "Work Type": "Business Project"
    }
  }
}));

Script no válido: token inesperado

Token inesperado La sintaxis de la regla no es válida; normalmente significa que no se ha copiado correctamente. El error más común es copiar el código JSON y pegarlo en la acción Javascript (en lugar de en la vista Raw JSON). Intentar modificar la regla en la vista JSON sin formato también puede provocar este error. Las acciones correctas son:
  • Para aplicar código JSON, siga los pasos tal y como se describen en Cómo aplicar JSON sin procesar a partir de ejemplos.
  • Para modificar la regla, vuelve a la interfaz de usuario (haciendo clic de nuevo en «Vista JSON sin formato») y solo entonces añade algunas modificaciones

ReferenceError: x no está definido

ReferenceError En Javascript, al igual que en cualquier otro código, tenemos que definir una variable antes de usarla. A continuación se muestra un ejemplo de acción de JavaScript que produciría este error:
const api = context.getService("targetprocess/api/v2");
const count = await api.getByIdAsync(args.ResourceType, args.ResourceId, {
    select: "assignments.count"
});

return {
  command: "targetprocess:UpdateResource",
  payload: {
    resourceType: args.ResourceType,
    resourceId: userStoryId,
    fields: {
      Assigned: count
    }
  }
};

Error de tipo: No se puede leer la propiedad «x» de null

No se puede leer la propiedad «x» de null Intentando leer un campo de un objeto vacío. Por ejemplo, si Feature no se configura aquí, obtendremos un error:
const api = context.getService("targetprocess/api/v2");
const feature = await api.getByIdAsync("Feature", args.Current.Feature.Id, {
    select: "{name,description}"
});

PipelineProcessingException: La acción produjo x intenciones, lo que excede el número permitido de intenciones por acción

PipelineProcessingException Se ha superado el límite del número de acciones realizadas por el código Javascript. ¿Cuántas acciones estás intentando realizar con tus reglas? ¿Se puede reducir este número? ¿Quizás se puedan agrupar varias acciones?

Se detectó un bucle de reglas y se interrumpió la aplicación del resultado

bucle de reglas Cuando intentas activar una actualización en el mismo campo para el que tienes un cambio, puede producirse un bucle de automatización. A continuación se muestra un ejemplo de la regla. actualización del disparador Debes aplicar algunos filtros para evitar el bucle. Aplicar filtros

Opción 4: la regla se activa, la acción se ejecuta sin errores, pero no se obtiene el resultado deseado

  1. Intenta escribir en el registro algunas variables que te ayuden a solucionar el problema
  2. Intenta dividir la regla en partes más pequeñas para comprobar dónde está exactamente el problema
  3. Si nada de esto le ayuda, póngase en contacto con nuestro equipo de ventas en tp-sales@apptio.com para solicitar el servicio de desarrollo de clientes, y nuestros desarrolladores ajustarán su regla de automatización por usted