Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Índice
maxLevel4
outlinetrue
stylenone
exclude.*ndice

 

Objetivo

O objetivo desta página é esclarecer o objetivo e exemplo de uso de um script condicional do Fluigfluig.

 

Script Condicional

...

O objetivo de um script condicional é verificar alguma informação que não pertence ao fluig que foi disponibilizada em algum webservice externo. Essa informação é dinâmica logo os eventos condicionais poderão ser programados para periodicamente executarem o script e verificarem se determinada uma informação atingiu um determinado valor ou atingiu algum patamar estabelecido pelo negócio.

Exemplo de utilização do script condicional

Um exemplo de uso de negócio seria criar um processo com uma atividade inicial condicional cujo script verifica o preço do dólar para compra. O preço do dolar dólar pode variar duarente durante o dia e neste caso poderíamos ter um processo workflow de compra de dólares que seria iniciado apenas se o preço do dólar atingisse um patamar aceitável para o negócio do cliente.

 

Os scripts condicionais são scripts javascript que possuem basicamente todos os recursos dos eventos de processo do fluig podendo combinar a consulta de webservices externos junto com dados do formulário. Quando este script conseguir retornar true então a solicitação workflow será iniciada ou movimentada de acordo com o elemento utilizado na modelagem.


Exemplo de macro para bloco de códigoscript acessando um webservice:

Bloco de código
languagejs
titleExemplo script
function intermediateconditional2() {

	var adminUser = "adm";
	var adminPass = "adm";
	var colleagueId = hAPI.getCardValue("cbuser")
	var companyId = 1;
	var solic = hAPI.getCardValue("nmSol");
	var NOME_SERVICO = "fluigDashBoardService";
	var CAMINHO_SERVICO = "com.totvs.technology.ecm.dm.ws.ECMDashBoardServiceService";
	var servico = ServiceManager.getService(NOME_SERVICO);
	var instancia = servico.instantiate(CAMINHO_SERVICO);
	var ws = instancia.getDashBoardServicePort();
	var summaryRequests = ws.getSummaryRequests(companyId, adminUser, adminPass, colleagueId);
	var pendingRequests = summaryRequests.getNumberOfWorkflowPendingRequests();
	log.info("pendingRequests " + pendingRequests);
	if (pendingRequests > solic) {
		return true;
	}
}

...

Nota
titleObservação

Embora seja possível realizar a alteração de dados e consulta de webservices internos do fluig dentro de um script condicional, alertamos que esta prática não é recomendada.

Em nossos exemplos estamos utilizando os próprios webservices do fluig apenas para facilitar a compreensão e implantação destes exemplos em ambientes de desenvolvimento do fluig.

 

Processo Exemplo monitoramento de solicitações

...

Para este processo exemplo iremos monitorar a lista de tarefas pendentes de um usuário fluig escolhido no formulário do processo. Caso o número de solicitações pendentes seja superior ao número tolerado informado no formulário então será encaminhada para o admistrador administrador uma tarefa de "Aviso" aonde em que o administrador poderá atuar com este usuário.

...

.

Figura 1 - Diagrama do processo de exemplo com script condicional.

 

 

Procedimento para implantação do exemplo

...

Deck of Cards
effectDuration0.5
idsamples
historyfalse
effectTypefade
 

 

Card
defaulttrue
id1
labelPasso 1

 

  • Cadastre o DashBoardService utilizando o código fluigDashBoardService . A URL informada será a seguinte:

https://(servidor): porta /webdesk/DashBoardService?wsdl

Verifique o exemplo abaixo para melhor compreensão :

 

 

  
Card
id2
labelPasso 2

 

  • Importar o processo exemplo.

  • Cadastrar o servidor destino no studio.

 

Card
id3
labelPasso 3

 

    • Verificar a frequência de checagem do Job nas propriedades da atividade condicional no Fluxofluxo.

Figura 2 - Propriedades da atividade condicional.


Card
id4
labelPasso 4

 

  • Exportar e liberar o processo junto com o formulário que está neste projeto.
  • Iniciar uma solicitação e mover para a atividade condicional.

 

 

Após os procedimentos realizados acima você terá um exemplo de script condicional funcionando no seu ambiente.

Abaixo segue o projeto exemplo citado acima.

Clique aqui e faça o download do projeto que contém o exemplo acima mencionado.

 

 

Variáveis e funções suportadas em scripts condicionais

Segue a lista de variáveis e funções suportadas em scripts condicionais :

VariávelFunção
logImpressão de mensagens dentro do log do Fluig.
ServiceManagerObjeto que permite a instância de objetos é métodos de webservices soap
DatasetManagerObjeto que permite carregar datasets entro das customizações.
DatasetFactoryO objeto DatasetFactory é a "porta de entrada" para o acesso a qualquer Dataset Maiores detalhes sobre este item se encontram no artigo sobre construção de datasets. 
DatasetBuilderPermite a criação de datasets. Maiores detalhes sobre este item se encontram no artigo sobre construção de datasets. 
ConstraintTypeDetermina o tipo de constraint a ser utilizada em uma condição do dataset. Maiores detalhes sobre este item se encontram no artigo sobre construção de datasets.
notifierPermite realizar notificações extras em eventos e scripts.
WKParamsColeção de parâmetros que podem ser utilizados dentro dos scripts como o WKCompany e WKUser. As outras variáveis e o que elas retornam podem ser encontradas no artigo sobre desenvolvimento de processos workflow .
hAPIContém operações relacionadas a solicitação workflow em andamento. Está disponível apenas para os scripts de eventos intermediários condicionais. Maiores detalhes sobre as funções da hAPI podem ser encontradas no artigo sobre desenvolvimento de processos workflow.

 

 ScriptCondicional.zip