# Processes # Process ### Definición Un Process (proceso), en Simio, es una secuencia de acciones que pueden o no tomar tiempo y modificar el estado del modelo. Un Process está compuesto por Steps y Tokens. Los procesos se pueden utilizar para personalizar el comportamiento de los objetos de la Standard Library. Un proceso puede ser activado o desactivado asignando un 1 o un 0 al State **MiProceso.Enabled**. Si un Process se encuentra desactivado, cualquier intento de ejecutarlo será ignorado. Si la desactivación se realiza mientras existan instancias del Process en ejecución, estas terminarán normalmente. ![ejemploprocess.PNG](https://simulemos.cl/uploads/images/gallery/2019-05-May/scaled-840-0/69WUOudOLi4eH14m-ejemploprocess.PNG)Ejemplo de un Process en Simio. ### Clasificación #### Standard Processes Estos procesos son ejecutados por Simio en puntos específicos de la corrida del modelo, muchas veces como respuesta a eventos internos del software. ![standardcreated.PNG](https://simulemos.cl/uploads/images/gallery/2019-05-May/scaled-840-0/Um8cIHQ6Wm61MgQ0-standardcreated.PNG) Algunos procesos estándar son: - **OnRunInitialized:** Este Process es ejecutado cuando el objeto o modelo es inicializado. - **OnCapacityChanged:** Este Process es ejecutado cuando la capacidad del recurso ha cambiado. - **OnRunEnding:** Este Process es ejecutado cuando el modelo está terminando de correr ya sea por presionar Reset o Stop (en modo interactivo) o porque se alcanzó la condición de término (modo interactivo o de experimentos. Las opciones disponibles dependerán del objeto en el que se esté trabajando. Para definir un Process de este tipo se puede usar el botón *Select Process.* *![standardcreate.PNG](https://simulemos.cl/uploads/images/gallery/2019-05-May/scaled-840-0/r9pJ6k968uveQlgH-standardcreate.PNG)* #### Decision Processes Estos procesos son un tipo especial de Standard Process. Son utilizados por algunos objetos para obtener un valor utilizado en la toma de una decisión. **No pueden tomar tiempo (contener Delays).** - **OnEvaluatingSeizeRequest**: Utilizado para determinar si el recurso será o no entregado al objeto que lo está solicitando. #### Add-on Processes Los objetos de la Standard Library vienen con una serie de propiedades que permiten asignarle un Process creado por el usuario, para que este sea ejecutado en puntos determinados de la lógica del objeto. Por ejemplo: un objeto Server puede ejecutar un Process cuando va a comenzar el procesamiento de una entidad. # Token as # Common Steps ## Assign ![assign.PNG](https://simulemos.cl/uploads/images/gallery/2019-06-Jun/doQJfszSxJJtvaMd-assign.PNG) Este Step se utiliza para asignar nuevos valores a variables de tipo State. Se puede actualizar el valor de múltiples States en un mismo Assign utilizando la propiedad *Assignments (More).* Las asignaciones definidas en *Assignments (More)* podrán estar sujetas a condiciones definidas en la propiedad *Skip Assignment If.* #### Propiedades
State Variable NameEl nombre del State al que se le asignará un nuevo valor.
New ValueNuevo valor a asignar.
Assignments (More)Permite asignar a más de un State al mismo tiempo.
Assignments (More) >> State Variable NameEl nombre del State al que se le asignará un nuevo valor.
Assignments (More) >> New ValueNuevo valor a asignar.
Assignments (More) >> Skip Assignment IfCondición opcional que deberá retornar verdadero si se desea evitar la asignación.
## Create ![create.PNG](https://simulemos.cl/uploads/images/gallery/2019-06-Jun/scaled-840-0/CeQPO5qbowqs0xxi-create.PNG) Este Step puede ser utilizado para: crear nuevas entidades de un determinado tipo, crear copias de entidades existentes o para crear nuevos Tokens con referencias a objetos existentes. Los Tokens asociados con el objeto creado o referenciado saldrán por el punto de salida **Created***.* # Step ### Definición Los Steps (pasos) son las acciones que se realizan en un Process y permiten definir lógica más compleja que la incluida en los objetos por defecto. [![ejemploprocess.PNG](https://simulemos.cl/uploads/images/gallery/2019-05-May/scaled-840-0/69WUOudOLi4eH14m-ejemploprocess.PNG)](https://simulemos.cl/uploads/images/gallery/2019-05-May/69WUOudOLi4eH14m-ejemploprocess.PNG)Ejemplo de un Process en Simio. En la imagen se pueden ver los Steps: *Decide*, *Delay* y *SetNode* #### Puntos de Salida Existen Steps que tienen más de un punto de salida *(exit point).* Algunos de estos son: *Create,* *Find* y *Decide*. ![create.PNG](https://simulemos.cl/uploads/images/gallery/2019-06-Jun/scaled-840-0/Sr5X5xMJBm5tFXtf-create.PNG)![find.PNG](https://simulemos.cl/uploads/images/gallery/2019-06-Jun/scaled-840-0/t68jsovtfOLgGeNE-find.PNG) Los Steps pueden usar todos sus puntos de salidas, o estos pueden ser excluyentes. Por ejemplo: el Step *Find* solo utilizará uno de sus puntos de salida dependiendo de si pudo o no encontrar el elemento que se estaba buscando. El Step *Create* puede utilizar ambos de forma simultánea, esto se ejemplifica a continuación. [![exitpoints.PNG](https://simulemos.cl/uploads/images/gallery/2019-06-Jun/scaled-840-0/SMrP4YGtr0zQLhrN-exitpoints.PNG)](https://simulemos.cl/uploads/images/gallery/2019-06-Jun/SMrP4YGtr0zQLhrN-exitpoints.PNG) En el ejemplo se representa un modelo simplificado del procesamiento del pedido de un cliente. En este se crea una orden de trabajo, se le asignan valores, y se transfiere al área de producción, finalmente, el Token original sale del *Create* y va al *Tally* que registra las cotizaciones que son aceptadas.