• Nenhum resultado encontrado

4 PROPOSTA DE NOVO SUBSISTEMA PARA O EXEHDA: GERENCIAMENTO

4.1 Serviço de Acesso a Tarefas

O Serviço de Acesso a Tarefas é responsável por armazenar e acessar informações das tarefas e da execução delas para cada usuário. Assim, esse serviço possui duas funcionalidades: (i) acesso à base de dados de tarefas codificadas, que é um repositório de tarefas disponíveis ao usuário; e (ii) acesso ao histórico de execução de tarefas, que armazena informações úteis ao Serviço de Inferência.

A Base de Dados de Tarefas Codificadas armazena as tarefas e subtarefas disponibilizadas aos usuários. Como visto no capítulo 3, a representação das tarefas e subtarefas foi modelada através de ontologias (LIBRELOTTO et al, 2008). Dessa forma, será implementado um banco de dados ontológico para armazenar as tarefas. Esse banco de dados será acessado através da API Jena (Dickinson, 2008).

Porém, o banco de dados ontológico será abordado em outra frente de atuação do projeto ClinicSpaces. E por isso, a prototipação do Serviço de Acesso a Tarefas foi feita com um parser XML, que processa a descrição ontológica das tarefas. Fica como trabalho futuro atualizar esse serviço para fazer uso do banco de dados, através da API Jena.

A associação entre os usuários e as tarefas disponíveis a eles também é responsabilidade do banco de dados ontológico. Para isso, o banco deve manter a relação de tarefas disponíveis para cada usuário na forma de cópias da tarefa original. Assim, quando um profissional personaliza (modifica) sua tarefa, as outras cópias não sofrem alterações.

40

A Base de Dados do Histórico de Execução das Tarefas tem a função de armazenar as informações de execução das tarefas para cada usuário, relativas à forma particular com que eles realizam suas atividades. Essas informações de execução das tarefas são utilizadas pelo Serviço de Inferência para processamento da preferência do usuário, por exemplo. Assim, o Subsistema de Gerenciamento Distribuído de Tarefas pode utilizar essas informações para otimizar a rotina do profissional, dentro do escopo das atividades diárias auxiliadas pela computação pervasiva.

Além disso, essa base de dados mantém informações quantitativas de utilização das tarefas, como número de vezes que a tarefa foi executada, data da última execução e data da última modificação da tarefa. Com base nessas informações, pode-se gerenciar o ambiente (principalmente a interface gráfica) do usuário para evoluir a usabilidade do sistema.

A implementação dessa funcionalidade poderia ser feita através da utilização do serviço Logger do EXEHDA (ver Apêndice C), ou poderia ser modelada uma ontologia específica para esse fim. Porém, como essa é uma funcionalidade secundária (não essencial para a prototipação do SGDT) e dependente do Serviço de Inferência (o qual será modelado em outro trabalho11), ela não foi implementada no protótipo inicial do SGDT, ficando como um trabalho a ser realizado numa segunda etapa do desenvolvimento do projeto ClinicSpaces, após o conceito de contexto de tarefas clínicas estar mais amadurecido, o que permitirá avaliar quais as informações de execução são realmente importantes para a inferência das atividades dos usuários.

4.1.1 Funcionamento do Serviço de Acesso a Tarefas

Essa subsessão discute questões de implementação do Serviço de Acesso a Tarefas (SAT), dando uma visão geral de como o acesso a Base de Dados de Tarefas Codificadas é feito no protótipo implementado como parte desta dissertação. Salienta-se que devido ao banco de dados ontológico estar sendo desenvolvido em outro trabalho paralelo, a prototipação do SAT foi feita com um parser XML, baseado numa descrição ontológica de tarefas, a qual também está sendo evoluída paralelamente a este trabalho.

11 O Serviço de Inferência está sendo modelado no trabalho de dissertação do mestrando Marcos Vinícius B. de Souza (PPGI-UFSM).

O Serviço de Acesso a Tarefas, atualmente, disponibiliza dois métodos para que o Serviço de Gerenciamento de Tarefas tenha acesso às tarefas dos usuários. Um deles busca a lista de tarefas disponíveis a determinado usuário (ver Quadro 1) e retorna os identificadores delas. Essa busca é feita em um arquivo XML contido no Ambiente Virtual do Usuário (AVU) mantido pelo middleware EXEHDA. Esse arquivo segue o modelo de um arquivo que informa as aplicações pervasivas disponíveis a um usuário do EXEHDA. Porém, futuramente, esse método usará o banco de dados ontológico para buscar as tarefas disponíveis a um usuário.

Quadro 1 - Método findAvailableTasks() do SAT. O tratamento de exceções foi removido do código, pois não é essencial para seu entendimento.

Outro método, findTask, é responsável por buscar uma tarefa que será executada pelo Serviço de Gerenciamento de Tarefas. Esse método busca o descritor XML da tarefa através de seu identificador. Futuramente, essa busca também será feita no banco de dados ontológico.

Após a busca (ver fragmento de código no Quadro 2), o descritor é processado por um

parser criado para essa finalidade. O parser faz a validação do descritor através de uma

estrutura padrão definida com XML Schema (W3C, 2000). Tanto tarefas como subtarefas possuem seu schema, mostrados, respectivamente, na Figura 5 e na Figura 6, as quais representam a ontologia definida para tarefas simples e subtarefas. Feita a validação e o

public List<String> findAvailableTasks(String login) throws TaskLoadException {

final List<String> availableTasks = new LinkedList<String>(); //obtém o elemento raiz e a lista de nodos "Task"

final Element root;

root = parserXml.makeParser(login, "available_tasks.xml", ParserXml.AVAILABLE_TASKS);

final NodeList taskNodes = root.getElementsByTagName("Task"); for (int i = 0; i<taskNodes.getLength(); i++) {

final Element taskNode = (Element) taskNodes.item(i); //obtém o identificador da tarefa e insere na lista

String task = taskNode.getTextContent(); availableTasks.add(task);

}

return availableTasks; }

42

processamento do descritor, a tarefa é instanciada de acordo com seu tipo (simples ou composta).

Quadro 2 - Método findTask() do SAT. O tratamento de exceções foi removido do código, pois não é essencial para seu entendimento.

Figura 5 - XML Schema para tarefas

Figura 6 - XML Schema para subtarefas public Task findTask(String login, String idTask) throws TaskLoadException {

final String taskFileName = new String(idTask + ".xml");

//obtém o elemento raiz do descritor

final Element taskNode;

taskNode = parserXml.makeParser(login, taskFileName, ParserXml.TASK);

//instancia de acordo com o tipo (Simples ou Composta)

final String taskType = parserXml.getTaskType(taskNode); final Task task;

task = getTaskInstance(taskType); parserXml.parseTask(task, taskNode); loadSubTasks(task, taskNode);

return task; }

Em seguida, todos os descritores (XML) das subtarefas que compõem a tarefa são buscados e cada subtarefa é instanciada e adicionada à tarefa (ver Quadro 3). Finalmente, a tarefa está carregada e é enviada ao Serviço de Gerenciamento de Tarefas para execução.

Quadro 3 - Busca e instancia subtarefas. O tratamento de exceções foi removido do código, pois não é essencial para seu entendimento.

Documentos relacionados