• Nenhum resultado encontrado

De acordo com o metamodelo de workflow da Nortel [2.2], um processo de workflow é visto como uma coleção de tarefas . Uma tarefa representa uma unidade de trabalho dentro de um processo de workflow. A estrutura do processo de workflow é expressa por meio de interdependências entre as tarefas que o constituem. Uma dependência pode ser uma de- pendência de notificação (indicando que uma tarefa só pode começar depois de outra ter terminado, dependência temporal) ou uma dependência de fluxo de dados (indicando que uma tarefa precisa das saídas de outra para poder começar). Uma tarefa é modelada como tendo conjuntos de entrada (input sets) e conjuntos de saída (output sets). Um conjunto de entrada especifica as entradas (inputs) de que a tarefa necessita (os recursos de entrada).

A execução de uma tarefa é disparada quando todo o conjunto de entradas estiver dispo- nível. Um conjunto de entradas está disponível quando todas as entradas que o constituem forem satisfeitas (tenham sido obtidas, semântica AND). Basta que um conjunto de entrada (se a tarefa tiver vários conjuntos de entrada) seja satisfeito para que a execução da tarefa seja disparada (semântica OR). As entradas (inputs) são modeladas como objetos de dados. As tarefas manipulam referências aos objetos de entrada/saída.

Na Figura 2.2(a) é apresentado o modelo de tarefas seguindo a notação da Nortel e na Fi- gura 2.2(b) o modelo computacional da mesma tarefa usando um diagrama de atividades da UML. Na Figura 2.2 a tarefa ti é representada com dois conjuntos de entrada is_1, e is_2 (InputSet_1 e InputSet_2) e dois conjunto de saída os_1 e os_2 (OutputSet_1 e Output- Set_2). O primeiro dos conjuntos de entrada tem dois objetos de entrada io_1 e io_2 (Inpu- tObject_1 e InputObject_2) e o segundo conjunto de entrada três objetos de entrada io_1, io_2 e io_3 (InputObject_1, InputObject_2 e InputObject_3). O conjunto de entrada is_1

mântica AND) e o conjunto de entrada is_2, se seus três objetos de entrada io_1, io_2 e io_3 estiverem disponíveis. Uma dada entrada pode ser alimentada por uma ou mais fontes. Por exemplo, o objeto de entrada io_1 (InputObject_1), que faz parte do conjunto de entra- da is_1 (InputSet_1), pode provir de duas fontes diferentes. Esta é a forma de introduzir , numa tarefa, fontes redundantes de dados, tendo a tarefa o controle na seleção da entrada.

OR Fonte 1 Fonte 2 t_i is_2 io_1 os_2 io_3 io_2 oo_1 oo_2 io_1 io_2 oo_1 is_1 os_1 (a) OR Semântica AND Semântica OR

Figura 2.2. Modelo computacional de tarefa da Nortel: a) segundo a notação original da proposta b) usando um diagrama de atividades da UML.

Uma tarefa pode terminar produzindo só um conjunto de saída , entre vários possíveis. A tarefa da figura tem dois conjuntos de saída os_1 (OutputSet_1) e os_2 (OutputSet_2), cada um produzindo diferentes objetos de saída. O primeiro dos conjuntos de saída possui dois objetos de saída oo_1 e oo_2 e o segundo conjunto de saída os_2 (OutputSet_2) só um objeto de saída oo_1 (OutputObject_1). Só um dos dois conjuntos de saída, ao ficar satis- feito, indicará o término da tarefa t_i (é a forma de representar diferentes possibilidades de terminação de uma tarefa).

Na Tabela 2.2, é apresentada uma síntese com os metaconceitos do modelo de workflow da Nortel. A definição do metamodelo de workflow da Nortel é apresentada por meio de um conjunto de metatipos e de metaassociações. Cada um dos metatipos e meta- associações é seguido por uma descrição de sua função. Para facilitar a referência com ou- tros documentos, a descrição de cada meta-entidade citada está acompanhada pela respecti- va transcrição em Inglês, tal como aparece na fonte original. Para facilitar a diferenciação do contexto de proveniência, os elementos do modelo da Nortel serão apresentados com letras em itálico sublinhadas.

Tabela 2.2. Metaconceitos do modelo de workflow da Nortel

t_i is_1 is_2 io_1 io_1 io_2 io_2 io_3 os_1 os_2 oo_1 oo_1 fontes ( b ) oo_2

Tarefa (Task): O metatipo tarefa modela as tarefas de um processo de workflow sem es- pecificar se ela é uma TarefaSimples, uma TarefaComposta, uma TarefaGênesis ou uma TarefaAdaptadora. Uma tarefa é uma unidade de atividades, dentro de uma aplicação base- ada em workflow. Contem um ou mais ConjuntosDeEntrada / ConjuntosDeSaída.

TarefaSimples (SimpleTask): O metatipo TarefaSimples deriva do metatipo Tarefa e mo- dela tarefas simples (uma unidade de trabalho) dentro de um processo de workflow.

TarefaComposta (CompoundTask): O metatipo TarefaComposta , derivado do metatipo Tarefa, modela as tarefas compostas dentro de um processo de workflow. Uma tarefa com- posta contém (é recipiente) do metatipo tarefa. O propósito de uma tarefa composta é per- mitir a composição de tarefas a partir de outras tarefas, permitindo uma estrutura recursiva dentro do modelo do processo de workflow.

TarefaGênesis(GenesisTask): Uma tarefa gênesis é um lugar deixado para colocar a es- trutura de uma tarefa. Seu propósito é permitir a ação dinâmica, criação e controle de sub- tarefas, a partir de uma determinada definição de tarefa.

TarefaAdaptadora (AdapterTask): A tarefa adaptadora tem uma estrutura interna desco- nhecida. O propósito de uma tarefa adaptadora é a construção de vias de entrada a sistemas de workflow legados.

Evento (Event): O metatipo evento modela eventos dentro de uma aplicação de work- flow, em geral sem especificar se o evento é o resultado da produção de um conjunto de saída ou se resulta da seleção de um conjunto de entrada.

ConjuntoDeEntrada (InputSet): O metatipo ConjuntoDeEntrada deriva do metatipo E- vento, e modela, dentro de uma aplicação com workflow, a seleção de um conjunto de en- tradas.

ConjuntoDeSaida (OutputSet): O metatipo ConjuntoDeSaida deriva do metatipo Evento e modela, dentro de uma aplicação com workflow, a produção de um conjunto de saídas.

Dados (Data): Este metatipo modela os dados em geral (referências a objetos), dentro de uma aplicação com workflow, sem especificar se os dados são entradas ou saídas

Entrada (Input): Este metatipo deriva do metatipo Dados, e modela as entradas de uma tarefa dentro de uma aplicação com workflow.

Saída (Output): Este metatipo deriva do metatipo Dados e modela as saídas de uma tare- fa dentro de uma aplicação com workflow.

DependênciaDeDados (DataDependency): Este metatipo modela as dependências entre dados numa aplicação com workflow.

DependênciaDeEventos(EventDependency) : Este metatipo modela as dependências en- tre eventos numa aplicação com workflow.

Localização (Location): Este metatipo modela a informação necessária para especificar como são criadas as entidades dentro do workflow. Derivando-se dele outros metatipos como, por exemplo, Pessoa ou Organização, permite modelar as políticas associadas com a designação dos executores.

ControlaLocalizaçãoDe (ControlLocationsOf): Esta meta-associação modela o relacio- namento entre as tarefas e as localizações requeridas para especificar a localização do con- trole das tarefas

LocalizaçãoDe (LoationsOf ): A meta-associação LocalizaçãoDe modela o relaciona- mento entre uma tarefa simples e a localização requerida para especificar a localização da implementação da tarefa.

ConteúdoDe (ContentsOf ): Esta meta-associação modela o relacionamento entre Tare- fasCompostas e as Tarefas requeridas para especificar as tarefas contidas na tarefa compos- ta

EspecificaçãoDe (SpecificationOf ): A meta-associação EspecificaçãoDe modela o rela- cionamento entre uma TarefaGênesis e a Tarefa requerida, para especificar a definição da tarefa que é possuída pela TarefaGênesis.

ConjuntosDeEntradaDe (InputSetsOf): Esta meta-associação modela o relacionamento entre Tarefas e os ConjuntosDeEntrada requeridos para especificar os conjuntos de entrada possuídos pela tarefa

ConjuntosDeSaídaDe (OutputSetsOf ): Esta meta-associação modela o relacionamento entre Tarefas e os ConjuntosDeSaída requeridos para especificar os conjuntos de saída pos- suídos pela tarefa.

FontesDeDependênciaDeEventos (EventDependencySourcesOf ): Esta meta-associação modela o relacionamento entre o meta tipo Evento e o meta tipo DependênciaDeEventos e serve para especificar a fonte de uma dependência de eventos.

PoçosDeDependênciaDeEventos (EventDependencySinksOf ): Esta meta-associação mo- dela o relacionamento entre o metatipo Evento e o metatipo DependênciaDeEventos e serve para especificar o poço de uma dependência de eventos.

EntradasDe (InputsOf ): A meta-associação EntradaDe modela o relacionamento entre o metatipo Entradas e o metatipo ConjuntoDeEntradas para especificar as entradas que são possuídas por um conjunto de entrada

SaídasDe (OutputsOf ): A meta-associação SaídaDe modela o relacionamento entre o metatipo Saídas e o metatipo ConjuntoDeSaída para especificar as saídas que são possuídas

por um conjunto de saída.

FontesDeDependênciaDeDados (DataDependecySourcesOf ): Esta meta-associação mo- dela o relacionamento entre o metatipo Dados e o metatipo DependênciaDeDados e serve para especificar a fonte de uma dependência de dados

PoçosDeDependênciaDeDados (DataDependenciesSinksOf ): Esta meta-associação mo- dela o relacionamento entre o metatipo Dados e o metatipo DependênciaDeDados e serve para especificar o poço de uma dependência de dados.

Usando um diagrama de classes de UML, a Figura 2.3, mostra uma adaptação do meta- modelo de workflow apresentado em [2.2] e descrito na Tabela 2.2.

TarefaAdaptadora Saida TarefaSimple DependenciaDeDados Dados 0..* 1 0..* 1 FonteDaDependenciaDeDados 0..* 1 0..* 1 PoçosDeDependênciaDeDados Depen denciaDeEventos Evento 11 0..*0..* FonteDeDependenciaDeEventos 0..* 1 0..* 1 PoçosDeDependênciaDeEventos ConjuntoDeSaida 0..* 1 0..* 1 SaídasDe TarefaComposta Localizacao LocalizaçãoDe TarefaGenesis Entrada ConjuntoDeEntrada 0..* 1 0..* 1 EntradasDe Tarefa 1..* 1 1..* 1 ConjuntosDeSaídaDe 0..* 0..1 0..* 0..1 ConteúdoDe 0..* 1 0..* +ControlaLocalizaçãoDe 1 EspecificaçãoDe 1..* 1 1..* 1 ConjuntosDeEntradaDe

2.2.1 Comentários

O modelo de workflow da Nortel diferencia-se do modelo de workflow da WfMC por ser um modelo orientado a objetos e por incluir conceitos relacionados com eventos, embora unicamente em relação com os ConjuntosDeEntrada e ConjuntosDe Saída de uma Tarefa. De fato os ConjuntosDeEntrada e ConjuntosDeSaída são uma especialização da metaclasse Evento (ver figura 2.3) e a satisfação de qualquer conjunto de dados (o fato do conjunto ter obtido todos seus dados) gera um evento.

O fato do modelo ter metaconceitos para agrupar as Entradas e Saídas em GruposDeEn- trada e GruposDeSaída possibilita a declaração de condições para especificar que a reali- zação de ‘n’ entre ‘m’ DependênciasDeDados, executando-se em paralelo (com n <= m), resultem na passagem a outra Tarefa, como seguinte passo dentro do workflow (ver comen- tário da seção 2.1.1). A anterior semântica pode ser conseguida simplesmente agregando na metaclasse Dados um atributo extra com uma semântica associada com ‘multiplicidade’. Este atributo permitiria ao Dado agir como uma coleção de instâncias de Dados e uma mul- tiplicidade dele maior que zero especificaria que pelo menos esse número de dados deverá ser recebido para que o Dado seja satisfeito. Por exemplo, o atributo ‘multiplicidade’ igual a ‘n’ indicaria que a chegada de ‘n’ Entradas de ‘m’ DependênciasDeDado possíveis satis- faria o Dado permitindo, dessa maneira, declarar condições para especificar o fato de que a realização de ‘n’ entre ‘m’ transições executando-se em paralelo (com n <= m ) resultem na passagem a uma outra atividade comum, como passo seguinte dentro do workflow.