<< Clic para mostrar Tabla de Contenidos >> Forzar un atributo para deployment |
El analizador de reglas de Bizagi es muy robusto identificando todos los atributos, entidades, etc., que han de ser enviados en paquetes de deployment a los entornos de pruebas y producción.
Sin embargo a veces las expresiones se construyen de tal manera que Bizagi no es capaz de detectar atributos específicos. Al probar los paquetes de deployment en tiempo de ejecución se produce un error porque no se encuentra un atributo.
Esto ocurre cuando un atributo se usa exclusivamente en una regla y no se incluye en formas o asignaciones. Adicionalmente la expresión que lo contiene está escrita de tal manera que Bizagi no puede detectarlo.
Cuando la construcción de expresiones complejas se realiza de manera dinámica, se recomienda utilizar la siguiente sentencia para forzar a Bizagi a incluir dicho atributo en el deployment.
CHelper.usingXPath("EntityName", "XPath")
La sentencia recibe dos parámetros:
•La entidad donde se guarda el atributo
•El atributo a ser forzado en el despliegue.
Ambos parámetros deben escribirse entre comillas dobles. NO se debe utilizar variables como parámetros.
La inclusión de la sentencia en una expresión no tiene efecto sobre el resultado de la misma. Se puede incluir al principio o al final. Se recomienda incluir al comienzo para que sea más fácil de identificar.
Ejemplo
Cuando se usan variables como filtro en sentencias GetEntity para filtrar una entidad, los atributos contenidos no se van en el paquete de deployment si no se usan en ningún otro lugar como formas o asignaciones.
La siguiente sentencia muestra como el atributo IsAdditional, que solo es usado en esta regla, no se incluye en el deployment. Por ello se debe usar la sentencia usingXPath.
var parameters = new FilterParameters();
parameters.AddParameter("@IsAdditional", 1);
parameters.AddParameter("@cAmounttoPay", 0);
var Transactions = Me.getXPath("entity-list('Installment', 'IsAdditional = @IsAdditional AND cAmounttoPay > @cAmounttoPay')",parameters);
for(var i =0; i < Transactions.size(); i++)
{
var Transaction = Me.newCollectionItem("Transfer.Transactions")
Transaction.setXPath("Transaction",Transactions[i].getXPath("Id"));
}
CHelper.usingXPath("Installment", "IsAdditional");
La imagen muestra el mensaje de error que se recibe en el Portal de Trabajo cuando un atributo incluído en una expresión no se lleva en el deployment.
Ejemplo
Cuando se construyen xPaths como cadenas de texto y se guardan en una variable, Bizagi no puede identificar los atributos contenidos. Si los atributos incluidos en el XPath de cadena no se usan en formas o asignaciones, no se llevarán en el deployment.
La siguiente sentencia muestra como el XPath sPath se construye de manera dinámica. El atributo idUser usado exclusivamente en esta expresión no se va en el deployment. Se usa entonces la sentencia usingXPath.
var parameters = new FilterParameters();
parameters.AddParameter("@sName", Me.Task.Name);
var idActivity=CHelper.getEntityAttrib("Activity","idActivity","sName=@sName",parameters);
parameters.AddParameter("@idactivity", idActivity);
var idValRole=CHelper.getEntityAttrib("ActivityConfigurat","idValidationRole","idactivity=@idactivity",parameters);
var sPath="Request.AllUsers[idValidationRole.id ="+idValRole+"].idUser";
Me.setXPath(sPath,Me.Case.WorkingCredential.UserId);
CHelper.usingXPath("AllUsers", "idUser");
Ejemplo
Cuando se crea un nuevo caso incluyendo información de negocio a partir de expresiones utilizando la función CHelper.NewCase. En este caso, el método recibe la cadena de texto de un XML como parámetro en el cual, es posible incluir información sobre el usuario creador del caso así como información de negocio. Sin embargo, Bizagi no puede identificar los atributos contenidos en esta cadena de texto. El siguiente ejemplo muestra cómo se crea un nuevo caso del Proceso de Gestión de Cambios utilizando una expresión donde el atributo AssociatetdTicket es incluido en el XML. Para que este atributo sea reconocido, se usa entonces la sentencia usingXpath.
{
var sXML ="<BizAgiWSParam>"; //inicio del xml
sXML += "<domain>domain</domain>"; //dominio del usuario que creará el caso
sXML += "<userName>HelpDeskAgent</userName>"; //usuario que creará el caso
sXML += "<Cases><Case><Process>ChangeManagement</Process>"; //nombre del proceso
sXML += "<Entities>"; //inicio de la información de negocio
sXML += "<ChangeRequest>"; //nombre de la entidad de proceso
sXML += "<AssociatedTicket>" + Me.Case.CaseNumber + "</AssociatedTicket>"; //información de negocio
sXML += "</ChangeRequest></Entities></Case></Cases></BizAgiWSParam>"; //fin del xml
CHelper.usingXpath("AssociatedTicket")
CHelper.NewCase(sXML)
}
Last Updated 1/26/2022 4:15:10 PM