Toda la información de producto en wiki.bizagi.com aplica para Bizagi BPM Suite 9.1.X.
Para las nuevas versiones de Bizagi BPM Suite (10.X y superior) visite la Guía de Usuario.
 

Manejo avanzado de archivos

De

<keywords content="keywords"> archivo, archivos, subir, documento, documentos, file, archivo xpath, archivos xpath </keywords>

Contenido

Manejo Avanzado de Atributos Tipo Archivo

Bizagi administra fácilmente los documentos entrantes de un proceso, ya que Bizagi permite adjuntar archivos (documentos de procesadores de texto, datos de hojas de cálculo, archivos de audio y video) a la aplicación, asociándolos directamente al caso especifico de negocio.

Esto permite hacerle seguimiento en los diferentes puntos del proceso y que los usuarios correspondientes tengan acceso a estos de forma continua durante la ejecución del proceso.

Como el archivo hace parte de la información del caso, este pertenece al modelo de datos que esta soportando el proceso. Por este motivo, para poder adjuntar un archivo a un caso es necesario crear un tipo de campo 'Archivo(File)' en la entidad de negocio correspondiente. Una ventaja sobre las versiones anteriores, es que con un solo atributo es posible adjuntar multiples archivos en el mismo caso de negocio.Estos documentos pueden ser adjuntados o no a la aplicación y pueden tener más información relacionada acerca de cada documento como Fecha de Recibido, Fecha de Revisión, si se encuentra aprobado o no, si es requerido, etc.

Bizagi también permite parametrizar los documentos de un proceso según el trámite realizado.

El tratamiento que Bizagi da a los archivos en la aplicacion web, es configurable desde Bizagi Studio y la Consola de Administracion.

Por defecto el tamaño máximo de los uploads es 1 MB. Sin embargo depende de las capacidades del servidor (memoria), de la red desde donde se adjunte el archivo y de las necesidades de negocio. Se recomienda que el tamaño máximo este alrededor de 10 MB, pero puede variar dependiendo de las necesidades específicas.

Ejemplos

Es posible que un usuario necesite subir archivos en un atributo que haya sido obtenido, por ejemplo, a través de una interface.

Bizagi permite subir un archivo a un atributo usando una Expresión. El archivo que será subido es recibido usualmente por un servicio Web, como un Arreglo de Bytes.

Es importante que el atributo en el que el archivo será subido sea una atributo de tipo Archivo.


Adjuntar un archivo desde una expresión

En este ejemplo, en un Proceso de Solicitud de Préstamo la entidad principal de negocio es llamada Request. Asuma que en esta entidad hay un atributo llamado HistoryFile que almacenará una carta subida vía servicio Web.



El Servicio Web tiene que retornar un Arregla de Bytes que contenga los datos del archivo. Asuma que este arreglo se graba en la variable FileData.


Para subir un archivo en una Regla, LA SINTAXIS CORRECTA para la expresión es:


var FileToUpload = Me.addRelation("Request.HistoryFile");

FileToUpload.setXPath("FileName", "DisplayNameOfTheFile.txt");

FileToUpload.setXPath("Data", FileData);

El archivo y los datos en rojo NO deberían cambiar. Estos son parte del código.

 


El archivo subido lucirá como esto:



La sintaxis usada en versiones anteriores ya no está disponible. NO USE lo siguiente:


var FileToUpload = Entity.addRelation("myUpload");

FileToUpload.setFileName("MyFile.txt");

FileToUpload.setData(FileContents);



Si desea saber como la ruta de un archivo cargado en Bizagi por favor siga este link


Copiar varios archivos de un atributo a otro

Es posible cargar varios archivos a través de una expresion que realice el copiado de uno o más archivos, desde un atributo tipo archivo a otro.


var FileProcess1 = Me.getXPath("InsurancePolicyRequest.FileProcess1"); 

for(var i=0; i < FileProcess1.size(); i++) 

{ 

      var FileProcess2 = FileProcess1.get(i); 

      var Name = FileProcess2.getXPath("FileName"); 

      var Data = FileProcess2.getXPath("Data"); 

      var NewFile = Me.addRelation("InsurancePolicyRequest.FileProcess2"); 

      NewFile.setXPath("FileName", Name); 

      NewFile.setXPath("Data", Data); 

} 



FileProcess1 y FileProcess2 son atributos de tipo archivo, asociados a la entidad de proceso (llamada InsurancePolicyRequest). Nótese que los atributos de tipo archivo se manejan como colecciones, principalmente porque cada atributo de tipo archivo puede contener más de 1 archivo.


Contando el Número de Archivos Subidos

Si un usuario desea conocer cuantos de los archivos subidos están asociados a un atributo tipo Archivo, la mejor forma de hacerlo es utilizando la propiedad size en lugar de otras propiedades como CHelper.IsNull o CHelper.IsEmpty, dado que Bizagi crea una colección al manejar este tipo de atributos. Estas dos propiedades no proveen mayor información acerca de la existencia de archivos asociados al Atributo Tipo Archivo. La colección de datos creada entre dos Entidades Maestras tiene un comportamiento similar al de este tipo de atributos, y por esta razón la propiedad size aplica tanto para colecciones como para arhivos cargados.

En la imagen a continuación, se crea una expesión que realiza el conteo de los archivos cargados asociados al atributo ReportUpload de la Entidad VacationRequest. Se utiliza la propiedad size del objeto para retornar el valor esperado a través de un mensaje (ThrowValidationError). En este caso, la expresión se ejecuta en un Evento al Salvar para efectos de prueba.  
 


Si no se ha cargado ningún archivo, el número de Archivos Cargados que aparecerá será cero.



Por otro lado, si existen dos o n archivos cargados, esto se verá reflejado en el mensaje que retorna Bizagi. Este comportamiento se muestra en la imagen a continuación. 




Obtener el nombre de archivo de un adjunto

En el siguiente ejemplo, dentro de una Expresión de Bizagi, obtendremos el nombre de archivo de un adjunto (fileName).

Nótese que la obtención del nombre del archivo incluye su extensión, y por lo tanto, esto puede ser útil en una regla para realizar acciones adicionales.


var UploadedFile = Me.getXPath("ProcessA.ServiceLevelAgreement");
if(UploadedFile.size() > 0){
     var Filename = UploadedFile.get(0).getXPath("fileName");
     // Store the filename in the attribute set aside for this purpose
     Me.setXPath("ProcessA.SLAFilename", Filename);
}

En el ejemplo anterior, obtenemos "FileName" del archivo en el atributo ServiceLevelAgreement, para seguidamente almacenarlo en el modelo de datos, en el atributo SLAFilename.

Validar el nombre de un archivo adjunto

Es posible que un usuario necesite validar el nombre de un archivo en el momento en que éste es cargado.

Tomemos como ejemplo un proceso de auditoria en una compañía. Cada una de las áreas de la compañía debe presentar distintos informes a la firma auditora. Para mantener un orden en la recepción y consulta de la información presentada en forma de archivos, los nombres de éstos se deben predeterminar. Así por ejemplo, el área financiera al momento de presentar el balance debe adjuntar un archivo de Excel con el nombre Balance Compañía 2012.xls.

Para predefinir los nombres de los archivos podemos utilizar vocabularios. Para mayor información sobre vocabularios , consulte http://wiki.bizagi.com/es/index.php?title=Vocabulario

En este caso definiremos un vocabulario de tipo texto con el nombre Balance. Su valor será Balance Compañía.xls (el nombre deseado para el archivo).




En la forma de la actividad podemos definir las propiedades deseadas para el archivo que se cargará. Para esto, dé clic sobre el atributo del archivo en la forma y en el menú de propiedades defina el número máximo de archivos y las extensiones válidas. En este caso solo permitiremos que se cargue un archivo. En las extensiones válidas permitiremos archivos de Microsoft office Excel, por lo que definimos la extensión xls.




Para validar que el nombre del archivo que se adjunte en la actividad donde se carga el balance sea igual al nombre predefinido, utilizamos la siguiente regla de negocio a la salida de dicha actividad.


// Store the vocabulary definition
var DesiredFileName=CHelper.resolveVocabulary(Me,"BALANCE")
var UploadedFile = Me.getXPath("Audit.Files"); 
// Store the filename in the attribute set aside for this purpose
var TargetFile = UploadedFile.get(0); 
var FileName = TargetFile.getXPath("FileName"); 
// Validate real versus desired file name
if (FileName!=DesiredFileName) 
{ 
CHelper.ThrowValidationError("The file must have the same name of the vocabulary") 
}

En el ejemplo anterior, obtenemos la definición del vocabulario (nombre predefinido del archivo) en la variable "DesiredFileName". Luego obtenemos el nombre del archivo cargado en la forma de la actividad y lo almacenamos en la variable “FileName” (note que tomamos el archivo de la posición 0 de la grilla de archivos ya que en las propiedades del atributo definimos, como máximo, la carga de un archivo). Finalmente comparamos los valores de “DesiredFileName” y “FileName” y si son diferentes lanzamos un mensaje de validación de error.

De esta manera si usted adjunta un archivo con un nombre diferente al definido la actividad no podrá continuar, usted deberá cargar un nuevo archivo con el nombre requerido.




Articulos Relacionados

<comments />