Implemente um gerenciador de workflow. Os uduários do sistema dever ter:
O sistema deve gerenciar um conjunto de tarefas, e cada tarefa deve ter os seguintes componentes:
Deve haver uma lista de tarefas pendentes, e sempre que uma tarefa é disparada, um email deve ser enviado a todos os que podem executá-la.
Deve haver uma maneira de verificar todas as taerfas pendentes.
Cada workflow deve ser especificado em um arquivo contendo descrições de usuários e tarefas. Por exemplo, esta é uma especificação parcial de um fluxo de trabalho de uma pizzaria que faz entregas de trem:
(usuario (id "fulano") (email "fulano@nowhere.land") (papeis (cozinheiro maquinista))) (usuario (id "john doe") (email "doe@somewhere.out.there") (papeis (gerente))) (tarefa (id entregar-pizza) (dados-entrada endereco) (pre-req (transporte-pizza)) (papeis (entregador gerente)) (timeout (eliminar-entregador))) (tarefa (id transportar-pizza) (dados-entrada (endereco)) (pre-req (checkup-trem fazer-pizza)) (papeis (maquinista)) (disparar (entregar-pizza)) (timeout (eliminar-maquinista)) (dados-saida (endereco))