Agrega una transformación a un tipo
En esta guía, se describe cómo agregar una transformación a un tipo determinado en Manufacturing Data Engine (MDE).
Cómo elegir una transformación
En MDE, hay varias transformaciones disponibles. El paquete de configuración predeterminado proporciona dos transformaciones que se pueden asociar a cualquiera de los tipos disponibles en ese paquete de configuración predeterminado:
- Transformación Group Event Change: Esta transformación supervisa cualquier campo de una etiqueta o un grupo de etiquetas, y genera un evento cada vez que cambian los valores supervisados en cualquiera de esas etiquetas. Esta transformación se puede asociar a un tipo de cualquier arquetipo.
- Transformación de Windowing: Esta Transformación aplica una función de Windowing a todas las etiquetas de un tipo. El agrupamiento en ventanas hace referencia al resumen de varios registros durante un período en un solo registro. La transformación de ventana se puede asociar a cualquier tipo de cualquier arquetipo. Puede resumir los registros de etiquetas de 1 a 60 minutos. El resultado de la Transformación es un mensaje sin procesar que contiene los valores de resumen de la expresión de valor durante el período seleccionado.
El paquete de configuración predeterminado proporciona las clases de mensajes, los analizadores y los tipos necesarios para procesar los mensajes sin procesar que emiten estas dos transformaciones. Los dos tipos proporcionados para procesar los mensajes sin procesar que genera cada Transformation son los siguientes:
group-event-change-records: Es el tipo de destino para los mensajes de salida de la transformación de cambio de evento de grupo.window-transformation-records: Es el tipo de destino para los mensajes de salida de la transformación de ventana.
Para activar una Transformación, se debe seleccionar la Transformación especificada en la interfaz web de Type o asociarla al Type con el extremo de API de Configuration.
Cómo enumerar las transformaciones disponibles
Para explorar la lista de transformaciones disponibles en cualquier sistema de MDE, sigue estos pasos:
REST
Hay un extremo de la API de Configuration Manager dedicado para enumerar las transformaciones disponibles:
GET /configuration/v1/transformations
Devuelve el siguiente JSON con las Transformations disponibles y sus capacidades:
{
"transformations": [
{
"name": "eventChange",
"displayName": "MDE Event Change",
"description": "Monitors the value of one or more tag that has a common group key. Fires an event whenever any of the contributing tags changes its value",
"disabled": false,
"sample": {
"keyExpression": {
"displayName": "Key Expression",
"description": "A SpEL expression that extracts the group key from the MDE message.proto which groups one or more tags as one unit whose values will be monitored for a change. The key must evaluate to a string",
"value": "#message['tagName']"
},
"valueExpression": {
"displayName": "Value Expression",
"description": "A SpEL expression that extracts the value from the MDE message.proto to be monitored for a change. The value must evaluate to a string",
"value": "#message['data']['numeric'].toString()"
}
}
},
{
"name": "window",
"displayName": "MDE Numeric Value Windowing",
"description": "Create a periodic stats event that provides values such as average, min, and max for an expression that extracts a numeric value from the tag messages",
"disabled": false,
"sample": {
"durationMinutes": {
"displayName": "Window Duration in Minutes",
"description": "A positive integer that represents how long the window will summarize events before producing the summary tag, this is in the granularity of minutes and it cannot be higher than 2 hours",
"value": "1"
},
"valueExpression": {
"displayName": "Value Expression",
"description": "A SpEL expression that extracts the value from the MDE message.proto to be used as the numeric value of the tags that will be summarized. The value must evaluate to a number, and it's internally out",
"value": "#message['data']['numeric']"
},
"id": {
"displayName": "Window Unique ID",
"description": "A unique ID that represents this instance of the window transformation, this should be unique if you are adding multiple instances of the window transformation to the same type",
"value": "1-min-window"
}
}
}
]
}
Console
En la interfaz web, en la sección "Types", abre el menú Edit type version para un tipo determinado y expande la sección Transform & connect del panel.

Cómo asociar una transformación a un tipo
Asociar cualquier tipo existente a una Transformación disponible transforma todas las etiquetas de ese tipo. El resultado de la transformación se transfiere como etiquetas nuevas en el MDE de los tipos transformados. Los nombres de etiquetas transformados tienen un nombre nuevo derivado del nombre de etiqueta original y el nombre de la transformación.
Estos son los pasos para asociar un Type a una Transformation:
REST
Para asociar una transformación a una llamada de Type determinada, llama al método PATCH en este extremo de la API de Configuration Manager:
PATCH /configuration/v1/types/TYPE_NAME/versions/VERSION_NUMBER
El cuerpo de la solicitud debe contener la lista de Transformations que se adjuntarán al tipo y el valor de sus parámetros de configuración:
{
"transformations": [
{
"window": {
"id": "WINDOW_TRANSFORMATION_IDE",
"durationMinutes": WINDOW_TRANSFORMATION_MINUTES,
"valueExpression": "VALUE_EXPRESSION_VALUE"
}
},
{
"eventChange": {
"keyExpression": "KEY_EXPRESSION_VALUE",
"valueExpression": "VALUE_EXPRESSION_VALUE"
}
}
]
}
Reemplaza los siguientes elementos en la llamada de muestra anterior:
TYPE_NAME: Es el nombre del tipo que se modificará.VERSION_NUMBER: Es la versión del Type que se modificará.
Reemplaza los siguientes elementos en el cuerpo para configurar una transformación de ventana:
WINDOW_TRANSFORMATION_ID: Es un identificador único de la transformación que también se adjuntará a los nombres de las etiquetas originales después de que la transformación los procese.WINDOW_TRANSFORMATION_MINUTES: La duración, en minutos, del período que se aplicaráVALUE_EXPRESSION_VALUE: Es el elemento del prototipo de etiqueta que se supervisará como campo de valor. Para un valor numérico, la etiqueta predeterminada es#message['data']['numeric'].
Reemplaza los siguientes elementos en el cuerpo para configurar una transformación de cambio de evento:
KEY_EXPRESSION_VALUE: Es el elemento del arquetipo de etiqueta que se usa para agrupar las etiquetas que se deben supervisar juntas. Para supervisar una sola etiqueta, debe ser#message['tagName'].VALUE_EXPRESSION_VALUE: Es el elemento del arquetipo de etiqueta que se usa para supervisar el cambio de valor. Debe resolverse comoString. En una etiqueta predeterminada numérica, es#message['data']['numeric'].toString().
Console
Para asociar una Transformación a un Tipo, abre la sección de la interfaz web "Editar versión del tipo" en la pestaña "Tipo".
Expande la sección "Transformar y conectar":

Para agregar una Transformación, selecciona la transformación requerida de la lista y haz clic en "AGREGAR":

Luego, proporciona los parámetros obligatorios y haz clic en "GUARDAR":

Para la transformación Window, los parámetros son los siguientes:
WINDOW_TRANSFORMATION_ID: Es un identificador único de la transformación que también se adjuntará a los nombres de las etiquetas originales después de que la transformación los procese.WINDOW_TRANSFORMATION_MINUTES: La duración, en minutos, del período que se aplicaráVALUE_EXPRESSION_VALUE: Es el elemento del prototipo de etiqueta que se supervisará como campo de valor. Para un valor numérico, la etiqueta predeterminada es#message['data']['numeric'].
Para la Transformación de cambio de evento, los parámetros son los siguientes:
KEY_EXPRESSION_VALUE: Es el elemento del arquetipo de etiqueta que se usa para agrupar las etiquetas que se deben supervisar juntas. Para supervisar una sola etiqueta, debe ser#message['tagName'].VALUE_EXPRESSION_VALUE: Es el elemento del arquetipo de etiqueta que se usa para supervisar el cambio de valor. Debe resolverse comoString. En una etiqueta predeterminada numérica, es#message['data']['numeric'].toString().