Documente Academic
Documente Profesional
Documente Cultură
1.1.1 - NeoObject
NeoObject é o objeto mais genérico no Fusion, todos os outros objetos extendem ele.
Para obter a Id de um Objeto utilize o método getNeoId(). Também as questões de segurança
do fusion estão associadas a este objeto, vários métodos de validações de segurança são
invocados a partir do NeoObject.
1.1.2 - InstantiableEntityInfo
Entidades são classes que mapeiam e representam uma tabela no banco de dados.
Para obter a instância de uma entidade, um objeto do tipo InstantiableEntityInfo deve ser
criado para representá-la. Para criarmos uma instância de uma entidade usamos o método
createNewEntityInstance(String entityName) da classe AdapterUtils. O parâmetro do
método é um objeto do tipo String que será o nome da entidade (formulário ou tabela) criado
no Fusion. Lembrando que o formulário pode ser dinâmico ou externo. Este objeto é
posteriormente passado como argumento dos métodos getObject()e getObjects() da classe
PersitEngine, que realizam a busca na tabela(formulário).
Método Descrição
findField Retorna um Wrapper para manipulação do
campo se o campo existir, senão retorna null
findValue Retorna um objeto com o valor do campo
findValues Retorna uma coleção de objetos
findGenericValue Retorna um objeto genérico com o valor do
campo
No código abaixo primeiro criamos uma instância da entidade “Produto” e atribuímos ela a um
NeoObject que representará a tabela no banco, em seguida embrulhamos ela com um
wrapper instanciando a classe EntityWrapper passando para o construtor desta o argumento
NeoObject contendo a entidade, encapsulando assim sua complexidade, agora todas
operações de leitura e escrita no banco serão realizados através do objeto wrapper. Este
método simplifica as operações de banco escondendo os detalhes de relacionamentos entre
tabelas que serão controlados pelo Hibernate.
Método Descrição
getConnection Retorna um objeto de conexão para a fonte
de dados. Recebe uma String com o nome da
fonte de dados como parâmetro.
persit Persiste os dados no banco, recebe como
parâmetro um objeto que referencia a
entidade.
getObject Retorna a instância de um objeto. Recebe
como parâmetro um objeto classe.
getObjects Retorna uma lista ou coleção de instâncias de
objetos. Além do objeto representando a
entidade os métodos também podem ter
como parâmetro filtros, assim o resultado
retornado será uma instância específica ou
um subconjunto de instâncias de acordo com
os critérios definidos pelos filtros.
System.out.println(codigo+"\n");
System.out.println(descricao);
//remove objeto
PersistEngine.remove(produtoFusion);
1.1.2 - NeoUser
Depois de alterado para o tipo Script a caixa de atividade mudará de cor, e também o
Painel de Propriedades terá suas propriedades alteradas para o contexto de Script. No painel
de propriedades preencha o campo “Descrição”, e no campo “Tipo de Script” deixe o valor
padrão que é “adapter”, na propriedade “Classe Java” informe o namespace da classe Java
desenvolvida. Muito cuidado com o namespace pois qualquer erro impedirá que o Adapter
funcione.
A maneira mais segura de copiar o namespace no Eclipse é posicionar o cursor sobre o nome
da classe e clicar com o botão direito, selecionar o item “Copy Qualified Name”, o Eclipse
copiará para a área de transferência o namespace da classe. Cole na propriedade “Classe Java”
no Painel de Propriedades. Assim a possibilidade de erros de digitação será anulada.
2.2.2 – Exemplo de adapters de Workflow – Persistindo dados em uma tabela
externa
@Override
public void start(Task origin, EntityWrapper processEntity,
Activity activity)
{
// TODO Auto-generated method stub
Para agendar uma tarefa clique em Novo, dê um nome e uma descrição para a tarefa,
e defina o campo Habilitado para Sim. No campo Adapter informe o namespace da classe que
será executada. Configure o Gatilho que executará a tarefa no painel Gatilho clique em Novo
preencha os campos solicitados para repetir a execução agendada.
3.2 – Exemplo de Adapter para o Agendador de Tarefas – Importador Simplificado
@Override
public void execute(CustomJobContext ctx)
{
// TODO Auto-generated method stub
wrapperProdutoFusion.findField("codigo").setValue(numeroProduto);
wrapperProdutoFusion.findField("descricao").setValue(descricao);
System.out.println(numeroProduto+"\n");
System.out.println(descricao);
//persistindo objeto
PersistEngine.persist(produtoFusion);
}
5 - Bloco Try...Catch
6 - Geração de Log
No Painel de Propriedades o campo Enviar para participante: Indica se o e-mail vai ser
enviado para o participante da Raia. Se “Sim” o e-mail de notificação será enviado para os
participantes da raia (usuário/papel/grupo) . Se o valor de Enviar para Participante for “Não” o
campo Enviar para deve ser preenchido com um campo do tipo Usuário/Papel/Grupo, ou tipo
Texto quando os destinatários não forem usuários do Fusion. Neste caso os e-mails dos
destinatários devem ser separados por ponto e vírgula (;) e podem ser preenchidos em tempo
de execução ou incluídos na Propriedade Valor Padrão do campo tipo Texto. Caso o e-mail
deva ser enviado tanto para usuários do Fusion participantes da Raia e para pessoas que não
utilizam o Fusion (parceiros de negócios). O valor do Campo Enviar para participante deve ser
“sim” e o valor do campo Enviar para também deve ser preenchido.
Para que esta atividade funcione é necessário informar o Modelo do e-mail que será
utilizado. Para isto, se faz necessário criar uma servlet java que renderizará o e-mail
formatado. Através deste modelo poderemos informar no corpo do e-mail informações
específicas da instância do processo. Por exemplo, o solicitante, data da solicitação ou
qualquer campo que faça parte do formulário do processo, inclusive dados de formulários
externos que sejam filhos do formulário do processo.
<%@page import="com.neomind.fusion.portal.PortalUtil"%>
<%@page import="com.neomind.fusion.common.NeoObject"%>
<%@page import="com.neomind.fusion.persist.PersistEngine"%>
<%@ taglib uri="/WEB-INF/mail.tld" prefix="mail"%>
<%@ taglib uri="/WEB-INF/workflow.tld" prefix="wf"%>
<%@ taglib uri="/WEB-INF/portal.tld" prefix="portal"%>
<%@page import="java.util.*"%>
<%@page import="java.sql.Time"%>
<%@page import="com.neomind.util.NeoUtils"%>
<%@page import="com.neomind.fusion.entity.EntityWrapper"%>
<%@page import="com.neomind.fusion.workflow.Activity"%>
<%@page import="com.neomind.fusion.workflow.Task"%>
<%@page import="com.neomind.util.NeoCalendarUtils"%>
<%
NeoObject obj = (NeoObject)request.getAttribute("Entity");
EntityWrapper wrapper = new EntityWrapper(obj);
<body bgcolor="#FFF1D2">
<p><mail:title title='<%=title %>' /></p>
<mail:img src="/imagens/cabecalho.jpg" width="768" height="124" />
<h3><u><%=codigo %> - <%=processo %></u></h3>
<p> <strong>Codigo Produto</strong> <%=codigoProduto%> </p>
<p> <strong>Descrição do Produto :</strong> <%=descricao%></p>
<p> <strong>Observação:</strong> <%=observacao%> </p>
<p><strong>Data Solicitação :</strong> <%=dataSolicitacaoTexto%></p>
<%@page import="com.neomind.fusion.portal.PortalUtil"%>
<%@page import="com.neomind.fusion.common.NeoObject"%>
<%@page import="com.neomind.fusion.persist.PersistEngine"%>
<%@ taglib uri="/WEB-INF/mail.tld" prefix="mail"%>
<%@ taglib uri="/WEB-INF/workflow.tld" prefix="wf"%>
<%@ taglib uri="/WEB-INF/portal.tld" prefix="portal"%>
<%@page import="java.util.*"%>
<%@page import="java.sql.Time"%>
<%@page import="com.neomind.util.NeoUtils"%>
<%@page import="com.neomind.fusion.entity.EntityWrapper"%>
<%@page import="com.neomind.fusion.workflow.Activity"%>
<%@page import="com.neomind.fusion.workflow.Task"%>
<%@page import="com.neomind.util.NeoCalendarUtils"%>
<body bgcolor="#FFF1D2">
<p><mail:title title='<%=title %>' /></p>
<mail:img src="/imagens/cabecalho.jpg" width="768" height="124" />
<h3><u><%=codigo %> - <%=processo %></u></h3>
<p> <strong>Codigo Produto</strong> <%=codigoProduto%> </p>
<p> <strong>Descrição do Produto :</strong> <%=descricao%></p>
<p> <strong>Observação:</strong> <%=observacao%> </p>
<p><strong>Data Solicitação :</strong> <%=dataSolicitacaoTexto%></p>
A imagem abaixo ilustra como ficaria o e-mail padrão de acordo como o código acima:
8 – Ferramentas e Utilitários
http://localhost:8080/fusion/adm/dumpEFormTree.jsp?id=sacPrincipal
Importante: neste servidor o Fusion está rodando na porta 8080 como localhost,
portanto substitua a parte http://localhost:8080 pela correspondente em seu
ambiente. SacPrincipal é o nome do formulário
Para navegar nesta estrutura clique nos campos, se forem do tipo formulário expandirão e
mostrarão os campos do mesmo.
8.2 – Visualizando os dados de um Objeto com dumpNeoObject
http://localhost:8080/fusion/adm/dumpNeoObject.jsp?id=37014
8.3 – Habilitando log seletivo
Com o log seletivo podemos habilitar o log de acordo com um contexto específico,
facilitando a depuração erros no código.
http://localhost:8080/fusion/adm/log.jsp
http://localhost:8080/fusion/adm/sql.jsp
Note que os formulários dinâmicos tornam-se tabelas com o prefixo “D_” e formulários
externos com o prefixo “EXT_”.
8.5 – Visualizando os usuários online com activeUsers
O servlet activeUsers lista todos os usuários do sistema que estão online no momento.
Permitindo o monitoramento do sistema.
http://localhost:8080/fusion/adm/activeUsers.jsp