TCC Cleosvaldo Versao Final
TCC Cleosvaldo Versao Final
TCC Cleosvaldo Versao Final
Florianpolis
2005/2
2
Florianpolis
2005/2
3
SUMRIO
1 INTRODUO....................................................................................................................... 9
1.1 CONTEXTO ...........................................................................................................9
1.1.1 Engenharia e Gesto do Conhecimento................................................................... 9
1.1.2 Metodologias da Engenharia do Conhecimento.................................................... 11
1.1.3 A Metodologia CommonKADS ............................................................................ 12
1.1.4 Ferramenta de apoio ao Engenheiro de Conhecimento ......................................... 13
1.2 OBJETIVOS ........................................................................................................13
1.2.1 Objetivo Geral ....................................................................................................... 13
1.2.2 Objetivos Especficos ............................................................................................ 13
1.2.3 Justificativa e Motivaes ..................................................................................... 14
1.3 ESTRUTURA DO TRABALHO..................................................................................15
1.4 DELIMITAES DO TRABALHO ..............................................................................16
2 A METODOLOGIA COMMONKADS ............................................................................... 17
2.1 COMPONENTES DA METODOLOGIA COMMONKADS...............................................18
2.1.1 Atividades de Modelagem ..................................................................................... 20
2.1.2 Modelo da Organizao......................................................................................... 21
2.1.3 Modelo da Tarefa................................................................................................... 28
2.1.4 Modelo do Agente ................................................................................................. 31
2.1.5 Consolidao dos modelos da organizao, tarefa e agentes ................................ 32
2.1.6 Modelo de Conhecimento...................................................................................... 34
2.1.7 Modelo de Comunicao ....................................................................................... 36
2.2 FERRAMENTA PARA DOCUMENTAO: COMMONKADS EDITOR..............................38
3 SISTEMA PROPOSTO......................................................................................................... 41
3.1 INTRODUO ......................................................................................................41
3.2 POSICIONAMENTO: DEFINIO DA APLICAO.......................................................41
3.2.1 Descrio do Domnio do Problema...................................................................... 41
3.2.2 Sistema de apoio aplicao da Metodologia CommonKADS ............................ 43
3.3 ESPECIFICAO DE REQUISITOS...........................................................................44
3.3.1 Definio dos Usurios do Sistema ....................................................................... 46
3.3.2 reas do Sistema e Casos de Uso.......................................................................... 47
3.4 MODELO CONCEITUAL ........................................................................................67
3.5 DEFINIO DO BANCO DE DADOS.........................................................................69
3.6 CONSIDERAES SOBRE A ANLISE E PROJETO .....................................................70
3.7 CONSIDERAES SOBRE A IMPLEMENTAO .........................................................70
3.8 INTERFACES DO SISTEMA ....................................................................................71
3.8.1 Janela inicial do Sistema........................................................................................ 71
3.8.2 Janela Principal do Sistema ................................................................................... 71
4 TESTES ................................................................................................................................. 87
4
LISTA DE TABELAS
LISTA DE FIGURAS
RESUMO
A aplicao da Gesto do Conhecimento nas organizaes tem crescido
constantemente. Cada vez mais empresas procuram gerir o conhecimento de forma
estratgica para tornarem-se mais competitivas.
1 INTRODUO
1.1 Contexto
Com a evoluo das pesquisas, a partir da dcada de 80, deu-se incio a segunda
gerao de sistemas especialistas, onde a proposta de transferncia de conhecimento
cedeu espao para a proposta de modelagem conhecimento (Benjamins apud Alkaim,
2003, p.107), que trouxe consigo maior suporte para a rea de aquisio de conhecimento.
Anlise da tarefa e do agente que a executa tem sido muito til para identificar
gargalos de conhecimento em reas especficas. No incomum que isso mostre
que os resultados sejam diferentes do que era esperado na organizao. Tcnicas
como essas so relevantes ao reprojeto de processos do negcio e a
melhoramentos do trabalho intensivo em conhecimento. CommonKADS fornece
uma transio gradual entre a anlise do negcio e da informao, o que chave,
tambm, para melhor compreender a integrao da Tecnologia da Informao na
organizao.
1
Existem diversas definies de framework, mas em linhas gerais pode ser definido como um conjunto de especificaes
que serve de base para a construo de aplicaes (Zamai 2005, apud Cavaness, 2003)
12
1.2 Objetivos
2
UML: Unified Modeling Language (Booch et al., 2000)
14
A modesta contribuio deste trabalho pode ser o primeiro passo para que ocorram
outras iniciativas que fortaleam o crescimento desta metodologia da Engenharia do
Conhecimento.
15
2 A Metodologia CommonKADS
O KADS-II surgiu como sucessor ao projeto KADS (P1098) que terminou em 1989. Ele
foi adotado por muitas companhias e organizaes de pesquisa principalmente da Europa e
EUA. CommonKADS est fortemente posicionado em seu padro de desenvolvimento de
Sistemas Baseados em Conhecimento na Europa. A Figura 2, mostrada a seguir, resume a
evoluo do CommonKADS:
18
pela realizao dessas tarefas). Uma vez estabelecidos esses elementos, o engenheiro
deve formalizar os componentes que conceituam o projeto de engenharia do conhecimento
(i.e., o conhecimento e a comunicao entre os atores responsveis), para, finalmente,
estabelecer o tipo de projeto de conhecimento que realizar. Para tal, a metodologia
CommonKADS est composta pelos seguintes modelos:
Atravs da Figura 3 possvel perceber que cada um dos modelos est focado num
determinado aspecto do sistema e relacionam-se entre si.
21
A seguir apresentada tabela MO-1 segundo a estrutura proposta por Schreiber et al.,
2002:
23
A terceira parte do modelo organizacional (MO-3) realiza uma anlise dos processos
de negcios. Trata-se de um detalhamento dos processos levantados no MO-2 onde sero
apresentadas quais so as tarefas que compem cada processo.
Neste momento, cada tarefa ser avaliada, e devero estar explcitos os agentes que
executam cada tarefa, qual o tipo de conhecimento que utilizado, se este conhecimento
intensivo e qual significncia desta tarefa dentro do domnio do problema.
25
A maneira mais fcil de estruturar a anlise feita segundo o MO-3 atravs de uma
tabela, conforme a estrutura mostrada na tabela 3:
MODELO DA
Desdobramento de processos Tabela MO-3
ORGANIZAO
EXECUTADA CONHECIMENTO
N TAREFA ONDE? INTENSIVO? SIGNIFICNCIA?
POR: UTILIZADO.
Tabela 3: MO-3 Descrio dos processos em termos de que tarefas o compem. (Fonte: SCHREIBER et al.,
2002)
Neste momento, ser descrito apenas quem possui o conhecimento, onde ele
utilizado, se sua utilizao ocorre de forma correta, no lugar correto e no tempo e qualidade
corretos. Esta pequena descrio permitir olhar de forma crtica o conhecimento da
organizao e avali-lo de forma a obter a melhor soluo para os problemas levantados.
26
Nome do Agente que Algum lugar (Sim ou no; (Sim ou no; (Sim ou no; (Sim ou no;
conhecimento possui o na estrutura comentrios) comentrios) comentrios) comentrios)
(conforme MO- conhecimento da
3) (conforme organizao
MO-3) (veja MO-2)
Tabela 5: MO-5 Checklist para o documento de deciso de viabilidade. (Fonte: (SCHREIBER et al., 2002))
Segundo Schreiber et al., 2002, uma tarefa pode ser definida como um conjunto de
atividades que agregam valor organizao e que manipulam entradas e sadas de forma
estruturada e controlada; ela consome recursos; prov conhecimentos e competncias;
est encarregada de fornecer critrios de qualidade e performance e executada por
agentes.
O detalhamento de cada tarefa pode ser obtido aplicando os dois modelos de tarefa
que ajudaro no refinamento e na definio do conhecimento envolvido na execuo de
cada tarefa.
OBJETIVOS E VALORES Descreve o objetivo da tarefa e o valor que sua execuo adiciona ao
processo ao qual a tarefa faz parte.
Tarefas de entrada: tarefas entregando entradas para esta tarefa.
DEPENDNCIA E FLUXO Tarefas de sada: tarefas que usam alguma(s) sada(s) desta tarefa.
Pode-se usar um diagrama de fluxo de dados ou um diagrama de atividade
para fazer esta descrio.
Objetos de entrada: os objetos, incluindo itens de informao e
conhecimento, que so entradas para tarefas.
Objetos de sada: os objetos, incluindo itens de informao e
conhecimento, que so entregues pelas tarefas como sadas.
OBJETOS MANIPULADOS
Objetos internos: objetos importantes, incluindo itens de informao e
conhecimento, que so usados internamente numa tarefa mas no so
entradas ou sadas para outras tarefas.
Pode-se incluir um diagrama de classes para descrever os objetos de
informao que so manipulados pela tarefa.
Descrever freqncia e durao de cada tarefa.
Descrever o controle do relacionamento com outras tarefas. Para isso
pode-se usar um diagrama de estados ou de atividades.
Descrever regras de controle:
TEMPO E CONTROLE 1. pr-condies que precisam ser atendidas antes que a tarefa seja
executada
2. ps-condies que precisam ser atendidas como resultado da
execuo da tarefa.
Tabela 6: MT-1 Refinamento das tarefas do processo alvo da soluo. (Fonte: (SCHREIBER et al., 2002))
30
Limitaes na forma
Tabela 7: MT-2 Especificao do Conhecimento disponibilizado para a tarefa, e possveis gargalos e reas
para melhoramento.(Fonte: (SCHREIBER et al., 2002))
Quais as medidas devem ser tomadas com relao a alguma tarefa especifica e
quais os trabalhadores que diretamente ligados a ela? Em particular, quais
melhorias so possveis com relao ao uso e disponibilidade de
conhecimento?
A tabela 9 apresenta a estrutura do checklist proposto por Schreiber et al., 2002, para
a unificao dos modelos da organizao, tarefa e agentes.
Modelos da
Checklist para o Documento de deciso de impactos e melhorias.
Organizao,
Tabela OTA-1
Tarefa e Agentes
IMPACTOS EDescrever que impactos e mudanas a soluo de sistema de conhecimento
MUDANAS NAtraz com respeito a organizao, pela comparao das diferenas entre o
ORGANIZAO modelo da organizao (MO-2) na situao atual, e como ela ser vista no
futuro. Isso tem que ser feito para todos os componentes (que variam) de uma
maneira geral.
1. Estrutura
2. Processos
3. Recursos
4. Pessoas
5. Conhecimento
6. Cultura e poder
IMPACTOS E Descrever que impactos e mudanas soluo de sistema de conhecimento
MUDANAS EM trs a respeito de agentes e tarefas individuais, pela comparao das
TAREFAS/AGENTES diferenas entre os modelos de tarefas e agentes das tabelas, na situao
ESPECFICOS. atual, e como elas sero no futuro. importante ver no somente o grupo de
membros diretamente envolvidos na tarefa mas tambm outros atores e
patrocinadores (tomadores de decises, usurios e clientes).
1. Mudanas no layout da tarefa (fluxo, dependncias, objetos
manipulados, tempo e controle)
2. Mudanas em recursos necessrios.
3. Critrios de performance e qualidade
4. Mudanas em grupos de funcionrios e agentes envolvidos.
5. Mudanas de forma individual em posies, responsabilidades,
autoridade, restries na execuo de tarefas.
6. Mudanas necessrias em conhecimentos e competncias.
7. Mudanas na comunicao.
ATITUDE E Considerar como os atores e patrocinadores(de forma individual) envolvidos
COMPROMETIMENTO aceitaro as mudanas sugeridas, e se eles sero uma base para finalizar
com sucesso estas mudanas.
AES PROPOSTAS Esta parte do documento de deciso de impactos e melhorias que est
diretamente sujeito ao comprometimento gerencial e tomada de deciso. Isto
pesa e integra os prximos resultados de anlises at os passos concretos
recomendados por ao:
1. Melhorias: Quais so as mudanas recomendadas, com respeito
organizao, tarefas individuais, grupos de membros e sistemas?
2. Medidas de acompanhamento: Quais medidas de suporte podem ser
utilizadas para facilitar estas mudanas (exemplo: treinamento)
3. Qual ao de promoo do projeto recomendada com respeito a
empregar a soluo de sistema de conhecimento?
4. Resultados esperados, custos e benefcios: reconsiderar itens do
documento de deciso de viabilidade antecipado.
5. Se circunstncias dentro ou fora da organizao mudarem, sob quais
condies a soluo saber reconsiderar as decises propostas?
Tabela 9: MT-2 Checklist para o documento de deciso de impactos e melhorias.(Fonte: (SCHREIBER et al.,
2002))
34
AGENTES ENVOLVIDOS Indica quais sero os agentes que iro enviar e receber o objeto
de informao.
3
CML - Knowledge Modelling Language
37
ESPECIFICAO DAS INFORMAES Transaes podem ter uma estrutura interna, em que ela
TRANSFERIDAS consiste de vrias mensagens de tipos diferentes, e/ou carregam
objetos de informao como suporte adicional, assim como
explanaes ou itens de ajuda. Isto ser detalhado na tabela CM-
2. At este ponto, somente uma referncia bsica precisa ser
dada para depois fazer a especificao das informaes
transferidas.
Tabela 10: MC-1 Tabela para Especificao das transaes feitas no dialogo entre dois agentes no Modelo
de Comunicao (Fonte: (SCHREIBER et al., 2002)).
a mensagem.
CONTROLE SOBRE AS MENSAGENS Dar, se necessrio, uma especificao de controle sobre as
mensagens dentro da transao. Isto pode ser feito em formato
de pseudo-cdigo ou num diagrama de estados, parecido com
como o controle sobre as transaes dentro do plano de
comunicao especificado.
Tabela 11: Tabela 9: MT-2 Tabela para a especificao de mensagens e itens de informao que fazem
parte de uma transao do Modelo de Comunicao. (Fonte: (SCHREIBER et al., 2002))
O CommonKADS Editor foi criado no ano de 2003 e tem por objetivo principal o
suporte ao armazenamento das informaes de projetos de Engenharia e Gesto do
Conhecimento com o uso da metodologia CommonKADS.
4
Para referncia sobre download do CommonKADS Editor consulte as referncias bibliogrficas deste trabalho.
39
O fato de o CommonKADS Editor tratar cada projeto, nele criado, de forma isolada,
armazenando-o num arquivo (de extenso .kad), ao invs de um banco de dados nico,
40
3 Sistema Proposto
3.1 Introduo
Este captulo apresentar a ferramenta proposta neste trabalho mostrando seus casos
de uso e sua estrutura.
Diante destes problemas, faz-se necessria uma ferramenta que possua a capacidade
de armazenar as informaes coletadas, durante a aplicao do CommonKADS, de forma a
poder recuper-las e analis-las por vrios prismas, a fim de obter-se maior agilidade na
elaborao dos documentos e definio de solues que possam ser viveis e, cujo
impacto, possa ser previsto de forma completa.
5) Atributos do Sistema:
Dessa forma, em todos os diagramas em que haja iterao do usurio com o sistema,
ele ser representado da seguinte forma:
ud Diagrama de Casos de Uso
Usurio
Visando agrupar os casos de uso de maneira lgica, foram definidas reas de acesso
do usurio ao sistema. Os casos de uso contidos em cada rea correspondero s
atividades executadas em cada um dos modelos do CommonKADS,
Areas do Sistema
+ Usurio
+ Abrir Projeto
A seguir sero descritos cada um dos casos de uso essenciais do sistema pertencente
a cada uma das reas definidas acima.
48
Breve Descrio: O usurio ao abrir o sistema dever abrir um projeto no qual trabalhar
adicionando as informaes da anlise.
od Modelo da Organizao
Cadastrar
Organizacao
Cadastrar
Aspectos
Variv eis da
Organizao
Usurio Cadastrar
desdobramento de
processos
Cadastrar
conhecimentos
utilizados
Cadastrar de
Documento de
Deciso de
Viabilidade
Consideraes: A quinta tabela (MO-5) trata-se de um checklist que pode ser definido de
forma que o usurio possa responder perguntas que componham cada
parte do documento de viabilidade.
55
od Modelo da Tarefa
Cadastrar Selecionar
Anlises de Processo
include
Tarefas
include
Usurio
Selecionar
Agentes
include
Cadastrar Itens de
Conhecimento
include
Selecionar Tarefas
od Modelo de Agentes
Usurio
Cadastrar
Documento de
Deciso de
Impactos e
Melhorias
od Modelo de Conhecimento
Cadastrar
Conhecimento de
Dominio
Cadastrar
Conhecimento de
Usurio Inferencia
Cadastrar
Conhecimento de
Tarefa
od Modelo de Comunicao
include
Cadastrar
Transacao
Selecionar
Agentes
Usurio
Cadastrar
mensagem include
Breve Descrio: Cadastro das mensagens e itens de informao que compem uma
transao. Corresponde a tabela 2 do Modelo de Comunicao (MC-2).
Areas do Sistema
+ Usurio
+ Abrir Projeto
Modelo da Organizao
+ Usurio Modelo da Tarefa
+ Cadastrar Aspectos Variveis da Organizao + Usurio
+ Cadastrar conhecimentos utilizados + Cadastrar Anlises de T arefas
+ Cadastrar de Documento de Deciso de Viabilidade + Cadastrar Itens de Conhecimento
+ Cadastrar desdobramento de processos + Selecionar Agentes
+ Cadastrar Organizacao + Selecionar Processo
+ Selecionar Organizacao + Selecionar T arefas
Modelo de Agentes
+ Usurio
+ Cadastrar Agente
+ Cadastrar Documento de Deciso de Impactos e Melhorias
+ Selecionar T arefa
Modelo de Conhecimento
Modelo de Comunicao
+ Usurio
+ Usurio
+ Cadastrar Conhecimento de Dominio
+ Cadastrar mensagem
+ Cadastrar Conhecimento de Inferencia
+ Cadastrar T ransacao
+ Cadastrar Conhecimento de T arefa
+ Selecionar Agentes
Atravs da descrio feita nos casos de uso e das informaes contidas nas tabelas
dos modelos do CommonKADS foi possvel definir o Modelo Conceitual do domnio do
problema.
cd Modelo Conceituall
Solucao Pessoa
Transacao Mensagem
compem
0..* 0..*
1 1 Agente
Problema Organizacao
Possui
0..* 1
1..* 1
1 1 AgenteTarefa
possui
utiliza possui
0..*
0..*
0..* 1..*
Conhecimento
Recurso Tarefa
Processo
Compoem
1..* 1..*
1 1..*
TarefaConhecimento
Problemas
Organizacoes idProblema
ItensInformacao
idOrganizacao idOrganizacao (FK)
idItem
Agentes idProjeto (FK) Descricao
idTransacao (FK) idAgente nome
idAgenteEnvia (FK) estrutura
idAgenteRecebe (FK) Nome
Oportunidades
itensInformacao Humano
missao
mensagem Organizacao
Visao
controle Competencias
Objetivos
Responsabilidades
FatoresExternos
Restricoes
Estrategias
AgenteTarefa Valores
ArquivoEstrutura
Pessoas
idAgente (FK) Conhecimento
idTarefa (FK) CulturaPoder
Conhecimentos
idConhecimento
idAgente (FK)
Descricao
Tarefas
idTarefa
idProcesso (FK) TarefaConhecimento Processos
Nome
idProcesso
Objetivos
Fluxo idTarefa (FK) Nome
Objetos idConhecimento (FK) idOrganizacao (FK)
TempoControle
Recursos
Qualidade
Dessa forma, em cada ciclo novas observaes e detalhes do sistema foram surgindo
e os modelos e diagramas foram sendo adequados.
- Interface Swing;
O projeto proposto neste trabalho seguiu a arquitetura de camadas MVC (Model View
Control), na qual a aplicao estruturada em trs camandas diferentes:
Figura 16: Detalhamento das guias laterais para acesso aos modelos
A seguir sero apresentados os detalhes de cada uma das guias dos modelos. Para
saber mais sobre cada modelo do CommonKADS consulte o captulo 2.1 deste trabalho.
73
A terceira guia permite o registro das informaes obtidas com a aplicao da terceira
tabela do Modelo da Organizao. Nela possvel registrar o desdobramento dos
processos em tarefas, informando se a tarefa de conhecimento intensivo e qual o seu
grau de significncia. Nesta etapa, os processos que foram cadastrados anteriormente
estaro disponveis para seleo.
Atravs do boto Incluir Tarefa o usurio pode adicionar quantas tarefas forem
necessrias para fazer o desdobramento do processo que for selecionado. Neste momento
tambm ser possvel relacionar quais so os conhecimentos utilizados na execuo da
tarefa, para isso basta clicar no boto Adicionar Conhecimento.
Viabilidade de Negcios:
Viabilidade Tcnica:
Viabilidade de Projeto:
Aes Propostas:
A primeira guia permite o registro das informaes obtidas com a aplicao da tabela
MT-1 do Modelo da Tarefa. Neste momento as tarefas cadastradas anteriormente podero
ser acessadas para que seja realizado seu detalhamento.
Atravs do boto Incluir Tarefa o usurio poder cadastrar uma tarefa que ainda no
est cadastrada no sistema, bem como, atravs do boto Incluir Processo, cadastrar e
relacionar um novo processo tarefa selecionada no momento.
A segunda guia permite o registro das informaes obtidas com a aplicao da tabela
MT-2 do Modelo da Tarefa. Neste momento o usurio poder detalhar os itens de
conhecimento que esto relacionados com a tarefa.
i. Agentes (MA-1)
usurio possa trabalhar com textos longos. Cada uma dessas guias traz as explicaes e
questionamentos apresentados por Schreiber et. al.,2002, na tabela OTA-1.
Figura 28: Guia "Impactos e Mudanas" do Documento para deciso de impactos e melhorias (OTA-1)
83
Figura 29: Guia "Impactos e Mudanas em Tarefas/ Agentes Especficos do Documento para deciso de
impactos e melhorias (OTA-1)
Atitude e Comprometimento:
Figura 30: Guia "Atitude e Comprometimento do Documento para deciso de impactos e melhorias (OTA-1).
84
Aes Propostas:
Figura 31: Guia Aes Propostas do Documento para deciso de impactos e melhorias (OTA-1).
4 TESTES
4.1 Introduo
Para que o teste do sistema proposto neste trabalho tivesse efetividade, foram
coletados alguns estudos de casos contidos na literatura e as informaes foram
cadastradas no sistema. A seguir so apresentados dois estudos de caso que foram
includos no sistema de forma a mostrar sua efetividade na documentao dos modelos do
CommonKADS.
O primeiro teste realizado no sistema foi feito com um estudo de caso apresentado por
Schreiber et. al., 2002, sobre o uso do CommonKADS para verificar a viabilidade de se
implementar a Gesto do Conhecimento nos negcios de sorvete da empresa Unilever,
com relao ao desenvolvimento de produtos.
Este estudo de caso foi importante no teste do sistema, pois serviu como primeiro
validador das interfaces e recursos disponveis no sistema. O fato do estudo de caso
apresentar um nmero considervel de tarefas dentro processo de desenvolvimento de
produtos, contribuiu para verificar a efetividade do sistema na documentao de
informaes. Infelizmente o estudo de casos no foi apresentado na integra, no permitindo
que todas as tarefas de conhecimento intensivo fossem detalhadas e registradas no
sistema.
O segundo teste realizado no sistema permitiu verificar com maior completeza qual
realmente foi a adequao do sistema aos casos prticos de aplicao da metodologia
CommonKADS.
88
O segundo e mais completo teste do sistema foi realizado atravs do estudo de caso
Housing Application apresentado por Schreiber et. al., 2002. Trata-se da anlise de um
problema cujo domnio a alocao de casas de aluguel para pessoas que necessitam de
uma residncia. Aps uma avaliao das pessoas inscritas o governo cede as casas para
aqueles que melhor se enquadram no perfil de quem realmente precisa do benefcio.
O registro das informaes no sistema deu-se de forma natural, sendo que em alguns
casos, imagens foram substitudas por descries textuais, como foi o caso de uma imagem
que fazia a representao dos processos da organizao. A figura a seguir mostra a tabela
MO-1 registrada no Sistema:
89
Com a aplicao dos testes no sistema foi possvel constatar que existe a efetividade
do registro das informaes obtidas atravs da aplicao da metodologia CommonKADS.
Contudo, pode-se perceber a necessidade de ter-se campos adicionais para registrar
comentrios sobre informaes registradas nos campos tidos como padro de cada
modelo. Outro recurso necessrio que foi verificado foi a possibilidade de se anexar
documentos externos, como planilhas, textos e imagens.
Certamente, atravs dos testes realizados pode-se perceber a facilidade que esta
ferramenta pode proporcionar para o Engenheiro do Conhecimento no que diz respeito a
registrar e recuperar as informaes da anlise. De forma geral, a fase de teste foi bem
sucedida podendo-se considerar o sistema apto a registrar as informaes dos modelos do
CommonKADS.
93
O objetivo deste trabalho foi criar uma ferramenta capaz de dirimir ao mximo o
trabalho do Engenheiro do Conhecimento na documentao obtida com a anlise. Atravs
do estudo das caractersticas da metodologia CommonKADS e dos estudos de caso
disponveis na literatura proposta por Schreiber et al. 2002, foi possvel fazer a
especificao do projeto em UML definindo cada elemento informacional existente e os
casos de uso envolvidos na tarefa de documentao das informaes.
Certamente muitas melhorias podem ser feitas na ferramenta concebida a partir deste
trabalho, entre estas melhorias possvel destacar:
A modesta contribuio deste trabalho pode ser considerada mais um passo para que
a Engenharia e Gesto do Conhecimento tornem-se mais difundidas dentro do meio
acadmico e entre os profissionais de Tecnologias de Informao.
95
6 Referncias Bibliogrficas
LARMAN, Craig. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and
Design and the Unified Process. Prentice Hall PTR. 2002
SCHREIBER, G.; Akkermans, H.; Anjewierden, A.; Hoog, R.; Shadbolt, N.; de Velde, W. V.; and
Wielinga, B.. Knowledge Engineering and Management: the CommonKADS Methodology. MIT
Press. Cambridge. Massachussets. 2002
96
ANEXOS
ANEXO 1 Artigo
98
a possibilidade de se anexar documentos externos, como forma de testar sua efetividade e possibilitar
como planilhas, textos e imagens. possveis melhorias.
Certamente, atravs dos testes realizados pode-se Os testes aplicados mostraram que o sistema
perceber a facilidade que esta ferramenta pode proporciona ao Engenheiro do Conhecimento grande
proporcionar para o Engenheiro do Conhecimento no mobilidade tanto no registro de informaes, onde
que diz respeito a registrar e recuperar as informaes possvel reaproveitar informaes j cadastradas em
da anlise. De forma geral, a fase de teste foi bem outros modelos, como para recuperar os projetos
sucedida podendo-se considerar o sistema apto a cadastrados de maneira rpida e simples, permitindo ao
registrar as informaes dos modelos do Engenheiro visualizar suas experincias em projetos
CommonKADS. anteriores.
4. Concluses
5. Referncias
A Metodologia CommonKADS mostra-se
extremamente eficiente em projetos de Engenharia e ALKAIM, Joo L. Metodologia para Incorporar
Gesto do Conhecimento. Sua utilizao e Conhecimento Intenso s Tarefas de Manuteno
disseminao vem crescendo devido a grande Centrada na Confiabilidade Aplicada em Ativos de
popularizao da Gesto do Conhecimento em Sistemas Eltricos. 2003. Tese (Doutorado em
ambientes corporativos. Engenharia de Produo) Programa de Ps-
A aplicao da metodologia CommonKADS em Graduao em Engenharia de Produo, UFSC.
projetos de Engenharia e Gesto do Conhecimento
ainda trabalhosa pela falta de recursos que facilitem o FREITAS JNIOR, Olival de Gusmo. Um Modelo
registro e gerenciamento das informaes coletadas de Sistema de Gesto do Conhecimento para
durante a fase de anlise. Grupos de Pesquisa e Desenvolvimento.
O objetivo do trabalho descrito neste artigo foi criar Florianpolis, 2003. 310 f. Tese (Doutorado em
uma ferramenta capaz de dirimir ao mximo o trabalho Engenharia de Produo) - Programa de Ps-
do Engenheiro do Conhecimento na documentao Graduao em Engenharia de Produo, UFSC,
obtida com a anlise. Atravs do estudo das Florianpolis.
caractersticas da metodologia CommonKADS e dos
estudos de caso disponveis na literatura proposta por PACHECO, R. C. e SANTO, Neri dos. Introduo
Schreiber et al. 2002, foi possvel fazer a especificao Engenharia e Gesto do Conhecimento. 2004. Curso
do projeto em UML definindo cada elemento de Ps-Graduao em Engenharia e Gesto do
informacional existente e os casos de uso envolvidos na Conhecimento, UFSC
tarefa de documentao das informaes.
O desenvolvimento do sistema deu-se atravs de SCHREIBER, G.; Akkermans, H.; Anjewierden, A.;
uma srie de ciclos onde, ao final de cada ciclo, foram Hoog, R.; Shadbolt, N.; de Velde, W. V.; and Wielinga,
aplicadas as informaes coletadas nos estudos de caso B.. Knowledge Engineering and Management: the
CommonKADS Methodology. MIT Press.
Cambridge. Massachussets. 2002
102
- Camada de Interface
/*
* Main.java
*
* Created on 6 de Setembro de 2005, 21:06
*/
package commonkads;
import commonkads.interfaces.Principal;
import commonkads.logica.fachada.FabricaDeFachadaLogica;
import commonkads.logica.fachada.FachadaLogica;
import javax.swing.UIManager;
/**
*
* @author JR
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}catch(Exception e){
System.out.println(e.getMessage());
}
FachadaLogica fachada = FabricaDeFachadaLogica.crie();
new Principal(fachada).setVisible(true);
}
});
}
104
/*
* Projeto.java
*
* Created on 18 de Outubro de 2005, 03:13
*/
package commonkads.interfaces;
import commonkads.logica.fachada.FachadaLogica;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
*
* @author JR
*/
public class Projeto extends javax.swing.JDialog{
FachadaLogica fachada;
/** Creates new form Projeto */
public Projeto() {
initComponents();
this.setSize(450, 200);
this.setAlwaysOnTop(true);
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Sistema de Documenta\u00e7\u00e3o CommonKADS");
setAlwaysOnTop(true);
setLocationByPlatform(true);
getContentPane().add(cmbProjetos);
cmbProjetos.setBounds(10, 30, 370, 22);
105
jLabel1.setText("Selecione o Projeto");
getContentPane().add(jLabel1);
jLabel1.setBounds(10, 10, 370, 14);
btnAbrir.setText("Abrir Projeto");
btnAbrir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAbrirActionPerformed(evt);
}
});
getContentPane().add(btnAbrir);
btnAbrir.setBounds(20, 110, 170, 23);
btnNovo.setText("Novo Projeto");
getContentPane().add(btnNovo);
btnNovo.setBounds(230, 110, 190, 23);
pack();
}
System.out.println(((commonkads.logica.modelo.Projeto)projetos.get(index)).getNome());
fachada.setIdProjetoAtual(((commonkads.logica.modelo.Projeto)projetos.get(index)).getIdProjeto());
//setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setVisible(false);
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Projeto().setVisible(true);
}
});
}
/*
* Principal.java
*
* Created on 6 de Setembro de 2005, 21:09
*/
package commonkads.interfaces;
import commonkads.logica.fachada.FachadaLogica;
import commonkads.logica.modelo.Conhecimento;
import commonkads.logica.modelo.Organizacao;
import commonkads.logica.modelo.Processo;
import commonkads.logica.modelo.Recurso;
import commonkads.logica.modelo.Tarefa;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.awt.FileDialog;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListModel;
/**
*
* @author JR
*/
public class Principal extends javax.swing.JFrame {
FachadaLogica fachada;
public Principal() {
initComponents();
this.setExtendedState(this.MAXIMIZED_BOTH);
}
107
initComponents();
this.setExtendedState(this.MAXIMIZED_BOTH);
this.fachada = fachada;
new commonkads.interfaces.Projeto(fachada,this).setVisible(true);
carregaDadosProjeto();
getContentPane().add(jPanel1, java.awt.BorderLayout.WEST);
jTabbedPane2.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT);
jPanel3.setLayout(null);
jPanel11.setLayout(null);
jScrollPane8.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEV
ER);
jScrollPane8.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane8.setViewportView(edtProblemas);
jPanel11.add(jScrollPane8);
jScrollPane8.setBounds(10, 30, 640, 130);
jPanel3.add(jPanel11);
jPanel11.setBounds(20, 310, 670, 180);
btnSalvar.setText("Salvar");
btnSalvar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSalvarActionPerformed(evt);
}
});
jPanel3.add(btnSalvar);
btnSalvar.setBounds(700, 20, 120, 23);
jPanel14.setLayout(null);
jPanel14.add(jScrollPane7);
jScrollPane7.setBounds(80, 200, 580, 90);
jScrollPane6.setViewportView(edtObjetivos);
jPanel14.add(jScrollPane6);
114
jScrollPane5.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEV
ER);
jScrollPane5.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane5.setViewportView(edtVisao);
jPanel14.add(jScrollPane5);
jScrollPane5.setBounds(80, 70, 580, 40);
jScrollPane4.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEV
ER);
jScrollPane4.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane4.setViewportView(edtMissao);
jPanel14.add(jScrollPane4);
jScrollPane4.setBounds(82, 22, 580, 40);
lblMissao3.setText("Externos");
jPanel14.add(lblMissao3);
lblMissao3.setBounds(10, 220, 80, 20);
lblMissao1.setText("Fatores");
jPanel14.add(lblMissao1);
lblMissao1.setBounds(10, 200, 50, 20);
lblObjetivos.setText("Objetivos");
jPanel14.add(lblObjetivos);
lblObjetivos.setBounds(10, 120, 70, 20);
lblVisao.setText("Vis\u00e3o");
jPanel14.add(lblVisao);
lblVisao.setBounds(10, 70, 50, 20);
lblMissao.setText("Miss\u00e3o");
jPanel14.add(lblMissao);
lblMissao.setBounds(10, 20, 50, 20);
jPanel3.add(jPanel14);
jPanel14.setBounds(20, 8, 670, 300);
jPanel4.setLayout(null);
panelEstrutura.setLayout(null);
panelEstrutura.setBorder(new javax.swing.border.TitledBorder("Estrutura"));
btnVisualizaEstrutura.setActionCommand("Adicionar Processo");
btnVisualizaEstrutura.setLabel("Visualizar");
btnVisualizaEstrutura.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
115
btnVisualizaEstruturaActionPerformed(evt);
}
});
panelEstrutura.add(btnVisualizaEstrutura);
btnVisualizaEstrutura.setBounds(280, 70, 100, 23);
btnAdicionarEstrutura.setActionCommand("Adicionar Processo");
btnAdicionarEstrutura.setLabel("Adicionar");
btnAdicionarEstrutura.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAdicionarEstruturaActionPerformed(evt);
}
});
panelEstrutura.add(btnAdicionarEstrutura);
btnAdicionarEstrutura.setBounds(280, 40, 100, 23);
panelEstrutura.add(txtEstrutura);
txtEstrutura.setBounds(10, 60, 240, 19);
jPanel4.add(panelEstrutura);
panelEstrutura.setBounds(0, 0, 390, 122);
panelProcessos.setLayout(null);
panelProcessos.setBorder(new javax.swing.border.TitledBorder("Processos"));
btnAdicionarProcesso.setActionCommand("Adicionar Processo");
btnAdicionarProcesso.setLabel("Adicionar");
btnAdicionarProcesso.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAdicionarProcessoActionPerformed(evt);
}
});
panelProcessos.add(btnAdicionarProcesso);
btnAdicionarProcesso.setBounds(320, 20, 100, 23);
panelProcessos.add(jScrollPane2);
jScrollPane2.setBounds(30, 20, 280, 90);
btnAdicionarProcesso1.setActionCommand("Adicionar Processo");
btnAdicionarProcesso1.setLabel("Visualizar");
panelProcessos.add(btnAdicionarProcesso1);
btnAdicionarProcesso1.setBounds(320, 50, 100, 23);
jPanel4.add(panelProcessos);
116
panelPessoas.setLayout(new java.awt.BorderLayout());
panelPessoas.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel4.add(panelPessoas);
panelPessoas.setBounds(0, 130, 390, 122);
panelRecursos.setLayout(null);
panelRecursos.setBorder(new javax.swing.border.TitledBorder("Recursos"));
jScrollPane3.setViewportView(listaRecursos);
panelRecursos.add(jScrollPane3);
jScrollPane3.setBounds(30, 20, 280, 90);
btnAdicionarRecurso.setLabel("Adicionar");
btnAdicionarRecurso.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAdicionarRecursoActionPerformed(evt);
}
});
panelRecursos.add(btnAdicionarRecurso);
btnAdicionarRecurso.setBounds(320, 20, 100, 23);
jPanel4.add(panelRecursos);
panelRecursos.setBounds(400, 130, 430, 122);
panelPessoas1.setLayout(new java.awt.BorderLayout());
panelPessoas1.add(jScrollPane9, java.awt.BorderLayout.CENTER);
jPanel4.add(panelPessoas1);
panelPessoas1.setBounds(0, 390, 830, 200);
panelRecursos1.setLayout(null);
panelRecursos1.setBorder(new javax.swing.border.TitledBorder("Conhecimento"));
jScrollPane10.setViewportView(listaConhecimentosMO2);
panelRecursos1.add(jScrollPane10);
jScrollPane10.setBounds(30, 20, 610, 90);
btnAdicionarConhecimento.setLabel("Adicionar");
btnAdicionarConhecimento.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAdicionarConhecimentoActionPerformed(evt);
}
117
});
panelRecursos1.add(btnAdicionarConhecimento);
btnAdicionarConhecimento.setBounds(650, 20, 100, 23);
jPanel4.add(panelRecursos1);
panelRecursos1.setBounds(0, 260, 830, 122);
jPanel5.setLayout(null);
jLabel3.setText("Processo");
jPanel5.add(jLabel3);
jLabel3.setBounds(10, 20, 70, 15);
cmbProcessosMO3.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmbProcessosMO3ItemStateChanged(evt);
}
});
jPanel5.add(cmbProcessosMO3);
cmbProcessosMO3.setBounds(70, 10, 280, 22);
panelRecursos2.setLayout(null);
jTextField1.setEditable(false);
jTextField1.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 11));
panelRecursos2.add(jTextField1);
jTextField1.setBounds(90, 29, 260, 20);
panelRecursos2.add(txtExecutadaPor);
txtExecutadaPor.setBounds(90, 70, 260, 19);
jLabel5.setText("Executada por");
panelRecursos2.add(jLabel5);
jLabel5.setBounds(10, 70, 100, 15);
panelRecursos2.add(txtLocal);
txtLocal.setBounds(90, 100, 260, 20);
jLabel6.setText("Local");
panelRecursos2.add(jLabel6);
jLabel6.setBounds(10, 100, 70, 15);
panelRecursos3.setLayout(null);
panelRecursos3.add(jScrollPane11);
jScrollPane11.setBounds(30, 20, 450, 90);
btnAdicionarConhecimentoMO3.setText("Adicionar Conhecimento");
panelRecursos3.add(btnAdicionarConhecimentoMO3);
btnAdicionarConhecimentoMO3.setBounds(490, 20, 210, 23);
panelRecursos2.add(panelRecursos3);
panelRecursos3.setBounds(10, 140, 710, 122);
panelRecursos2.add(spnGrauSignificancia);
spnGrauSignificancia.setBounds(520, 60, 40, 30);
jLabel7.setText("Grau de Signific\u00e2ncia");
panelRecursos2.add(jLabel7);
jLabel7.setBounds(370, 70, 140, 15);
jPanel5.add(panelRecursos2);
panelRecursos2.setBounds(10, 80, 780, 320);
btnAdicionarTarefaMO3.setText("Incluir Tarefa");
btnAdicionarTarefaMO3.setActionCommand("NovaTarefa");
btnAdicionarTarefaMO3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAdicionarTarefaMO3ActionPerformed(evt);
}
});
jPanel5.add(btnAdicionarTarefaMO3);
btnAdicionarTarefaMO3.setBounds(360, 40, 150, 23);
jLabel31.setText("Tarefa");
jPanel5.add(jLabel31);
jLabel31.setBounds(10, 50, 180, 15);
cmbTarefasMO4.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmbTarefasMO4ItemStateChanged(evt);
}
});
jPanel5.add(cmbTarefasMO4);
cmbTarefasMO4.setBounds(70, 40, 280, 22);
jPanel6.setLayout(null);
jLabel8.setText("Conhecimento");
jPanel6.add(jLabel8);
jLabel8.setBounds(10, 20, 110, 15);
119
jPanel6.add(jComboBox2);
jComboBox2.setBounds(120, 10, 250, 22);
btnAdicionarProcesso7.setText("Incluir Conhecimento");
btnAdicionarProcesso7.setActionCommand("NovaTarefa");
jPanel6.add(btnAdicionarProcesso7);
btnAdicionarProcesso7.setBounds(390, 10, 190, 23);
panelRecursos4.setLayout(null);
jLabel9.setText("Quem possui");
panelRecursos4.add(jLabel9);
jLabel9.setBounds(10, 30, 80, 15);
panelRecursos4.add(jTextField5);
jTextField5.setBounds(90, 70, 260, 19);
jLabel10.setText("Usado em");
panelRecursos4.add(jLabel10);
jLabel10.setBounds(10, 70, 100, 15);
panelRecursos5.setLayout(null);
panelRecursos5.setBorder(new javax.swing.border.TitledBorder("Coment\u00e1rios"));
jScrollPane12.setViewportView(jEditorPane3);
panelRecursos5.add(jScrollPane12);
jScrollPane12.setBounds(20, 30, 560, 80);
panelRecursos4.add(panelRecursos5);
panelRecursos5.setBounds(10, 190, 600, 122);
jPanel6.add(panelRecursos4);
panelRecursos4.setBounds(10, 50, 780, 360);
jPanel16.setLayout(new java.awt.BorderLayout());
jPanel17.setLayout(new java.awt.BorderLayout());
jScrollPane13.setViewportView(jEditorPane4);
jPanel17.add(jScrollPane13, java.awt.BorderLayout.CENTER);
jPanel17.add(jEditorPane5, java.awt.BorderLayout.NORTH);
jScrollPane14.setViewportView(jEditorPane6);
jPanel17.add(jScrollPane14, java.awt.BorderLayout.CENTER);
jPanel17.add(jEditorPane7, java.awt.BorderLayout.SOUTH);
jPanel18.setLayout(new java.awt.BorderLayout());
jScrollPane15.setViewportView(jEditorPane8);
jPanel18.add(jScrollPane15, java.awt.BorderLayout.CENTER);
jPanel18.add(jEditorPane9, java.awt.BorderLayout.NORTH);
jPanel19.setLayout(new java.awt.BorderLayout());
jScrollPane16.setViewportView(jEditorPane10);
jPanel19.add(jScrollPane16, java.awt.BorderLayout.CENTER);
jPanel19.add(jEditorPane11, java.awt.BorderLayout.NORTH);
jPanel20.setLayout(new java.awt.BorderLayout());
jScrollPane17.setViewportView(jEditorPane12);
jPanel20.add(jScrollPane17, java.awt.BorderLayout.CENTER);
jPanel20.add(jEditorPane13, java.awt.BorderLayout.NORTH);
jPanel16.add(jTabbedPane4, java.awt.BorderLayout.CENTER);
jPanel2.add(jTabbedPane2, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("ORGANIZA\u00c7\u00c3O", jPanel2);
121
jPanel7.setLayout(new java.awt.BorderLayout());
jPanel12.setLayout(null);
jLabel1.setText("Tarefa");
jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
jPanel12.add(jLabel1);
jLabel1.setBounds(5, 9, 70, 14);
jPanel12.add(cmbTarefa);
cmbTarefa.setBounds(70, 0, 260, 22);
jButton1.setText("Incluir Tarefa");
jPanel12.add(jButton1);
jButton1.setBounds(340, 0, 140, 23);
panelEstrutura1.setLayout(null);
panelEstrutura1.setBorder(new javax.swing.border.TitledBorder("Organiza\u00e7\u00e3o"));
jLabel2.setText("Processo");
panelEstrutura1.add(jLabel2);
jLabel2.setBounds(14, 30, 80, 14);
panelEstrutura1.add(cmbProcesso);
cmbProcesso.setBounds(100, 30, 220, 22);
jButton2.setText("Incluir Processo");
panelEstrutura1.add(jButton2);
jButton2.setBounds(340, 30, 130, 23);
jScrollPane19.setViewportView(jEditorPane14);
panelEstrutura1.add(jScrollPane19);
jScrollPane19.setBounds(100, 60, 440, 50);
jLabel11.setText("Coment\u00e1rios");
panelEstrutura1.add(jLabel11);
jLabel11.setBounds(10, 70, 90, 14);
jPanel12.add(panelEstrutura1);
panelEstrutura1.setBounds(0, 40, 790, 122);
panelEstrutura2.setLayout(null);
panelEstrutura2.add(jScrollPane20);
jScrollPane20.setBounds(10, 20, 360, 90);
jPanel12.add(panelEstrutura2);
panelEstrutura2.setBounds(0, 170, 430, 122);
panelEstrutura3.setLayout(null);
122
panelEstrutura3.add(jScrollPane21);
jScrollPane21.setBounds(10, 20, 360, 90);
jPanel12.add(panelEstrutura3);
panelEstrutura3.setBounds(430, 170, 430, 122);
panelEstrutura4.setLayout(null);
panelEstrutura4.add(jScrollPane22);
jScrollPane22.setBounds(10, 20, 360, 90);
jPanel12.add(panelEstrutura4);
panelEstrutura4.setBounds(0, 170, 430, 122);
panelEstrutura5.setLayout(null);
panelEstrutura5.add(jScrollPane24);
jScrollPane24.setBounds(10, 20, 360, 90);
jPanel12.add(panelEstrutura5);
panelEstrutura5.setBounds(430, 170, 430, 122);
panelEstrutura6.setLayout(null);
panelEstrutura6.add(jScrollPane23);
jScrollPane23.setBounds(10, 20, 360, 70);
jPanel12.add(panelEstrutura6);
panelEstrutura6.setBounds(0, 290, 430, 100);
panelEstrutura7.setLayout(null);
panelEstrutura7.add(jScrollPane26);
jScrollPane26.setBounds(10, 20, 360, 70);
jPanel12.add(panelEstrutura7);
panelEstrutura7.setBounds(430, 290, 430, 100);
panelRecursos7.setLayout(null);
panelRecursos7.setBorder(new javax.swing.border.TitledBorder("Agentes"));
123
jScrollPane25.setViewportView(listaRecursos4);
panelRecursos7.add(jScrollPane25);
jScrollPane25.setBounds(30, 20, 280, 80);
btnAdicionarRecurso4.setLabel("Adicionar");
panelRecursos7.add(btnAdicionarRecurso4);
btnAdicionarRecurso4.setBounds(320, 20, 100, 23);
jPanel12.add(panelRecursos7);
panelRecursos7.setBounds(0, 390, 430, 110);
panelEstrutura8.setLayout(null);
panelEstrutura8.add(jScrollPane27);
jScrollPane27.setBounds(10, 20, 360, 80);
jPanel12.add(panelEstrutura8);
panelEstrutura8.setBounds(430, 390, 430, 110);
panelEstrutura9.setLayout(null);
panelEstrutura9.setBorder(new javax.swing.border.TitledBorder("Recursos"));
jScrollPane28.setViewportView(jEditorPane19);
panelEstrutura9.add(jScrollPane28);
jScrollPane28.setBounds(10, 20, 360, 90);
jPanel12.add(panelEstrutura9);
panelEstrutura9.setBounds(0, 500, 430, 122);
panelEstrutura10.setLayout(null);
panelEstrutura10.add(jScrollPane30);
jScrollPane30.setBounds(10, 20, 360, 90);
jPanel12.add(panelEstrutura10);
panelEstrutura10.setBounds(430, 500, 430, 122);
jPanel13.setLayout(new java.awt.BorderLayout());
jPanel21.setLayout(null);
jPanel22.setLayout(null);
jPanel22.add(jComboBox3);
jComboBox3.setBounds(110, 20, 170, 22);
btnAdicionarProcesso9.setText("Incluir Conhecimento");
btnAdicionarProcesso9.setActionCommand("NovaTarefa");
jPanel22.add(btnAdicionarProcesso9);
btnAdicionarProcesso9.setBounds(330, 20, 180, 23);
jPanel22.add(jTextField6);
jTextField6.setBounds(110, 50, 260, 20);
jLabel13.setText("Possu\u00eddo por");
jPanel22.add(jLabel13);
jLabel13.setBounds(10, 50, 80, 15);
jPanel22.add(jTextField7);
jTextField7.setBounds(110, 80, 450, 19);
jLabel14.setText("Usado em");
jPanel22.add(jLabel14);
jLabel14.setBounds(10, 80, 100, 15);
jPanel22.add(jTextField8);
jTextField8.setBounds(110, 110, 450, 19);
jLabel15.setText("Dom\u00ednio");
jPanel22.add(jLabel15);
jLabel15.setBounds(10, 110, 100, 15);
jPanel21.add(jPanel22);
jPanel22.setBounds(10, 10, 860, 140);
jPanel21.add(jPanel23);
jPanel23.setBounds(130, 220, 10, 10);
jPanel21.add(jPanel24);
jPanel24.setBounds(390, 210, 10, 10);
jPanel25.setLayout(null);
jCheckBox7.setText("Emp\u00edrico, quantitativo");
125
jPanel27.add(jCheckBox7);
jCheckBox7.setBounds(10, 30, 210, 23);
jCheckBox9.setText("Altamente especializado");
jPanel27.add(jCheckBox9);
jCheckBox9.setBounds(10, 70, 210, 23);
jCheckBox10.setText("Baseado em experi\u00eancia");
jPanel27.add(jCheckBox10);
jCheckBox10.setBounds(10, 90, 210, 23);
jCheckBox11.setText("Baseado em a\u00e7\u00e3o");
jPanel27.add(jCheckBox11);
jCheckBox11.setBounds(10, 110, 210, 23);
jCheckBox12.setText("Incompleto");
jPanel27.add(jCheckBox12);
jCheckBox12.setBounds(10, 130, 210, 23);
jCheckBox14.setText("Muda rapidamente");
jPanel27.add(jCheckBox14);
jCheckBox14.setBounds(10, 170, 210, 23);
jCheckBox15.setText("Dif\u00edcil de verificar");
jPanel27.add(jCheckBox15);
jCheckBox15.setBounds(10, 190, 210, 23);
jPanel27.add(jPanel28);
jPanel28.setBounds(350, 40, 10, 10);
jPanel30.setLayout(null);
jPanel30.add(jCheckBox18);
jCheckBox18.setBounds(10, 30, 20, 21);
jPanel30.add(jCheckBox19);
jCheckBox19.setBounds(10, 50, 20, 21);
jPanel30.add(jCheckBox20);
jCheckBox20.setBounds(10, 70, 20, 21);
126
jPanel30.add(jCheckBox21);
jCheckBox21.setBounds(10, 90, 20, 21);
jPanel30.add(jCheckBox22);
jCheckBox22.setBounds(10, 110, 20, 21);
jPanel30.add(jCheckBox23);
jCheckBox23.setBounds(10, 130, 20, 21);
jPanel30.add(jCheckBox24);
jCheckBox24.setBounds(10, 150, 20, 21);
jPanel30.add(jCheckBox25);
jCheckBox25.setBounds(10, 170, 20, 21);
jPanel30.add(jCheckBox26);
jCheckBox26.setBounds(10, 190, 20, 21);
jPanel30.add(jCheckBox27);
jCheckBox27.setBounds(10, 210, 20, 21);
jPanel27.add(jPanel30);
jPanel30.setBounds(220, 0, 90, 240);
jPanel25.add(jPanel27);
jPanel27.setBounds(10, 50, 310, 240);
jLabel19.setText("Gargalo /");
jPanel25.add(jLabel19);
jLabel19.setBounds(240, 10, 80, 20);
jLabel20.setText("ser melhorado?");
jPanel25.add(jLabel20);
jLabel20.setBounds(230, 30, 100, 14);
jPanel21.add(jPanel25);
jPanel25.setBounds(10, 160, 340, 360);
jPanel26.setLayout(null);
jCheckBox29.setText("Papel");
jPanel29.add(jCheckBox29);
jCheckBox29.setBounds(10, 30, 210, 23);
jCheckBox30.setText("Eletr\u00f4nico");
jPanel29.add(jCheckBox30);
jCheckBox30.setBounds(10, 50, 210, 23);
127
jCheckBox32.setText("Outros");
jPanel29.add(jCheckBox32);
jCheckBox32.setBounds(10, 90, 210, 23);
jPanel32.setLayout(null);
jPanel32.add(jCheckBox40);
jCheckBox40.setBounds(10, 30, 20, 21);
jPanel32.add(jCheckBox41);
jCheckBox41.setBounds(10, 50, 20, 21);
jPanel32.add(jCheckBox42);
jCheckBox42.setBounds(10, 70, 20, 21);
jPanel32.add(jCheckBox43);
jCheckBox43.setBounds(10, 90, 20, 21);
jPanel29.add(jPanel32);
jPanel32.setBounds(220, 0, 90, 120);
jPanel26.add(jPanel29);
jPanel29.setBounds(10, 50, 310, 120);
jLabel21.setText("Gargalo /");
jPanel26.add(jLabel21);
jLabel21.setBounds(240, 10, 80, 20);
jLabel22.setText("ser melhorado?");
jPanel26.add(jLabel22);
jLabel22.setBounds(230, 30, 100, 14);
jPanel21.add(jPanel26);
jPanel26.setBounds(380, 160, 370, 180);
jPanel33.setLayout(null);
jCheckBox34.setText("Limita\u00e7\u00f5es no espa\u00e7o");
jPanel34.add(jCheckBox34);
jCheckBox34.setBounds(10, 30, 210, 23);
jCheckBox35.setText("Limita\u00e7\u00f5es no acesso");
jPanel34.add(jCheckBox35);
jCheckBox35.setBounds(10, 50, 210, 23);
jCheckBox36.setText("Limita\u00e7\u00f5es na qualidade");
jPanel34.add(jCheckBox36);
jCheckBox36.setBounds(10, 70, 210, 23);
jCheckBox37.setText("Limita\u00e7\u00f5es na forma");
jPanel34.add(jCheckBox37);
jCheckBox37.setBounds(10, 90, 210, 23);
jPanel34.add(jPanel35);
jPanel35.setBounds(350, 40, 10, 10);
jPanel36.setLayout(null);
jPanel36.add(jCheckBox45);
jCheckBox45.setBounds(10, 30, 20, 21);
jPanel36.add(jCheckBox46);
jCheckBox46.setBounds(10, 50, 20, 21);
jPanel36.add(jCheckBox47);
jCheckBox47.setBounds(10, 70, 20, 21);
jPanel36.add(jCheckBox48);
jCheckBox48.setBounds(10, 90, 20, 21);
jPanel34.add(jPanel36);
jPanel36.setBounds(220, 0, 90, 120);
jPanel33.add(jPanel34);
jPanel34.setBounds(10, 50, 310, 120);
jLabel23.setText("Gargalo /");
jPanel33.add(jLabel23);
jLabel23.setBounds(240, 10, 80, 20);
jLabel24.setText("ser melhorado?");
jPanel33.add(jLabel24);
jLabel24.setBounds(230, 30, 100, 14);
jPanel21.add(jPanel33);
jPanel33.setBounds(380, 340, 370, 180);
129
jPanel13.add(jPanel21, java.awt.BorderLayout.CENTER);
jPanel7.add(jTabbedPane3, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("TAREFA", jPanel7);
jPanel8.setLayout(new java.awt.BorderLayout());
jPanel37.setLayout(null);
jLabel16.setText("Agente");
jPanel37.add(jLabel16);
jLabel16.setBounds(10, 20, 70, 15);
jPanel37.add(jComboBox4);
jComboBox4.setBounds(70, 10, 170, 22);
btnAdicionarProcesso11.setText("Incluir Agente");
btnAdicionarProcesso11.setActionCommand("NovaTarefa");
jPanel37.add(btnAdicionarProcesso11);
btnAdicionarProcesso11.setBounds(250, 10, 150, 23);
jPanel39.setLayout(null);
jPanel39.setBorder(new javax.swing.border.TitledBorder("Organiza\u00e7\u00e3o"));
jScrollPane18.setViewportView(jTextPane1);
jPanel39.add(jScrollPane18);
jScrollPane18.setBounds(10, 20, 390, 90);
jPanel37.add(jPanel39);
jPanel39.setBounds(10, 50, 410, 120);
jPanel40.setLayout(null);
jPanel40.setBorder(new javax.swing.border.TitledBorder("Organiza\u00e7\u00e3o"));
jScrollPane29.setViewportView(jTextPane2);
jPanel40.add(jScrollPane29);
jScrollPane29.setBounds(10, 20, 390, 90);
jPanel37.add(jPanel40);
jPanel40.setBounds(10, 50, 410, 120);
jPanel41.setLayout(null);
jPanel41.add(jScrollPane31);
jScrollPane31.setBounds(10, 20, 390, 90);
jPanel37.add(jPanel41);
jPanel41.setBounds(10, 300, 410, 120);
130
jPanel42.setLayout(null);
jPanel42.add(jScrollPane32);
jScrollPane32.setBounds(10, 20, 390, 90);
jPanel37.add(jPanel42);
jPanel42.setBounds(420, 300, 410, 120);
panelRecursos6.setLayout(null);
panelRecursos6.add(jScrollPane33);
jScrollPane33.setBounds(30, 20, 280, 90);
btnAdicionarRecurso3.setLabel("Adicionar");
panelRecursos6.add(btnAdicionarRecurso3);
btnAdicionarRecurso3.setBounds(320, 20, 100, 23);
jPanel37.add(panelRecursos6);
panelRecursos6.setBounds(420, 50, 430, 122);
panelRecursos8.setLayout(null);
panelRecursos8.add(jScrollPane34);
jScrollPane34.setBounds(10, 20, 250, 90);
btnAdicionarRecurso5.setLabel("Adicionar");
panelRecursos8.add(btnAdicionarRecurso5);
btnAdicionarRecurso5.setBounds(280, 20, 100, 23);
jPanel37.add(panelRecursos8);
panelRecursos8.setBounds(10, 170, 410, 122);
panelRecursos9.setLayout(null);
panelRecursos9.add(jScrollPane35);
jScrollPane35.setBounds(30, 20, 280, 90);
btnAdicionarRecurso6.setLabel("Adicionar");
panelRecursos9.add(btnAdicionarRecurso6);
btnAdicionarRecurso6.setBounds(320, 20, 100, 23);
jPanel37.add(panelRecursos9);
panelRecursos9.setBounds(420, 170, 430, 122);
131
jPanel38.setLayout(new java.awt.BorderLayout());
jPanel43.setLayout(new java.awt.BorderLayout());
jPanel43.add(jTextPane6, java.awt.BorderLayout.CENTER);
jPanel44.setLayout(new java.awt.BorderLayout());
jScrollPane36.setViewportView(jTextPane5);
jPanel44.add(jScrollPane36, java.awt.BorderLayout.CENTER);
jPanel45.setLayout(new java.awt.BorderLayout());
jPanel45.add(jTextPane7, java.awt.BorderLayout.CENTER);
jPanel46.setLayout(new java.awt.BorderLayout());
jPanel46.add(jTextPane8, java.awt.BorderLayout.CENTER);
jPanel38.add(jTabbedPane6, java.awt.BorderLayout.CENTER);
jPanel8.add(jTabbedPane5, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("AGENTE", jPanel8);
jPanel9.setLayout(null);
jLabel17.setText("Conhecimento");
jLabel17.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
jPanel9.add(jLabel17);
jLabel17.setBounds(20, 30, 110, 14);
jPanel9.add(cmbTarefa1);
cmbTarefa1.setBounds(140, 30, 260, 22);
jButton3.setText("Incluir Conhecimento");
jPanel9.add(jButton3);
jButton3.setBounds(410, 30, 230, 23);
jPanel47.setLayout(null);
jScrollPane37.setViewportView(jTextPane9);
jPanel47.add(jScrollPane37);
jScrollPane37.setBounds(10, 20, 780, 490);
jPanel9.add(jPanel47);
jPanel47.setBounds(20, 60, 810, 530);
jTabbedPane1.addTab("CONHECIMENTO", jPanel9);
jPanel10.setLayout(new java.awt.BorderLayout());
jPanel48.setLayout(null);
jLabel18.setText("Transa\u00e7\u00e3o");
jLabel18.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
jPanel48.add(jLabel18);
jLabel18.setBounds(20, 30, 110, 14);
jButton4.setText("Incluir Transa\u00e7\u00e3o");
jPanel48.add(jButton4);
jButton4.setBounds(370, 30, 180, 23);
jPanel50.setLayout(null);
jPanel50.add(jScrollPane38);
jScrollPane38.setBounds(10, 20, 390, 90);
jPanel48.add(jPanel50);
jPanel50.setBounds(10, 60, 410, 120);
panelRecursos10.setLayout(null);
cmbTarefa3.addItem("Entrada de Dados");
panelRecursos10.add(cmbTarefa3);
cmbTarefa3.setBounds(80, 30, 260, 22);
jLabel26.setText("Recebe");
jLabel26.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
panelRecursos10.add(jLabel26);
jLabel26.setBounds(20, 60, 60, 14);
cmbTarefa4.addItem("Sistema de Conhecimento");
133
panelRecursos10.add(cmbTarefa4);
cmbTarefa4.setBounds(80, 60, 260, 22);
jPanel48.add(panelRecursos10);
panelRecursos10.setBounds(420, 60, 410, 122);
jPanel51.setLayout(null);
jPanel51.add(jScrollPane39);
jScrollPane39.setBounds(10, 20, 390, 90);
jPanel48.add(jPanel51);
jPanel51.setBounds(10, 180, 410, 120);
jPanel52.setLayout(null);
jPanel52.setBorder(new javax.swing.border.TitledBorder("Restri\u00e7\u00f5es"));
jScrollPane40.setViewportView(jTextPane12);
jPanel52.add(jScrollPane40);
jScrollPane40.setBounds(10, 20, 390, 90);
jPanel48.add(jPanel52);
jPanel52.setBounds(420, 180, 410, 120);
jPanel53.setLayout(null);
jPanel53.add(jScrollPane41);
jScrollPane41.setBounds(10, 20, 390, 90);
jPanel48.add(jPanel53);
jPanel53.setBounds(10, 310, 410, 120);
jPanel49.setLayout(null);
jPanel49.add(cmbTarefa5);
cmbTarefa5.setBounds(100, 30, 260, 22);
jLabel27.setText("Transa\u00e7\u00e3o");
jLabel27.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
jPanel49.add(jLabel27);
jLabel27.setBounds(20, 30, 110, 14);
jButton5.setText("Incluir Transa\u00e7\u00e3o");
jPanel49.add(jButton5);
jButton5.setBounds(370, 30, 180, 23);
134
panelRecursos11.setLayout(null);
panelRecursos11.add(cmbTarefa6);
cmbTarefa6.setBounds(80, 30, 260, 22);
jLabel29.setText("Recebe");
jLabel29.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
panelRecursos11.add(jLabel29);
jLabel29.setBounds(20, 60, 60, 14);
panelRecursos11.add(cmbTarefa7);
cmbTarefa7.setBounds(80, 60, 260, 22);
jPanel49.add(panelRecursos11);
panelRecursos11.setBounds(0, 60, 410, 122);
panelRecursos12.setLayout(null);
panelRecursos12.add(jScrollPane42);
jScrollPane42.setBounds(10, 20, 250, 90);
btnAdicionarRecurso7.setLabel("Adicionar");
panelRecursos12.add(btnAdicionarRecurso7);
btnAdicionarRecurso7.setBounds(280, 20, 100, 23);
jPanel49.add(panelRecursos12);
panelRecursos12.setBounds(0, 190, 410, 122);
jPanel10.add(jTabbedPane7, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("COMUNICA\u00c7\u00c3O", jPanel10);
getContentPane().add(jTabbedPane1, java.awt.BorderLayout.CENTER);
menuBar.setText("Principal");
abrir.setText("Abrir Projeto");
abrir.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
abrirActionPerformed(evt);
}
});
menuBar.add(abrir);
novo.setText("Novo Projeto");
135
menuBar.add(novo);
jMenuBar1.add(menuBar);
setJMenuBar(jMenuBar1);
pack();
}
}else{
try{
Tarefa tar = new Tarefa(msg);
tar.setIdProcesso(idProcesso);
fachada.salveTarefa(tar);
}catch(ExcecaoBancoIndisponivel e){
JOptionPane.showMessageDialog(this,e.getMessage(),"Ateno",JOptionPane.WARNING_MESSAGE);
}
carregaComboTarefa(idProcesso);
cmbTarefasMO4.setSelectedItem(msg.trim());
}
}else{
try{
Conhecimento con = new Conhecimento(msg);
con.setIdOrganizacao(organizacao.getIdOrganizacao());
fachada.salveConhecimento(con);
}catch(ExcecaoBancoIndisponivel e){
JOptionPane.showMessageDialog(this,e.getMessage(),"Ateno",JOptionPane.WARNING_MESSAGE);
}
model = listaConhecimentosMO2.getModel();
((DefaultListModel)model).add(((DefaultListModel)model).size(),msg);
}
}else{
try{
Recurso rec = new Recurso(msg);
rec.setidOrganizacao(organizacao.getIdOrganizacao());
fachada.salveRecurso(rec);
}catch(ExcecaoBancoIndisponivel e){
JOptionPane.showMessageDialog(this,e.getMessage(),"Ateno",JOptionPane.WARNING_MESSAGE);
}
model = listaRecursos.getModel();
((DefaultListModel)model).add(((DefaultListModel)model).size(),msg);
}
try {
fachada.salveOrganizacao(organizacao);
}catch(ExcecaoBancoIndisponivel e){
JOptionPane.showMessageDialog(this,e.getMessage(),"Ateno",JOptionPane.WARNING_MESSAGE);
}
}
}else{
try{
Processo proc = new Processo(msg);
proc.setidOrganizacao(organizacao.getIdOrganizacao());
fachada.salveProcesso(proc);
}catch(ExcecaoBancoIndisponivel e){
JOptionPane.showMessageDialog(this,e.getMessage(),"Ateno",JOptionPane.WARNING_MESSAGE);
}
model = listaProcessos.getModel();
((DefaultListModel)model).add(((DefaultListModel)model).size(),msg);
}
}
138
try {
int idOrganizacao;
this.idProjetoAberto = fachada.getIdProjetoAtual();
// Carregando Organizacao
organizacao = fachada.retorneOrganizacao(idProjetoAberto);
edtMissao.setText(organizacao.getMissao());
edtVisao.setText(organizacao.getVisao());
edtObjetivos.setText(organizacao.getObjetivos());
edtFatoresExternos.setText(organizacao.getFatoresExternos());
edtProblemas.setText(organizacao.getOportunidades().trim());
txtEstrutura.setText(organizacao.getEstrutura().trim());
edtPessoas.setText(organizacao.getPessoas());
edtCulturaPoder.setText(organizacao.getCulturaPoder());
idOrganizacao = organizacao.getIdOrganizacao();
// Carregando informaes do Processo
processos = fachada.retorneProcessos(idOrganizacao);
carregaComboProcesso(processos);
nome = nome.trim();
/**
* @param args the command line arguments
*/
/** public static void main(String args[]) {
* java.awt.EventQueue.invokeLater(new Runnable() {
* public void run() {
* new Principal().setVisible(true);
*}
*}
* }**/
// Variables declaration - do not modify
private javax.swing.JMenuItem abrir;
private javax.swing.JButton btnAdicionarConhecimento;
private javax.swing.JButton btnAdicionarConhecimentoMO3;
private javax.swing.JButton btnAdicionarEstrutura;
private javax.swing.JButton btnAdicionarProcesso;
private javax.swing.JButton btnAdicionarProcesso1;
private javax.swing.JButton btnAdicionarProcesso10;
private javax.swing.JButton btnAdicionarProcesso11;
private javax.swing.JButton btnAdicionarProcesso7;
private javax.swing.JButton btnAdicionarProcesso9;
private javax.swing.JButton btnAdicionarRecurso;
private javax.swing.JButton btnAdicionarRecurso3;
private javax.swing.JButton btnAdicionarRecurso4;
private javax.swing.JButton btnAdicionarRecurso5;
private javax.swing.JButton btnAdicionarRecurso6;
private javax.swing.JButton btnAdicionarRecurso7;
private javax.swing.JButton btnAdicionarTarefaMO3;
private javax.swing.JButton btnSalvar;
private javax.swing.JButton btnVisualizaEstrutura;
private javax.swing.JCheckBox chkTarefaIntensiva;
private javax.swing.JComboBox cmbProcesso;
private javax.swing.JComboBox cmbProcessosMO3;
private javax.swing.JComboBox cmbTarefa;
private javax.swing.JComboBox cmbTarefa1;
private javax.swing.JComboBox cmbTarefa2;
private javax.swing.JComboBox cmbTarefa3;
private javax.swing.JComboBox cmbTarefa4;
private javax.swing.JComboBox cmbTarefa5;
private javax.swing.JComboBox cmbTarefa6;
private javax.swing.JComboBox cmbTarefa7;
private javax.swing.JComboBox cmbTarefasMO4;
private javax.swing.JEditorPane edtCulturaPoder;
private javax.swing.JEditorPane edtFatoresExternos;
private javax.swing.JEditorPane edtMissao;
private javax.swing.JTextPane edtObjetivos;
private javax.swing.JEditorPane edtPessoas;
private javax.swing.JEditorPane edtProblemas;
private javax.swing.JEditorPane edtVisao;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JCheckBox jCheckBox10;
private javax.swing.JCheckBox jCheckBox11;
141
});
}
- Camada Lgica
package commonkads.logica.fachada;
/**
*
* @author Cleosvaldo Jr.
*/
public class FabricaDeFachadaLogica {
private FabricaDeFachadaLogica() {
}
/**
* Retorna uma classe que implementa a fachada.
*/
public static FachadaLogica crie() {
return new MinhaFachadaLogica();
}
}
package commonkads.logica.fachada;
import commonkads.logica.modelo.Agente;
import commonkads.logica.modelo.Conhecimento;
import commonkads.logica.modelo.Organizacao;
import commonkads.logica.modelo.Problema;
import commonkads.logica.modelo.Processo;
import commonkads.logica.modelo.Projeto;
import commonkads.logica.modelo.Recurso;
import commonkads.logica.modelo.Solucao;
import commonkads.logica.modelo.Tarefa;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
/**
* Define os servios oferecidos pela camada lgica.
* @author Cleosvaldo Jr.
*/
public interface FachadaLogica {
/**
* Cria um novo processo. Retorna false se no puder criar.
*/
public boolean salveProcesso(Processo processo) throws ExcecaoBancoIndisponivel;
147
package commonkads.logica.fachada;
import commonkads.logica.modelo.Agente;
import commonkads.logica.modelo.Conhecimento;
import commonkads.logica.modelo.Organizacao;
import commonkads.logica.modelo.Problema;
import commonkads.logica.modelo.Processo;
import commonkads.logica.modelo.Projeto;
import commonkads.logica.modelo.Recurso;
import commonkads.logica.modelo.Solucao;
import commonkads.logica.modelo.Tarefa;
import commonkads.logica.regras.ModeloGerente;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import commonkads.persistencia.fachada.FabricaDeFachadaPersistencia;
import commonkads.persistencia.fachada.FachadaPersistencia;
import java.util.List;
ModeloGerente modeloGerente;
FachadaPersistencia fachadaPersistencia;
public MinhaFachadaLogica() {
fachadaPersistencia = FabricaDeFachadaPersistencia.crie();
modeloGerente = new ModeloGerente(fachadaPersistencia);
}
148
package commonkads.logica.modelo;
public Agente(){
}
public int getidAgente(){
return idAgente;
}
package commonkads.logica.modelo;
/**
* @version 1.0
* @created 09-out-2005 17:43:59
*/
public class AgenteTarefa {
public AgenteTarefa(){
package commonkads.logica.modelo;
/**
* Holds value of property idOrganizacao.
*/
private int idOrganizacao;
public Conhecimento(){
/**
* Getter for property idOrganizacao.
* @return Value of property idOrganizacao.
152
*/
public int getIdOrganizacao() {
return this.idOrganizacao;
}
/**
* Setter for property idOrganizacao.
* @param idOrganizacao New value of property idOrganizacao.
*/
public void setIdOrganizacao(int idOrganizacao) {
this.idOrganizacao = idOrganizacao;
}
package commonkads.logica.modelo;
/**
* @version 1.0
* @created 09-out-2005 17:43:59
*/
public class Oportunidade {
public Oportunidade(){
package commonkads.logica.modelo;
public Organizacao(){
return missao;
}
return pessoas;
}
package commonkads.logica.modelo;
public class Pessoa {
public Pessoa(){
package commonkads.logica.modelo;
public Problema(){
}
156
package commonkads.logica.modelo;
import java.util.HashSet;
import java.util.Set;
public Processo(){
/*
* Projeto.java
*
*/
package commonkads.logica.modelo;
/**
*
* @author Cleosvaldo Jr.
*/
public class Projeto {
/**
* Holds value of property idProjeto.
*/
private int idProjeto;
/**
* Holds value of property nome.
*/
private String nome;
public Projeto() {
}
/**
* Getter for property idProjeto.
* @return Value of property idProjeto.
*/
public int getIdProjeto() {
return this.idProjeto;
}
/**
* Setter for property idProjeto.
* @param idProjeto New value of property idProjeto.
*/
public void setIdProjeto(int idProjeto) {
this.idProjeto = idProjeto;
}
/**
* Getter for property nome.
* @return Value of property nome.
*/
public String getNome() {
return this.nome;
}
/**
* Setter for property nome.
* @param nome New value of property nome.
*/
public void setNome(String nome) {
this.nome = nome;
}
package commonkads.logica.modelo;
public Recurso(){
159
package commonkads.logica.modelo;
public Solucao(){
return idSolucao;
}
package commonkads.logica.modelo;
public Tarefa(){
this.idProcesso = idProcesso;
}
this.recursos = recursos;
}
/**
* Getter for property executadaPor.
* @return Value of property executadaPor.
*/
public String getExecutadaPor() {
return this.executadaPor;
}
/**
* Setter for property executadaPor.
* @param executadaPor New value of property executadaPor.
*/
public void setExecutadaPor(String executadaPor) {
this.executadaPor = executadaPor;
}
/**
* Getter for property localizacao.
* @return Value of property localizacao.
*/
public String getLocalizacao() {
return this.localizacao;
}
/**
* Setter for property localizacao.
* @param localizacao New value of property localizacao.
*/
public void setLocalizacao(String localizacao) {
this.localizacao = localizacao;
}
/**
* Getter for property intensiva.
* @return Value of property intensiva.
*/
public boolean isIntensiva() {
return this.intensiva;
}
163
/**
* Setter for property intensiva.
* @param intensiva New value of property intensiva.
*/
public void setIntensiva(boolean intensiva) {
this.intensiva = intensiva;
}
/**
* Getter for property grauSignificancia.
* @return Value of property grauSignificancia.
*/
public int getGrauSignificancia() {
return this.grauSignificancia;
}
/**
* Setter for property grauSignificancia.
* @param grauSignificancia New value of property grauSignificancia.
*/
public void setGrauSignificancia(int grauSignificancia) {
this.grauSignificancia = grauSignificancia;
}
}
package commonkads.logica.regras;
import commonkads.persistencia.fachada.FachadaPersistencia;
FachadaPersistencia fachada;
package commonkads.logica.regras;
import commonkads.logica.modelo.Agente;
import commonkads.logica.modelo.Conhecimento;
import commonkads.logica.modelo.Organizacao;
import commonkads.logica.modelo.Problema;
import commonkads.logica.modelo.Processo;
import commonkads.logica.modelo.Projeto;
import commonkads.logica.modelo.Recurso;
164
import commonkads.logica.modelo.Solucao;
import commonkads.logica.modelo.Tarefa;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import commonkads.persistencia.fachada.FachadaPersistencia;
import java.util.List;
this.setIdOrganizacaoAtual(((Organizacao)lstOrganizacao.get(0)).getIdOrganizacao());
return ((Organizacao)lstOrganizacao.get(0));
/**
* Getter for property idProjetoAtual.
* @return Value of property idProjetoAtual.
*/
public int getIdProjetoAtual() {
return this.idProjetoAtual;
}
/**
* Setter for property idProjetoAtual.
* @param idProjetoAtual New value of property idProjetoAtual.
*/
166
this.idProjetoAtual = idProjetoAtual;
}
/**
* Getter for property idOrganizacaoAtual.
* @return Value of property idOrganizacaoAtual.
*/
public int getIdOrganizacaoAtual() {
return this.idOrganizacaoAtual;
}
/**
* Setter for property idOrganizacaoAtual.
* @param idOrganizacaoAtual New value of property idOrganizacaoAtual.
*/
public void setIdOrganizacaoAtual(int idOrganizacaoAtual) {
this.idOrganizacaoAtual = idOrganizacaoAtual;
}
- Persistncia
/*
* AgenteDAO.java
*
*/
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Agente;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
/**
*
* @author Cleosvaldo Jr.
*/
public class AgenteDAO {
SessionFactory sessionFactory;
/** Creates a new instance of AgenteDAO */
public AgenteDAO(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
167
sessao.save(novoAgente);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
package commonkads.persistencia.dao;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
/**
*
* @author Cleosvaldo
*/
public class BancoDAO{
SessionFactory sessionFactory;
ProcessoDAO processoDAO;
ConhecimentoDAO conhecimentoDAO;
OrganizacaoDAO organizacaoDAO;
ProblemaDAO problemaDAO;
ProjetoDAO projetoDAO;
RecursoDAO recursoDAO;
TarefaDAO tarefaDAO;
AgenteDAO agenteDAO;
SolucaoDAO solucaoDAO;
public BancoDAO() {
sessionFactory = definaSessionFactory();
return processoDAO;
}
return sf;
}
/*
* Conhecimento.java
*
*/
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Conhecimento;
169
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
/**
*
* @author Cleosvaldo Jr.
*/
public class ConhecimentoDAO {
SessionFactory sessionFactory;
/** Creates a new instance of Conhecimento */
public ConhecimentoDAO(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
sessao.save(novoConhecimento);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
return result;
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Organizacao;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
170
sessao.update(novaOrganizacao);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
return result;
/*
* ProblemaDAO.java
*
*/
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Problema;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
/**
*
* @author Cleosvaldo Jr.
*/
public class ProblemaDAO {
SessionFactory sessionFactory;
this.sessionFactory = sessionFactory;
}
sessao.save(novoProblema);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Processo;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
SessionFactory sessionFactory;
criterio.add(Restrictions.like("nome",nome));
it = criterio.list().iterator();
if (it.hasNext())
processo = it.next();
sessao.close();
} catch (HibernateException e) {
172
return result;
}
public void salve(Processo novoProcesso) throws ExcecaoBancoIndisponivel {
try {
Session sessao = sessionFactory.openSession();
Transaction tx = sessao.beginTransaction();
sessao.save(novoProcesso);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
sessao.update(processo);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
/*
* ProjetoDAO.java
*
* Created on 13 de Outubro de 2005, 22:19
*/
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Projeto;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
173
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
/**
*
* @author JR
*/
public class ProjetoDAO {
SessionFactory sessionFactory;
/** Creates a new instance of ProjetoDAO */
public ProjetoDAO(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
sessao.save(novoProjeto);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
return result;
}
}
/*
* RecursoDAO.java
*
*/
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Recurso;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
/**
*
* @author Cleosvaldo Jr.
*/
174
try {
Session sessao = sessionFactory.openSession();
Transaction tx = sessao.beginTransaction();
try {
sessao.saveOrUpdate(novaRecurso);
tx.commit();
}catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
return result;
/*
* SolucaoDAO.java
*
*/
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Solucao;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
175
sessao.save(novaSolucao);
tx.commit();
sessao.close();
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
/*
* TarefaDAO.java
*/
package commonkads.persistencia.dao;
import commonkads.logica.modelo.Tarefa;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
SessionFactory sessionFactory;
sessao.save(novaTarefa);
tx.commit();
sessao.close();
176
} catch (HibernateException e) {
throw new ExcecaoBancoIndisponivel(e);
}
}
return result;
package commonkads.persistencia.excecoes;
package commonkads.persistencia.fachada;
/**
* Impede a instanciacao.
*/
private FabricaDeFachadaPersistencia() {
}
/*
* FachadaPersistencia.java
*
* Created on May 27, 2005, 7:25 PM
*/
177
package commonkads.persistencia.fachada;
import commonkads.logica.modelo.Agente;
import commonkads.logica.modelo.Conhecimento;
import commonkads.logica.modelo.Organizacao;
import commonkads.logica.modelo.Problema;
import commonkads.logica.modelo.Processo;
import commonkads.logica.modelo.Projeto;
import commonkads.logica.modelo.Recurso;
import commonkads.logica.modelo.Solucao;
import commonkads.logica.modelo.Tarefa;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
/**
* Servios oferecidos pela camada de persistncia
* @author Cleosvaldo Jr
*/
public interface FachadaPersistencia {
/*
* MinhaFachadaPersistencia.java
*
*/
package commonkads.persistencia.fachada;
import commonkads.logica.modelo.Agente;
import commonkads.logica.modelo.Conhecimento;
import commonkads.logica.modelo.Organizacao;
178
import commonkads.logica.modelo.Problema;
import commonkads.logica.modelo.Processo;
import commonkads.logica.modelo.Projeto;
import commonkads.logica.modelo.Recurso;
import commonkads.logica.modelo.Solucao;
import commonkads.logica.modelo.Tarefa;
import commonkads.persistencia.dao.BancoDAO;
import commonkads.persistencia.excecoes.ExcecaoBancoIndisponivel;
import java.util.List;
/**
*
* @author Cleosvaldo Jr.
*/
public class MinhaFachadaPersistencia implements FachadaPersistencia {
BancoDAO banco;
return banco.getProcessoDAO().retorneProcessos(idOrganizacao);
}
- Arquivos Hibernate
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!--
Document : hibernate.cfg.xml
-->
<hibernate-configuration>
<session-factory>
<!-- Parmetros de configurao JDBC -->
<property name="connection.driver_class">sun.jdbc.odbc.JdbcOdbcDriver</property>
<property name="connection.url">jdbc:odbc:banco</property>
<property name="connection.username">sa</property>
<property name="connection.password">sa</property>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="Nome"
column="Nome"/>
<property
name="Humano"
column="Humano"/>
<property
name="Organizacao"
column="Organizacao"/>
<property
name="Competencias"
column="Competencias"/>
<property
name="Responsabilidades"
column="Responsabilidades"/>
<property
name="Restricoes"
column="Restricoes"/>
181
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="idAgente"
column="idAgente"/>
<property
name="idTarefa"
column="idTarefa"/>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="idAgente"
column="idAgente"/>
<property
name="Descricao"
column="Descricao"/>
<property
name="idOrganizacao"
column="idOrganizacao"/>
182
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="Nome"
column="Nome"/>
<property
name="Estrutura"
column="Estrutura"/>
<property
name="Oportunidades"
column="Oportunidades"/>
<property
name="Missao"
column="Missao"/>
<property
name="Visao"
column="Visao"/>
<property
name="Objetivos"
column="Objetivos"/>
<property
name="FatoresExternos"
column="FatoresExternos"/>
<property
name="Estrategias"
column="Estrategias"/>
<property
name="Valores"
column="Valores"/>
<property
name="ArquivoEstrutura"
column="ArquivoEstrutura"/>
<property
name="Pessoas"
column="Pessoas"/>
<property
name="Conhecimento"
column="Conhecimento"/>
183
<property
name="CulturaPoder"
column="CulturaPoder"/>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="idOrganizacao"
column="idOrganizacao"/>
<property
name="Descricao"
column="Descricao"/>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="nome"
column="nome"/>
<property
name="idOrganizacao"
column="idOrganizacao"/>
184
<set
name="tarefas"
inverse="true"
cascade="save-update">
<key column="idProcesso"/>
<one-to-many class="Tarefa"/>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="nome"
column="nome"/>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="idOrganizacao"
column="idOrganizacao"/>
<property
name="Descricao"
column="Descricao"/>
185
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="idProblema"
column="idProblema"/>
<property
name="Descricao"
column="Descricao"/>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="idProcesso"
column="idProcesso"/>
<property
name="Nome"
column="Nome"/>
<property
name="Objetivos"
column="Objetivos"/>
<property
name="Fluxo"
column="Fluxo"/>
186
<property
name="Objetos"
column="Objetos"/>
<property
name="TempoControle"
column="TempoControle"/>
<property
name="Recursos"
column="Recursos"/>
<property
name="Qualidade"
column="Qualidade"/>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="commonkads.logica.modelo">
<property
name="idTarefa"
column="idTarefa"/>
<property
name="idConhecimento"
column="idConhecimento"/>
</class>
</hibernate-mapping>
use [commonKADS]
GO
188
) ON [PRIMARY]
GO