Cómo conectar Power Apps con Dynamics AX 2012 (II)

Seguimos con esta serie de artículos para aprender a conectar Power Apps con Dynamics AX 2012. En la primera entrega vimos como leer datos de Dynamics AX, utilizando para ello un conector personalizado de Power Apps y una Web API.

En este segundo artículo nos ocuparemos de escribir datos en Dynamics AX, utilizando el mismo conector que ya tenemos creado, pero en este caso, haremos uso de funciones de tipo post para conseguir nuestro objetivo. ¡Vamos allá!

1. Añadir función al WebService de Dynamics AX

Empezaremos añadiendo una función para crear clientes a nuestro WebService. Utilizaremos la misma clase que en el primer artículo, PowerAppCustomerService.

[SysEntryPointAttribute(true),
AifCollectionTypeAttribute('return', Types::String)]
public str postCustomer(CustAccount    _custAccount,
                        CustName       _custName)
{
    CustTable   custTable;
    NumberSeq   numberSeq;
    str         ret;
    
    try
    {
        ttsBegin;
        
        numberSeq = NumberSeq::newGetNum(CustParameters::numRefCustAccount());
        
        custTable.initValue();
        custTable.AccountNum    = _custAccount ? _custAccount : numberSeq.num();        
        custTable.Currency      = CompanyInfo::standardCurrency();        
 
        custTable.insert(DirPartyType::Organization, _custName);   
        
        ret = "OK";
        
        ttsCommit;
    }
    
    catch
    {
        ret = "Error";    
    }

    return ret;
}

2. Añadir operación al servicio

En segundo lugar, añadiremos esta nueva función al servicio ya creado anteriormente, llamado PowerAppCustomerService.

3. Actualizar grupo de servicios

Para que el WebService detecte los cambios realizados, será necesario reimplementar el grupo de servicios.

4. Modificar Web API

Una vez tenemos modificado el WebService en Dynamics AX, tendremos que añadir también la nueva función en la API.

En este punto es donde introduciremos nuestra función de tipo post. Cabe destacar que también seria posible realizar una inserción de datos en Dynamics AX utilizando una función de tipo get, pero estas funciones tienen una limitación en la cantidad de datos a enviar en la URL. En su lugar, las funciones post permiten enviar un cuerpo junto con la petición, por lo que no tendremos que incluir la información a enviar en la propia URL.

[HttpPost]
[Route("PostCustomer")]
public string PostExpedition([FromBody]Customer customer)
{
    CallContext callContext = new CallContext();

    callContext.Company = "DAT";
    callContext.Language = "en-us";    

    PowerAppCustomerServiceClient client = new PowerAppCustomerServiceClient();

    string ret = client.postCustomer(callContext,
                                        customer.custAccount,
                                        customer.custName);

    return ret;
} 

Es importante mencionar el atributo [FromBody] que se añade en los parámetros de la función. Esto hace referencia a lo que comentábamos anteriormente, y es que incuyendo este atributo, la información se enviará en un body, y no en la propia URL. Una función de tipo post únicamente puede contener un parámetro con el atributo [FromBody], por lo que tendremos que estructurar la información que necesitemos enviar en una clase como la siguiente:

public class Customer
{
    public string custAccount { get; set; }
    public string custName { get; set; }        
}

5. Actualizar IIS

A continuación, actualizamos el IIS, sobrescribiendo la carpeta existente por la nueva versión de la Web API.

6. Actualizar conector personalizado de Power Apps

Dado que ya tenemos el WebService actualizado con la nueva función para crear clientes, únicamente nos quedaría añadirla también al conector personalizado de Power Apps.

Por último, actualizamos el conector.

7. Modificar PowerApp

Dado que estamos trabajando con un conector personalizado, no podremos actualizar el origen de datos de la PowerApp, sino que tendremos que eliminarlo y volverlo a añadir.

Una vez actualizado el origen de datos, añadiremos un nuevo botón para crear un cliente:

En la propiedad OnSelect del botón, utilizaremos la nueva función PostCustomer, pasando por parámetro los valores introducidos por el usuario:

8. Probar PowerApp

Estamos en disposición de probar la nueva funcionalidad y comprobar que el cliente se crea correctamente en Dynamics AX.

Con esta nueva funcionalidad ya disponemos de una PowerApp conectada de forma bidireccional con Dynamics AX, en tiempo real, y sin necesidad de utilizar bases de datos intermedias.

Comparte:
Soy Miquel Vidal, ingeniero técnico en informática de sistemas, y actualmente trabajo como analista técnico y formador especializado en las soluciones empresariales de Microsoft (Office 365, Dynamics AX/365 y Power Platform).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Volver arriba