user-interface domain-driven-design cqrs

user interface - ¿Qué es un ejemplo de una IU basada en tareas?



user-interface domain-driven-design (4)

Creo que esto calificaría como una IU basada en tareas.

Mi equipo ha recibido la "tarea" de crear una aplicación que siga la interfaz de usuario basada en tareas (no necesariamente con CQRS). Realmente me gusta una interfaz de usuario que ayuda al usuario a realizar tareas comunes fácilmente, pero muchas piezas de esta aplicación realmente "me hacen sentir" (como un trabajo para una interfaz CRUD típica) (por ejemplo, todos los detalles de un producto en un catálogo).

En este punto, necesitamos ejemplos de buenas IU basadas en tareas para ayudarnos a ver qué es posible. ¿Qué has visto en los interwebs?


Creo que realmente no creo que la interfaz de usuario tenga una apariencia de estar basada en tareas o en CRUD (aunque el ejemplo de Dmitry es uno que demuestra que se basa en tareas, muchos comandos). Veo una IU basada en tareas más en términos de cómo interactúa con el dominio subyacente y el modelo de datos. Si su interacción no es más que una típica aplicación de MVC lista para usar con métodos de acción para Obtener / Lista / Insertar / Actualizar / Eliminar, entonces está construyendo una aplicación CRUD básica. Pero si renuncia a esos métodos de acción predeterminados y crea acciones / comandos que son significativos para la aplicación (por ejemplo, agregar elemento al carro de la compra, desactivar una clase, etc.), esto se hace más en el mundo de la interfaz de usuario basada en tareas.

Creo que es una bonita línea gris entre los dos.

Como ejemplo, sé que un sitio en el que trabajo (braincredits.com) es mi intento de una IU basada en tareas. Definitivamente es un trabajo en progreso y estoy haciendo cambios para mejorarlo constantemente, pero la implementación está basada en comandos (por ejemplo, publicar en transcripción, agregar lecciones, ver transcripciones, etc.) y partes del mismo usan el patrón CQRS. .

¡Espero que esto ayude! ¡Buena suerte!



La forma más fácil de generar una interfaz de usuario basada en tareas es proteger todos los atributos / propiedades de sus modelos. es decir, eliminar todos los setters.

De esto (pseudo código):

public class TodoTask { public Date getDateAssigned(); public void setDateAssigned(Date); public string getAssignedTo(); public void setAssignedTo(string); }

a esto:

public class TodoTask { public Date getDateAssigned(); public string getAssignedTo(); public void AssignTo(string userId); }

Ya no puedes crear una aplicación CRUD básica. Debe realizar una tarea ( Assign() ) para actualizar el modelo.

Comience por eliminar a todos los instaladores y luego analice qué tipo de acciones (tarea) debería poder hacer en cada modelo.

Entonces estás listo.

He blogueado al respecto: http://blog.gauffin.org/2012/06/protect-your-data/ (desplácese hasta la parte inferior para ver las maquetas de CRUD vs Task)