Con la última versión 10.0.10 de Dynamics 365 for Finance and SCM nos llega una feature nueva que nos permitirá añadir acciones a la barra de mensajes usando la Messaging API, como lo que teníamos en AX2012 con la clase SysInfoAction.

Recordad que esto está en la última versión de preview. Podéis acceder a las previews si os apuntáis al Dynamics 365 Insider Program.

Messaging API

La Messaging API nos permite mostrar información a los usuarios en las barras de mensajes, el Action center o cajas de mensajes.

Barra de mensajes

Normalmente usamos la barra de mensajes para mostrar información en tareas síncronas en el formulario en el que estemos trabajando. Se puede mostrar en diálogos también.

El propósito es mostrar información en el formulario actual, si se cierra el formulario, adiosito mensajes.

Action center

El action center se usa para mostrar información de tareas asíncronas. Las notificaciones se quedan ahí hasta que el usuario las marca como leídas.

La cantidad de mensajes se muestra en la campana de la esquina superior derecha de MSDyn365FO. Recordad que la cantidad máxima de mensajes que se pueden mostrar es 500. Si necesitáis mostrar más de 500 mensajes igual lo mejor es crear algún tipo de logging en vez de usar el Action center.

Message boxes

Las message boxes interrumpen lo que sea que está haciendo el usuario. Se usa para operaciones sincronas que han finalizado. Se bloquea la UI hasta que se cierra.

Messaging API AddAction

Esto es algo que he echado de menos desde que salió AX7 y ahora se ha añadido a la Messaging API con el método Message::addAction():

static final int64 AddAction(MessageSeverity _severity, SysInfoLogStr _text, str _actionText, MessageActionType _type, str _payload)
{
    int64 messageId =  infolog.insertActionMessage(_severity, _text, '', _actionText);
    action.MessageId = messageId;
    action.Type = _type;
    action.ActionData = _payload;
    action.insert();
    return messageId;
}

Necesitamos pasar los siguientes parámetros:

MessageSeverity _severity

Un enumerado con los valores Informational, Warning and Error. Está claro, lo mismo que en la clase infolog. Barras de mensaje Info (azul), Warning (yellow) y Error (red).

SysInfoLogStr _text

El texto del mensaje que vamos a mostrar. «Ha ocurrido un error», «Ha fallado la validación», lo que quieras.

str _actionText

El texto clickable de la acción. Esto será un link a un form (con un menu item display) o una acción (con un menu item action).

MessageActionType _type

El tipo de la acción, un enumerado con los valores ActionMenuItem, DisplayMenuItem y ApplyViewQuery.

Las acciones display y action están claras. Sobre la ApplyViewQuery: he estado mirando por el código buscando esta acción y el único sitio que he encontrado que se use es en el método rolloutView de la clase FormRunConfigurationClass, que es un método interno.

No estoy seguro del todo sobre esto, pero seguramente se está usando para loguear fallos en la telemetría cuando se carga la configuración de un formulario. Sólo he encontrado una referencia al enumerado en los metadatos y es en esta clase.

str _payload

La carga JSON simplemente es esto:

MenuItemMessageAction actionData = new MenuItemMessageAction();
actionData.MenuItemName(menuItemDisplayStr(CustParameters));
str jsonData = FormJsonSerializer::serializeClass(actionData);

Defines una nueva acci’on con un menu item de tipo display o action y se serializa. Hecho.

Un ejemplo

MenuItemMessageAction actionData = new MenuItemMessageAction();
actionData.MenuItemName(menuItemDisplayStr(CustParameters));
str jsonData = FormJsonSerializer::serializeClass(actionData);
Message::AddAction(MessageSeverity::Error, "An error ocurred: there's missing parameters", 'Go to Customer parameters', MessageActionType::DisplayMenuItem, jsonData);

Imagina que tienes un proceso que necesita algunos parámetros de la CustParameters. Validas que esos campos estén rellenados y sino lanzas un error. Ahora puedes añadir un enlace en el mensaje como en el código de arriba, y se ve así:

Messaging API with action
Messaging API con acción

El usuario tendrá una forma más rápida de ir al formulario de parámetros de clientes y completar la configuración. Esto es especialmente útil para guiar a los usuarios a los sitios correctos.

¡Suscríbete!

Recibe un correo cuando se publique un nuevo post
Author

Microsoft Dynamics 365 Finance & Operations technical architect and developer. Business Applications MVP since 2020.

Write A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

ariste.info