# Server

[![StandardLibraryMenu_Server.png](https://simulemos.cl/uploads/images/gallery/2019-03-Mar/scaled-840-0/3JdbARxsV8Jh5jJ4-StandardLibraryMenu_Server.png)](https://simulemos.cl/uploads/images/gallery/2019-03-Mar/3JdbARxsV8Jh5jJ4-StandardLibraryMenu_Server.png)

<table border="1" id="bkmrk-objeto-source-funci%C3" style="border-collapse: collapse; width: 83.7037%; height: 142px;"><tbody><tr style="height: 31px;"><td style="width: 17.8772%; height: 31px;">Objeto</td><td style="width: 65.8264%; height: 31px;">**Server**</td></tr><tr style="height: 31px;"><td style="width: 17.8772%; height: 31px;">Función</td><td style="width: 65.8264%; height: 31px;">**Procesamiento de entidades**</td></tr><tr style="height: 31px;"><td style="width: 17.8772%; height: 31px;">Clase</td><td style="width: 65.8264%; height: 31px;">**Fixed**</td></tr><tr style="height: 49px;"><td style="width: 17.8772%; height: 49px;">Process Triggers</td><td style="width: 65.8264%; height: 49px;">**Run Initialized, Run Ending, Entered, Before Processing, Processing, After Processing, Exited, Failed, Repaired, Evaluating Seize Request, On Shift, Off Shift**</td></tr><tr><td style="width: 17.8772%;">Asignación de estados</td><td style="width: 65.8264%;">**On Entering, Before Processing, After Processing, Before Exiting, On Balking, On Reneging**</td></tr></tbody></table>

Este objeto representa un proceso capacitado, por ejemplo: una máquina o un cajero de supermercado.

Cuenta con un nodo de entrada y un buffer de entrada (*Input* Buffer); un nodo de salida y un buffer de salida *(Output Buffer);* y una cola que representa a las entidades actualmente siendo procesadas *(Processing).*

Por defecto, las entidades ingresan al *Input Buffer* y esperan hasta que exista capacidad disponible para procesar a la siguiente entidad, luego es transferida a la cola de *Processing* hasta que finalice su procesamiento. Finalmente la entidad entra al *Output Buffer* y espera hasta que pueda salir del objeto.

El tiempo de proceso está dado por la propiedad **Processing Time.**

#### Tipos de capacidad (*Capacity types*)

La capacidad representa la cantidad de entidades que el objeto puede procesar de manera simultánea.

- **Fija** (*Fixed*): La capacidad estará dada por la propiedad **Initial Capacity.** Esta puede ser una expresión, pero solo es evaluada al comienzo de la simulación. La capacidad puede ser modificada durante la simulación asignándole un nuevo valor al estado ***CurrentCapacity*** del objeto (Ej: MiObjeto.CurrentCapacity)
- **Horario de trabajo** (*Work Schedule*): Para utilizar este tipo, se debe definir un *Work Schedule* en la pestaña *Data.* Este modo permite asignar un horario de trabajo al objeto, de manera que automáticamente comienza a procesar entidades cuando comienza su turno (*On Shift*) y deja de procesarlas cuando el turno termina (*Off Shift*).

[![StandardLibraryGIF_Server.gif](https://simulemos.cl/uploads/images/gallery/2019-03-Mar/6y0UKvhwlJvKZZ0l-StandardLibraryGIF_Server.gif)](https://simulemos.cl/uploads/images/gallery/2019-03-Mar/6y0UKvhwlJvKZZ0l-StandardLibraryGIF_Server.gif)

#### Prioridades

Simio permite utilizar políticas para decidir cuál entidad será la siguiente en ser procesada. Existen dos tipos de *Rankings.*

- **Reglas estáticas** (*Static Ranking Rules*): Estas reglas determinan la ubicación de la entidad en la cola, cuando esta ingresa a la cola.
- **Reglas dinámicas** *(Dynamic Selection Rules)*: Estas reglas permiten que el objeto determine de manera dinámica la próxima entidad a ser procesada, es decir, el lugar no es definido cuando la entidad ingresa, sino cuando el Server está listo para procesar a la siguiente entidad.

##### Reglas estáticas

- **First In First Out** (FIFO): La primera entidad que ingresó es la primera en ser procesada.
- **Last In First Out** (LIFO): La última entidad en ingresar será la primera en ser procesada.
- **Smallest Value First**: Ordenará las entidades según la expresión definida en la propiedad **Ranking Expression** de menor a mayor.
- **Largest Value First**: Ordenará las entidades según la expresión definida en la propiedad **Ranking Expression** de mayor a menor.

##### Reglas dinámicas

- **Smallest Value First**: Misma lógica de la versión estática. Ordena según la propiedad **Value Expression.**
- **Largest Value First**: Misma lógica de la versión estática. Ordena según la propiedad **Value Expression.**
- **Standard Dispatching Rule:** Esta opción permite utilizar una de varias políticas de planificación implementadas por Simio tales como: *SPT, LPT, EDD, LST,* entre otros.

#### Estados

El estado de este objeto se puede verificar en el State de tipo entero **ResourceState**. Ej.: MiObjeto.ResourceState

<table border="1" id="bkmrk-valor-estado-0-dispo" style="border-collapse: collapse; width: 100%; height: 310px;"><tbody><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**Valor**</td><td style="width: 86.5433%; height: 31px;">**Estado**</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">0</td><td style="width: 86.5433%; height: 31px;">Disponible</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**1**</td><td style="width: 86.5433%; height: 31px;">Procesando</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**2**</td><td style="width: 86.5433%; height: 31px;">Bloqueado</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**3**</td><td style="width: 86.5433%; height: 31px;">Falla</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**4**</td><td style="width: 86.5433%; height: 31px;">Fuera de turno</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**5**</td><td style="width: 86.5433%; height: 31px;">Falla de procesamiento</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**6**</td><td style="width: 86.5433%; height: 31px;">Procesando fuera de turno</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**7**</td><td style="width: 86.5433%; height: 31px;">Setup</td></tr><tr style="height: 31px;"><td class="align-center" style="width: 13.4567%; height: 31px;">**8**</td><td style="width: 86.5433%; height: 31px;">Setup de turno</td></tr></tbody></table>

[![StandardLibraryFacility_Server.png](https://simulemos.cl/uploads/images/gallery/2019-03-Mar/scaled-840-0/PwRq54agpYNYSOOX-StandardLibraryFacility_Server.png)](https://simulemos.cl/uploads/images/gallery/2019-03-Mar/PwRq54agpYNYSOOX-StandardLibraryFacility_Server.png)  
Objeto Server visto en vista Facility (2D)

#### Algunas propiedades

<table border="1" class="align-left" id="bkmrk-propiedad-descripci%C3" style="border-collapse: collapse; width: 127.641%; height: 418px;"><tbody><tr style="height: 31px;"><td style="width: 13.8889%; height: 31px;">**Propiedad**</td><td style="width: 11.5124%; height: 31px;">**Tipo**</td><td style="width: 34.1049%; height: 31px;">**Descripción**</td></tr><tr style="height: 31px;"><td style="width: 13.8889%; height: 31px;">Capacity Type</td><td style="width: 11.5124%; height: 31px;">Fixed, Work Schedule</td><td style="width: 34.1049%; height: 31px;">Indica el tipo de capacidad del Server.</td></tr><tr style="height: 31px;"><td style="width: 13.8889%; height: 31px;">Initial Capacity</td><td style="width: 11.5124%; height: 31px;">Expression</td><td style="width: 34.1049%; height: 31px;">Capacidad inicial del Server. Se evalúa al comenzar la simulación.</td></tr><tr><td style="width: 13.8889%;">Ranking Rule</td><td style="width: 11.5124%;">List</td><td style="width: 34.1049%;">Regla estática a utilizar para ordenar las entidades en espera.

</td></tr><tr><td style="width: 13.8889%;">Ranking Expression</td><td style="width: 11.5124%;">Expression</td><td style="width: 34.1049%;">Valor utilizado por las reglas *Smallest/Largest Value First* para ordenar las entidades.

</td></tr><tr><td style="width: 13.8889%;">Dynamic Selection Rule</td><td style="width: 11.5124%;">List</td><td style="width: 34.1049%;">Indica si este objeto seleccionará de manera dinámica la próxima entidad a ser procesada utilizando una regla dinámica de selección.

</td></tr><tr><td style="width: 13.8889%;">Transfer-In Time</td><td style="width: 11.5124%;">Expression</td><td style="width: 34.1049%;">El tiempo requerido para transferir una entidad a este objeto.

</td></tr><tr><td style="width: 13.8889%;">Processing Time</td><td style="width: 11.5124%;">Expression</td><td style="width: 34.1049%;">Tiempo requerido para procesar una entidad. Normalmente asignado con distribuciones de probabilidad.

</td></tr><tr><td style="width: 13.8889%;">Off Shift Rule</td><td style="width: 11.5124%;">List</td><td style="width: 34.1049%;">Indica la política que utilizará el objeto para determinar qué hacer cuando se acabe el turno y exista una entidad en proceso.

*Suspend Processing*: se suspende el procesamiento y continua en el siguiente turno.

*Finish Work Already Started*: no procesará nuevas entidades pero terminará las que se encuentran actualmente en proceso.

</td></tr></tbody></table>

#### Add-On Process Triggers

<table border="1" id="bkmrk-trigger-descripci%C3%B3n" style="border-collapse: collapse; width: 100%; height: 403px;"><tbody><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">**Trigger**</td><td style="width: 74.6914%; height: 31px;">**Descripción**</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Run Initialized</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando la simulación es iniciada.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Run Ending</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando la simulación está terminando.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Entered</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando una entidad ha entrado al objeto y está por empezar el *Transfer-In Time.*</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Before Processing</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando le ha sido asignada capacidad del Server a la entidad, pero aún no ingresa a la estación de proceso.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Processing</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando la entidad ha sido transferida a la estación de proceso y está a punto de comenzar su procesamiento.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">After Processing</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando la entidad ha completado su procesamiento y está por salir de la estación de proceso.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Exited</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando una entidad ha salido del objeto.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Failed</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando este objeto ha fallado. </td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Repaired</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando este objeto ha sido reparado.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Evaluating Seize Request</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando el objeto está determinando si aceptará o no la solicitud de capacidad por parte de la entidad. Para rechazar se debe asignar un valor negativo al *ReturnValue* del Token.</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">On Shift</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando el objeto está al inicio de un turno definido en su *Work Schedule.*</td></tr><tr style="height: 31px;"><td style="width: 25.3086%; height: 31px;">Off Shift</td><td style="width: 74.6914%; height: 31px;">Ocurre cuando el objeto está al término de un turno definido en su *Work Schedule.*</td></tr></tbody></table>