LECCION PROCESO DE BLOQUEO
Para asegurar la consistencia de los datos de nuestro sistema SAP debemos asegurarnos que los registros de datos no puedan ser accedidos y cambiados por mas de un usuario al mismo tiempo.
Para lograr esto el sistema SAP tiene su propio concepto de administración de bloqueos (lock management)
1. TRANSACCIONES DE BASE DE DATOS
Desde la perspectiva de la base de datos, vimos en la lección anterior que cada paso de dialogo forma una unidad fisica y logica: La transacción de base de datos. El sistema de base de datos sobre el que corre nuestro sistema SAP puede coordinar este tipo de transacciones de base de datos.
2.TRANSACCIONES SAP
Desde el punto de vista de SAP esto no es suficiente para asegurar la consistencia porque las transacciones SAP, las cuales se forman de una secuencia logica de pasos de trabajo relacionados que son consistentes en terminos de negocio, los cuales se forman generalmente de varios pasos de dialogo.
El sistema SAP necesita administrar su propio concepto de bloqueo. Esto se logra utilizando el work process de enqueue(encolado). Esto tambien asegura la independencia de plataforma utilizada para el sistema.
3. SISTEMAS DE BLOQUEO EN SAP
El concepto de bloqueo de SAP funciona sobre el principio de que los programas SAP realizan entradas de registros en la tabla de bloqueo (lock table). Solo pueden generarse nuevas entradas en esta tabla si no existen otras ya para el objeto que intenta bloquearse.
4. ENQUEUE WORK PROCESS
El enqueue work process maneja los bloqueos lógicos de las transacciones de SAP en la tabla de bloqueo. Esta tabla se sitúa en la memoria principal de la instancia donde el proceso corre.
La instancia central es aquella donde el enqueue work process se encuentra corriendo.
Un WP de dialogo que corre en la misma instancia que el enqueue work process ouede accedes durectamente a la tabla de bloqueo en la memoria principal para chequear si un nuevo bloqueo puede generarse, esto es, si no ocurrirá un conflicto con un bloqueo ya establecido.
Si el bloqueo puede crearse, entonces el work process de dialogo crea la entrada en la tabla y se le entrega una llave (key) al usuario la cual se mantiene en la memoria de contexto del usuario.
Si el WP de diálogo y el enqueue work process corren en diferentes instanacias se comunicarán a través del message server. En este caso la solicitud de bloqueo se reenvia desde el WP de diálogo el enqueue work process a tráves de los respectivos dispatcher y el message server.
5. MODOS DE BLOQUEOS
Cuando se solicita el bloqueo, el sistema verifica si el bloqueo generará un conflicto con alguna de las entradas que ya pudieses existir en la tabla. Si esto ocurre, la solicitud de bloqueo es rechazada. La aplicación informa al usuario que la operació solicitada no puede realizarse en ste momento.
Los desarrolladores son quienes deciden el modo de bloqueo para la aplicación:
Bloqueo de Escritura Exclusivo (Exclusive write lock): Denominado con letra E en la tabla de bloqueos. Los datos bloqueados solo pueden ser editados por un usuario. El modo exclusivo (E) rechaza cualquier otro tipo de bloqueo por otra transacción. Solo puede acumular otros bloqueos E por el mismo usuario.
Bloqueo de Lectura Compartido (Shared Lock Mode): Estos bloqueos se identifican con la letra S en la tabla de bloqueo. Se aceptan solicitudes adicionales de lectura. Una solicitud de escritura es rechazada.
Bloqueo de escritura Mejorado (Exclusive Noncumulative Lock), identificados con la letra X en la tabla, solo puede ser solicitado una vez, todas las demas solicitudes se rechazan.
Bloqueo Optimístico (Optimistic Lock): Denominados con letra O en la tabla de bloqueo. Al comienzo se establecen como bloqueos de lectura y luego pueden transformarse en bloqueos de escritura. Permite bloqueos adicionales al mismo tipo sobre un objeto.
Cuando un usuario pasa al modo de modificación de una tranasacción el bloqueo pasa al tipo E. Si otros bloqueos de tipo O existen sobre el objeto estos son eliminados de la tabla.
La transacción SM12 muestra bloqueos que actualmente hay en el sistema.