En un formulario abierto por un proceso no puedo aceptar o da el error: Alta no realizada por error sin especificar

Base de conocimiento de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
vBdC
vGuru
vGuru
Mensajes: 2
Registrado: 11 Oct 2005, 14:22

En un formulario abierto por un proceso no puedo aceptar o d

Mensaje por vBdC » 21 Nov 2003, 01:00

En un formulario abierto por un proceso no puedo aceptar o da el error: Alta no realizada por error sin especificar

Categorías: Transacción, IRunner, Formulario

Palabras clave: Navegador, Time out, Error

Enunciado:
Cuando estamos en un formulario abierto por un proceso no me deja aceptar. Si es un formulario de alta nos da el error: Alta no realizada por error sin especificar.

Imagen

Desarrollo:
Esto sucede porque el servidor interpreta que el proceso que abrió la transacción tiene algún problema. El servidor de aplicaciones no puede tener una transacción abierta indefinidamente si no realiza operaciones porque bloquea las fichas implicadas y no pueden ser modificadas por otros usuarios, por lo que aborta la transacción.
Debemos evitar que los procesos dejen abierta la transacción sin realizar operaciones: debemos usar con cuidado funciones de proceso como "modificar ficha con formulario", ya que si el usuario deja el formulario abierto más de cuatro minutos, el servidor deshará las transacción y por tanto todas las operaciones realizadas en ese proceso. Además, el usuario no podrá aceptar el formulario que se le presenta, únicamente podrá cancelar. Para evitarlo debemos devolver la ficha en el proceso con la función de proceso "Añadir retorno" y con botones lanzar los procesos necesarios para continuar.

Podríamos hacer un proceso como el que sigue para evitar este problema (en este caso no tendría origen):

Pedir dato -> codigo, codigo, Número, bOK
if -> "bOK"
Cargar lista -> CLIENTE, CODIGO, "codigo"
if -> n
Seleccionar ficha por posición -> 1
Leer ficha seleccionada
Añadir retorno -> CLIENTES
else
Alta directa -> CLIENTE
Pre
Modificar campo -> CODIGO, "codigo"
Post
Añadir retorno -> CLIENTES

Los retornos son ejecutados al finalizar el proceso, con lo que no tendremos el peligro de exceder el time out de las transacciones.
Si lo que queremos hacer es una modificación podemos partir de un origen concreto. Si es un alta lo que queremos realizar, con la segunda parte del if nos valdría.

Artículos relacionados
¿Qué es una transacción?
Transacciones deshechas
Proceso de retornos
Última edición por vBdC el 21 Nov 2003, 01:00, editado 1 vez en total.

Responder