Pregunta

Así que estoy cómodo con el concepto básico de SCC, en la que podría tener un dominio que escribe en una base de datos, y que las actualizaciones de la base de datos de consulta que se lee de.

Sin embargo, considere la situación en la que está introduciendo datos, y desea evitar duplicados.

El uso de nueva entrada de datos de los empleados un registro de los empleados como un ejemplo, a través de una pila de formularios de solicitud para introducir los detalles de los nuevos empleados:

  1. Tome hoja superior.
  2. Clave en nombre del empleado y el número de nómina única para la interfaz de usuario.
  3. Enviar.
  4. Coloque papel en "pila completado".
  5. Repetir.

¿Cómo ahora impedir al usuario introducir el mismo número de nóminas de nuevo, digamos por ejemplo, si se distraen y no puede recordar si han afinado en una ya y el "mensaje" no tiene todas las volver a la forma db consulta para el usuario buscar?

¿Fue útil?

Solución

En primer lugar usted puede utilizar fácilmente un caché local para asegurarse de que el usuario inmediata no vuelva a utilizar los mismos números de nuevo. Eso es bastante fácil.

Pero en realidad esto no impide el hecho de que por error dos personas pueden usar la misma pieza crítica de datos al mismo tiempo. Como alguien más ha dicho, aunque esto está fuera de CQRS. Esto podría ocurrir en casi cualquier arquitectura.

Ahora lo más importante que CQRS podría cambiar es cómo responder a un conflicto. Veo dos soluciones posibles:

  1. El sistema envía el comando de apagado y luego espera un resultado exitoso. Si se trata de un fallo que acaba de pedir información fija y vuelve a intentarlo. De todo lo que he oído esto parece mal e incluso podría ser un anti-patrón pesar de que no soy lo suficientemente cerca de donde experto para decir de cualquier manera.

  2. El sistema envía el comando de apagado y, finalmente, se informa al usuario sobre el conflicto. Hay algún lugar que puedan ir a solucionar el problema. En su caso mediante la introducción de un nuevo número (que podría volver a conflictos).

Otros consejos

La entrada de datos es un dominio de no colaboración - usted no tiene múltiples usuarios que realizan acciones en el mismo conjunto de datos compartido. Como tal, CQRS no es particularmente relevante.

Le sugiero cambiar el flujo de trabajo para este

  1. Compruebe la hoja superior está tomada o no en la base de datos (que debe tener una tabla R de recordar si la fila específica se toma o no), si se toma luego volver falsa si no, entonces Tome hoja superior. y establecer el indicador para la fila toma como "tomada" en la tabla R
  2. Clave en nombre del empleado y el número de nómina única para la interfaz de usuario.
  3. Enviar.
  4. Coloque papel en "pila completado".
  5. Repetir.

El paso debe ser ejecutar atómicamente.

Podría seguir la pista de una lista de nómina / combos número de empleado ya introducidos en el cliente? Si se trata de un cliente web, podría ser una cookie, si un cliente pesado, a continuación, la memoria o de otra manera. Cuando entran en el sistema por primera vez, borrar la lista y empezar de nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top