Casos de uso • Pesquisar - Consultar lista de tarefas • Detalhes - Consultar detalhes de uma tarefa - Adicionar tarefa - Apagar tarefa - Alterar dados tarefa - Registar tarefa - Associar Aviso - Associar Anomalia - Alterar registo da tarefa • Imprimir 1 Titulo: “Criar Nova Tarefa” Prioritária - Sim Não Sim Vigilante - Não Tarefa Única Hoje Amanha Outro dia: Hora: Tarefa Periódica 2ª 3ª 4ª 5ª 6ª SAB DOM De: Hora: Até: Descrição da tarefa: Observações da tarefa: Criar Tarefa 2 Divisão dos elementos Prioritária - Sim Não FORM PART Sim 1 Não Vigilante - Tarefa Única Hoje Amanha FORM Outro dia: PART 2 Hora: Tarefa Periódica 2ª 3ª 4ª 5ª 6ª PART 3 De: SABFORM DOM Até: Hora: Descrição da tarefa: Observações da tarefa: Criar Tarefa FORM PART 4 FORM PART 5 3 Form Principal: “Form_Task_New” Session_start(); Include (‘Form_Part_Task_PrioritySecurity’); SlideToggle(Single, Periodic): { toggle Include (‘Form_Part_Task_New_Single’); toggle Form_Part_1: “Form_Part_Task_PrioritySecurity” • Sub-script que carrega os formulários de escolha a prioridade e a atribuição de tarefas a seguranças. Form_Part_2: “Form_Part_Task_New_Single” • Sub-script que carrega o formulário para criação de uma tarefa única. Form_Part_3: “Form_Part_Task_New_Periodic” • Sub-script que carrega o formulário para criação de uma tarefa periodica. Include (‘Form_Part_Task_New_Periodic’); } Include (‘Form_Part_TaskDetails_DescriptionObserva tion’); $buttons = getTaskButtons(Task_register, NULL); Include (‘Form_Part_Buttons’); Form_Part_4: “Form_Part_Task_DescriptionObservation” • Sub-script que carrega o formulário para criação de uma tarefa única. Form_Part_5: “Form_Part_Buttons” • Sub-script que recebe um array com os botões adequados e os dispõem no ecrã. • Ao clicar no botão -> newTask($task) 4 Titulo da pagina: “Tarefas Correntes” Hoje Atrasadas Todas Vigilantes Prioridade Descrição . . . Tarefas Semana . . . Data . . . Tarefas Mês Todas Vigilantes Prioridade Descrição . . . . . . Imprimir Data . . . Histórico 5 Divisão dos elementos Todas Vigilantes FORM PART 1 Prioridade . . . Descrição . . . Todas Vigilantes FORM PART 1 Data . . . Prioridade . . . FORM PART 2 Descrição . . . Data . . . FORM PART 2 FORM PART 3 6 Form Principal: “form_task_list” Form_Part: “Form_Part_TaskList_Filters” • Script que gera a pagina consulta de lista de tarefas. • Sub-script que faz o “print” aos filtros para a listagem Session_Start(); • Os filtros estão guardados numa variável de sessão $_SESSION[‘filters’] que é usada para “carregar” a lista de tarefas adequada. $filters = $_SESSION[‘filters’]; $list_type = ‘Hoje’; $task_list = getTaskList( $list_type, $filters); Include (‘Form_Part_TaskList_Filters’); Include (‘Form_Part_TaskList_Display’); • Exemplo: $filters[‘Hoje’]=‘Todas’ $filters[‘Atrasadas’]=‘Vigilante’ • Ao clicar no botão do filtro, a variável de sessão é actualizada e a pagina recarregada. $list_type = ‘Atrasadas’; $task_list = getTaskList($list_type,$filters); Include (‘Form_Part_TaskList_Filters’); Include (‘Form_Part_TaskList_Display’); $buttons = getButtons(Task_list, NULL); Include (‘Form_Part_Buttons’); Function getbuttons() arrayButtons.add(‘Tarefas_mês, viewTaskMonth.php); Form_Part: “Form_Part_TaskList_Display” • Sub-script que faz o “print” para o ecrã da lista de tarefas carregada na variável $task_list. • A descrição da tarefa na lista é uma hiperligação para a pagina de detalhes da tarefa • O ID da tarefa é passado pelo método GET no url. Form_Part: “Form_Part_Buttons” • Sub-script que recebe um array com os botões adequados e os dispõem no ecrã. 7 Funções da camada de acesso a base de dados necessárias: - getTaskList( $list_type ,$filters) • Recebe como argumentos: - o tipo de lista apresentar: ‘Hoje’; ‘Atrasadas’; ‘Mês’; ‘Semana’ - o filtro para a lista: ‘Todas’ ; ’Vigilante’ • Retorna um array multidimensional com a lista de tarefas: $task_list[id_task]=> array ( task_priority, task_state, task_description, task_date) - getActionList( $id_user) • Recebe como argumento: -o ID do user autentificado no sistema • Retorna array com a lista de acções que este pode efectuar no sistema. Exemplo: $action_list[1]= ‘Alterar Tarefa’ $action_list[2]= ‘Criar Tarefa’ … 8 Funções auxiliares: - getTaskButtons( $buttons_select, $task_state) • Recebe como argumentos: - qual o “FORM” que vamos fazer “display” ‘Task_list’; ‘Task_list_week’; ‘Task_list_month’; ‘Task_details’; ‘Task_edit’; ‘Task_new’ - o estado da tarefa ( no caso da consulta de detalhes) • Retorna um array com a lista de botões que o user tem permissões para ver nesse “FORM” Exemplo: ‘Task_list’; NULL ‘Task_details’; ‘Planeada’ • Nova Tarefa • Tarefas Da Semana • Tarefas Do Mês • Impressão • Histórico • Registar Tarefa • Alterar Tarefa • Apagar Tarefa • Arquivar Tarefa • Imprimir 9 Titulo: “Detalhes da Tarefa” (Consulta) – Estado Não Registada (Planeada) Prioritária - SIM Vigilante -Sim Data Hora Descrição da tarefa: Observações da tarefa: Autor: Criada em: Tarefa por executar. Alterar Tarefa Apagar Tarefa Registar Tarefa Imprimir 10 Titulo: “Detalhes da Tarefa” (Consulta) – Estado Registada (Executada) Prioritária - SIM Vigilante -Sim Hora Data Descrição da tarefa: Observações da tarefa: Autor: Criada em: A tarefa executada com sucesso? Sim Observações sobre a execução da tarefa: Anomalia associada Alterar Tarefa Apagar Tarefa Imprimir 11 Titulo: “Detalhes da Tarefa” (Consulta) – Estado Registada (Não Executada/Parcialmente Executada) Prioritária - SIM Vigilante -Sim Hora Data Descrição da tarefa: Observações da tarefa: Autor: Criada em: A tarefa executada com sucesso? Não Observações sobre a execução da tarefa: Aviso associado Anomalia associada Alterar Tarefa Apagar Tarefa Imprimir 12 Divisão dos elementos • É possível verificar por simples inspecção que dentro de todos os estados possíveis na consulta de detalhes que existem elementos que se repetem: Prioritária - SIM Vigilante -Sim Data Hora Descrição da tarefa: Observações da tarefa: FORM PART 1 (PLANEAMENTO) Autor: Criada em: A tarefa executada com sucesso? Sim Observações sobre a execução da tarefa: FORM PART 2 (EXECUÇÃO/REGISTO) Anomalia associada Alterar Tarefa Apagar Tarefa Imprimir FORM PART 3 (BOTÕES) 13 Form Principal: “Form_TaskDetails” Form_Part: “Form_Part_TaskDetails_Planning” • Script que gera a pagina de consulta de detalhes de uma tarefa especifica. • Sub-script que faz o “print” dos dados de planeamento da tarefa. Session_start(); • Utiliza os dados contidos no array $task $id_task = $_GET [‘id_task’]; $task = getTaskById( $id_task); $warning = getTaskWarning($id_task); $anomalie = getTaskAnomalie($id_task); Form_Part: “Form_Part_TaskDetails_State” • Sub-script que faz o “print” do estado da tarefa e dos detalhes de execução (registo), apresenta avisos e/ou anomalias associados a tarefa. $_SESSION[‘current_task’] = $task; Include (‘Form_Part_TaskDetails_Planning’); Include (‘Form_Part_TaskDetails_State’); $buttons = getTaskButtons(Task_details, $task[task_state]); Include (‘Form_Part_Buttons’); Form_Part: “Form_Part_Buttons” • Sub-script que recebe um array com os botões adequados e os dispõem no ecrã. • Os dados da tarefa sobre a qual se esta a trabalhar são passados por variável de sessão entre paginas (evitar acessos desnecessários a B.D.), caso “Registar Tarefa”, “Alterar Tarefa”. $_SESSION[‘task’]= $task; $_SESSION[‘warning’]= $warning; $_SESSION[‘anomalie’]= $anomalie; 14 Funções da camada de acesso a base de dados necessárias: - getTaskById( $id_task) • Recebe como argumento: - Id da tarefa • Retorna um array com os dados da tarefa: $task=> array ( id_task, task_priority, task_state, task_description, task_date, task_author… ) -getTaskWarning($id_task) • Recebe como argumento: – Id a tarefa • Retorna um array com os dados do aviso associados a tarefa: $warning=> array (id_warning, warning_description, Warning_priority, warning_security…#id_task) - getTaskAnomalie($id_task) • Recebe como argumento: - Id da tarefa • Retorna um array com os dados da anomalia associada a tarefa: $anomalie=> array (id_anomalie, anomalie_description, anomalie_TT, #id_task) 15 Titulo: “Detalhes da Tarefa” (Registar - Executada) Prioritária - SIM Vigilante -Sim Hora Data Descrição da tarefa: Observações da tarefa: Autor: Criada em: Sim A tarefa executada com sucesso? Executei Parte Não Observações sobre a execução da tarefa: Alguma anomalia? Sim Não Confirmar 16 Titulo: “Detalhes da Tarefa” (Registar – Não Executada/Parcialmente Executada) Prioritária - SIM Vigilante -Sim Hora Data Descrição da tarefa: Observações da tarefa: Autor: Criada em: Sim A tarefa executada com sucesso? Executei Parte Não Porque? Pretende colocar um aviso? Sim Não Alguma anomalia? Sim Não Confirmar 17 Elementos comuns Prioritária - SIM Vigilante -Sim Data Hora Descrição da tarefa: Observações da tarefa: Autor: FORM PART 1 (PLANEAMENTO) Criada em: A tarefa executada com sucesso? Porque? Sim Executei Parte Não Sim Não Pretende colocar um FORM aviso? PART 2 (EXECUÇÃO/REGISTO) Alguma anomalia? Confirmar Sim Não FORM PART 3 (BOTÕES) 18 Form Principal: “Form_TaskDetails_Register” Form_Part_1: “Form_Part_TaskDetails_Planning” • Script que gera a pagina de consulta de detalhes de uma tarefa especifica. • Sub-script que faz o “print” dos dados de planeamento da tarefa. Session_start(); • Utiliza os dados contidos no array $task $task = $_SESSION[‘task’]; Include (‘Form_Part_TaskDetails_Planning’); Include (‘Form_Part_TaskDetails_Register’); $buttons = getTaskButtons(Task_register, NULL); Include (‘Form_Part_Buttons’); Form_Part_2: “Form_Part_TaskDetails_Register” • Sub-script que carrega os formularios de registo da tarefa. • Dentro deste sub-script vai ser invocado outros sub-scripts (se necessário, ‘Form_Warnings_New’ ‘Form_Anomalies_New’) • “Call” a função updateTask($task) Form_Part_3: “Form_Part_Buttons” • Sub-script que recebe um array com os botões adequados e os dispõem no ecrã. 19 Funções da camada de acesso a base de dados necessárias: - updateTask( $task) • Recebe como argumento: - Array com os dados da tarefa Faz o “update” substituindo os campos na B.D. da tarefa com ‘id_task’==$task[id_task] pelos do array $task. - newWarning( $warning) • Recebe como argumento: -Array com os dados do aviso. Faz um “insert” na B.D de um novo aviso -newAnomalie( $anomalie) • Recebe como argumento: -Array com os dados da anomalia. Faz um “insert” na B.D de uma nova anomalia 20 Titulo: “Alterar Tarefa” – Não Registada (Planeada) Prioritária - Sim Não Vigilante - Sim Não Data Hora Descrição da tarefa: Observações da tarefa: Autor: Guardar Alterações Criada em: Cancelar 21 Titulo: “Alterar Tarefa” - Registada (Executada) * Prioritária - SIM Vigilante -Sim Hora Data Descrição da tarefa: Observações da tarefa: Autor: Criada em: A tarefa executada com sucesso? Sim Executei Parte Não Observações sobre a execução da tarefa: Anomalia Alterar Guardar Alterações Cancelar 22 Titulo: “Alterar Tarefa” - Registada (Não Executada/Parcialmente Executada) * Prioritária - SIM Vigilante -Sim Hora Data Descrição da tarefa: Observações da tarefa: Autor: Criada em: A tarefa executada com sucesso? Sim Executei Parte Não Observações sobre a execução da tarefa: Aviso associado Alterar Anomalia associada Alterar Guardar Alterações Cancelar 23 Divisão do elementos Prioritária - SIM Vigilante -Sim Data Hora Descrição da tarefa: Observações da tarefa: FORM PART 1 (PLANEAMENTO) Autor: Criada em: A tarefa executada com sucesso? Sim Observações sobre a execução da tarefa: FORM PART 2 (EXECUÇÃO/REGISTO) Anomalia associada Alterar Tarefa Apagar Tarefa Imprimir FORM PART 3 (BOTÕES) 24 Analise dos elementos • O Form_Part_1 vai depender do tipo de “user” que está a tentar alterar a tarefa, não existe necessidade de desassociar edição dos dados da edição do registo, logo quando um “user” com permissões para tal esta a editar uma tarefa pode editar os dados da tarefa bem como o seu registo, por outro lado um user sem permissões pode apenas alterar o registo. Logo: Form_Part_TaskDetails_Planning ou Form_Part_TaskDetails_Planning_Edit • O Form_Part_2 vai ser acessível por todos os users, tendo umas pequenas nuances em que: 1. É possível editar os dados de registo da tarefa. 2. Visualiza-se os dados ,caso existam, do aviso/ anomalia associada e existe a possibilidade de alterar os dados do aviso/anomalia nesse mesmo formulário. 25 Form Principal: “Form_TaskDetails_Edit” Session_start(); $task = $_SESSION[‘task’]; $action_list = $_SESSION[‘action_list’]; Form_Part: “Form_Part_TaskDetails_Planning_Edit” • Sub-script carrega os dados da tarefa em formulários editáveis. • Utiliza os dados contidos no array $task Form_Part: “Form_Part_TaskDetails_Register_Edit” if ( array_key_exist(‘Alterar Tarefa’, $action_list) • Sub-script que carrega os formularios de registo da tarefa. Include (‘Form_Part_TaskDetails_Planning_Edit’); Else • Dentro deste sub-script vai ser invocado outros sub-scripts (se necessário, ‘Form_Warnings_Edit’ ‘Form_Anomalies_Edit’) Include (‘Form_Part_TaskDetails_Planning’); • “Call” a função updateTask($task) Include (‘Form_Part_TaskDetails_Register_Edit’); $buttons = getTaskButtons(Task_register, NULL); Include (‘Form_Part_Buttons’); Form_Part: “Form_Part_Buttons” • Sub-script que recebe um array com os botões adequados e os dispõem no ecrã. 26 Funções da camada de acesso a base de dados necessárias: - updateWarning( $warning) • Recebe como argumento: -Array com os dados do aviso. Faz o “update” substituindo os campos na B.D. pelos do array $warning. - updateAnomalie( $anomalie) • Recebe como argumento: -Array com os dados da anomalia. Faz o “update” substituindo os campos na B.D. da anomalia pelos do array $warning. 27 Funções da camada de acesso a base de dados: TAREFAS: AVISOS: Outras: • getTaskList( $list_type ,$filters) • getWarningsList() • getTaskAnomalie($id_task) • getTaskById( $id_task) • getWarningById( $id_warning) • getTaskWarning($id_task) • updateTask( $task) • updateWarning( $warning) • deleteTask($id_task) • newWarning( $warning) • arquiveTask($id_task) • deleteWarning( $id_warning) • newTask($task) Users: Anomalias: • getActionList( $id_user) • getAnomalieList() • updateUser($user) • getAnomalieById( $id_anomalie) • deleteUser($id_user) • updateAnomalie( $id_anomalie) • newUser($user) • newAnomalie( $anomalie) • deleteAnomalie( $id_anomalie) 28 Variáveis de Sessão: $_SESSION[‘filters’] – Guarda o estado dos filtros actualmente seleccionados, na lista de tarefas. $_SESSION[‘task’] – Guarda os dados da tarefa sobre a qual se esta a trabalhar no momento. $_SESSION[‘warning’] – Guarda os dados sobre o aviso o qual se esta a trabalhar no momento. $_SESSION[‘anomalie’] – Guarda os dados sobre a anomalia a qual se esta a trabalhar no momento. $_SESSION[‘action_list’] – Guarda a lista de acções que o user autentificado no sistema tem acesso. $_SESSION[‘user’] – Guarda os dados do user autentificado no sistema. 29 Forms e Form_Parts: Form_Part: Form: • Form_Task_New • Form_TaskList • Form_TaskDetails • Form_Part_Task_PrioritySecurity • Form_Part_Task_New_Periodic • Form_Part_Task_New_Single • Form_Part_TaskDetails_DescriptionObservation • Form_Part_Buttons • Form_Part_TaskList_Filters • Form_Part_TaskList_Display • Form_Part_Buttons • Form_Part_TaskDetails_Planning • Form_Part_TaskDetails_State” • Form_Part_Buttons • Form_TaskDetails_Register • Form_Part_TaskDetails_Planning • Form_Part_TaskDetails_Register • Form_Part_Buttons • Form_TaskDetails_Edit • Form_Part_TaskDetails_Planning_Edit • Form_Part_TaskDetails_Register_Edit • Form_Part_Buttons 30