Creación de widgets basados en los resultados de Planificación laboral#

Puede crear widgets utilizando los resultados generados por el Módulo de planificación laboral. Estos son los puntos clave que hay que tener en cuenta:

  • Seleccione la fuente de datos adecuada en función del tipo de resultados que desee utilizar:

    • RESULTADOS DE LA PREVISIÓN DE LP para ver los resultados de la previsión.

    • SEGUIMIENTO DE PROGRESO DE LA DEMANDA DE LP para conocer los resultados del seguimiento de la demanda.

    • SEGUIMIENTO DE PROGRESO LABORAL DE LP para conocer los resultados del seguimiento del progreso de las actividades laborales.

    • PRECISIÓN DE LA DEMANDA DE LP para ver los resultados de la precisión de la demanda.

    • PRECISIÓN LABORAL DE LP para los resultados de precisión de las actividades laborales.

  • Debe convertir determinadas matrices de objetos en datos de columna. Para obtener más información, consulte Conversión de matrices de objetos en columnas de datos independientes.

El Módulo de planificación laboral presenta inicialmente los resultados de previsión, seguimiento de progreso, y precisión en un formato específico.

Conversión de matrices de objetos en columnas de datos independientes#

Nota

info Este procedimiento asume que usted tiene una buena comprensión de la Notación de Objetos JavaScript (JSON), objetos y matrices JSON. Aunque es posible seguir el procedimiento sin tener conocimientos previos de JSON, hacerlo puede dar lugar a una comprensión incompleta de por qué son necesarios ciertos pasos. Si no está familiarizado con JSON, un buen recurso con el que puede empezar es https://www.w3schools.com/js/js_json_intro.asp.

Para crear widgets basados en los resultados de Planificación laboral, es necesario extraer datos específicos de las matrices de objetos de determinados campos de datos y convertirlos en columnas independientes con los nombres adecuados. Por ejemplo, las matrices de objetos DEMAND_OUTPUT_FIELDS se transforman en columnas independientes para los valores de campo de salida del tipo de demanda: Valores WAREHOUSE_CODE y ORDER_TYPE.

_images/eg_object_fields.jpg

La información contenida en DEMAND_OUTPUT_FIELDS puede ilustrarse en el siguiente ejemplo. Cada objeto es una combinación de pares clave-valor, donde cada clave representa un atributo del objeto y cada valor representa el valor de ese atributo. El objetivo de este tutorial es extraer solo los campos FIELD_NAME y FIELD_VALUE para crear columnas independientes con sus propios nombres específicos, como se muestra en la ilustración anterior.

{
   "DEMAND_OUTPUT_FIELDS" : [

          {
                  "FIELD_NAME" : "ORDER_TYPE",
                      "FIELD_VALUE": "TRANSFER",
                      "FIELD_TYPE": "string",
                      "_class" : "com.rebusap.labor.planning.planningservice.model.mongo.ForecastField"

              },
              {
             "FIELD_NAME" : "WAREHOUSE_CODE",
              "FIELD_VALUE": "WH1",
              "FIELD_TYPE": "string",
              "_class" : "com.rebusap.labor.planning.planningservice.model.mongo.ForecastField"
          }

       ],

 }

Esto se realiza en los siguientes campos de datos de las fuentes de datos de Planificación laboral:

  • DEMAND_OUTPUT_FIELDS

  • LABOR_OUTPUT_FIELDS

  • QUANTITY_FIELDS (es decir, campos que contienen las cantidades demandadas)

Nota

En este tutorial, utilizaremos el modo no guiado del Creador de widgets para descomponer el procedimiento de construcción de una expresión compleja en pasos abarcadores.

Paso 1: Crear campos calculados con la función map()#

Este paso repasa la creación de un campo calculado utilizando la función map() para convertir una matriz de objetos dentro de un campo en una matriz de valores. Utilizaremos el ejemplo de conversión de la matriz de objetos DEMAND_OUTPUT_FIELDS en dos matrices independientes que representan los nombres de los campos de salida del tipo de demanda y los valores de los campos de salida (consulte la ilustración siguiente para obtener una visión general del ejemplo de entrada y el resultado).

Ejemplo de entrada:

_images/eg_object_input.jpg

Ejemplo de salida:

_images/eg_object_result.jpg

Siga estos pasos:

  1. Una vez que haya rellenado la etapa Información básica y la etapa Filtros, añada una etapa Campos de visualización.

  2. Cree campos calculados utilizando la función map() para convertir las matrices de objetos en matrices de nombres de campo y valores. Consulte a continuación las expresiones que debe utilizar y la explicación de la función map():

    Expresiones: La tabla describe las expresiones para utilizar y un ejemplo para cada expresión con un nombre de campo calculado.

    Expresión que…

    Ejemplo de expresión

    Ejemplo de nombre de campo calculado

    Devuelve la matriz de nombres de campo.

    map(DEMAND_OUTPUT_FIELDS, "elem","$$elem.FIELD_NAME")
    

    CF_DEMAND_OUTPUT_FIELD_NAMES

    Devuelve la matriz de valores de campo.

    map(DEMAND_OUTPUT_FIELDS, "elem", "$$elem.FIELD_VALUE")
    

    CF_DEMAND_OUTPUT_FIELD_VALUES

    Explicación de la función map(): La función map() tiene tres componentes que se explican utilizando el ejemplo actual.

    • DEMAND_OUTPUT_FIELDS es la matriz de entrada, es decir, el campo que contiene la información sobre los nombres de los campos de salida de la demanda y sus valores.

    • elem es el nombre dado a la variable que representa cada elemento individual de la matriz de entrada (es decir, DEMAND_OUTPUT_FIELDS en este ejemplo).

    • $$elem.FIELD_NAME y $$elem.FIELD_VALUES son los campos de datos para que la función map() extraiga sus valores y los devuelva como matrices. En este ejemplo, devolvemos “ORDER_TYPE, WAREHOUSE_CODE” como matriz de valores para FIELD_NAME, y todas las matrices disponibles para FIELD_VALUE (por ejemplo, «WH1, TRANSFERENCIA», «WH1, VENTAS», «WH2, TRANSFERENCIA», etc.).

  3. Repita el paso 2 para crear los campos calculados restantes para los campos de salida Definición de trabajo y los campos de cantidad:

    • Para hacer esto para los campos de salida de Definición de trabajo, sustituya DEMAND_OUTPUT_FIELDS por LABOR_OUTPUT_FIELDS en las expresiones.

    • Para hacer esto con los campos de cantidad, sustituya DEMAND_OUTPUT_FIELDS por QUANTITY_FIELDS en las expresiones.

  1. Para guardar el campo calculado, haga clic en «Guardar».

  2. Haga clic en «Siguiente».

  3. Vaya a Paso 2: Crear campos calculados para mostrar datos en columnas independientes.

Paso 2: Crear campos calculados para mostrar datos en columnas independientes#

En este paso, añadiremos una segunda etapa Campos de visualización para crear los campos calculados finales que muestran los datos en columnas separadas. Utilizando el ejemplo del paso 1, extraeremos los valores de los campos calculados anteriormente para crear los campos calculados finales WAREHOUSE_CODE y ORDER_TYPE, que mostrarán sus respectivos valores en sus propias columnas:

_images/eg_CF_separate_columns.jpg

Siga estos pasos:

  1. Añada una segunda etapa de Campos de visualización.

  2. Cree el campo calculado utilizando las siguientes expresiones de ejemplo. Sustituya los campos calculados por los que ha creado en el paso 1, y los valores de cadena WAREHOUSE_CODE y CAJA por los suyos.

    Expresión que devuelve valores de campo de salida:

    condition(greaterThanOrEqual(getIndexFromArray(CF_DEMAND_OUTPUT_FIELD_NAMES,"WAREHOUSE_CODE"),0), getElementFromArray(CF_DEMAND_OUTPUT_FIELD_VALUES,getIndexFromArray(CF_DEMAND_OUTFIELD_NAMES,"WAREHOUSE_CODE")), "X")
    

    Expresión que devuelve valores de campo de cantidad:

    toDouble(condition(greaterThanOrEqual(getIndexFromArray(CF_QUANTITY_FIELD_NAMES,"CASE"),0), getElementFromArray(CF_QUANTITY_FIELD_VALUES,getIndexFromArray(CF_QUANTITY_FIELD_NAMES,"CASE")),"0"))
    

    Expresión explicada: La parte más importante de la expresión está en negrita. El resto de la expresión es simplemente para tener en cuenta posibles situaciones de error.

    _images/lp_widgets_expression_explained.jpg

    Desglosemos la expresión en negrita para explicar lo que hace:

    • La función getElementFromArray() obtiene un elemento específico de una matriz. En este ejemplo, el elemento que queremos recuperar es el valor de WAREHOUSE_CODE (por ejemplo, WH1, WH2, etc.) de la matriz llamada CF_DEMAND_OUTPUT_FIELD_VALUES.

    • La función getIndexFromArray() encuentra el índice de un elemento específico dentro de una matriz. En este ejemplo, queremos encontrar el índice del valor de WAREHOUSE_CODE (por ejemplo, WH1, WH2, etc.). Para ello, buscamos el índice del valor «WAREHOUSE_CODE» dentro de la matriz llamada CF_DEMAND_OUTPUT_FIELD_NAMES. Esto se debe a que el índice de «WAREHOUSE_CODE» en CF_DEMAND_OUTPUT_FIELD_NAMES es el mismo que el índice del valor de WAREHOUSE_CODE en la matriz llamada CF_DEMAND_OUTPUT_FIELD_VALUES.

  3. Para guardar el campo calculado, haga clic en «Guardar».

  4. Añada las demás etapas que necesite para terminar de crear su widget.