Árvore de páginas

Versões comparadas

Chave

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

...

EventoDescriçãoParâmetros
afterCancelProcess

Ocorre após o cancelamento da solicitação. É recomendado não disparar exceções neste método, pois o cancelamento já foi realizado.

  • Usuário corrente (String);
  • Número do processo (Integer).
afterProcessCreate

Ocorre logo após a criação de um novo processo.

 

  • Número do novo processo (Integer).
afterProcessFinish

Ocorre após finalizada a solicitação.

  • Número do processo (Integer).
afterReleaseVersion

Ocorre após a liberação de uma versão do processo.

  • XML com a definição do processo (String).
afterStateEntryOcorre após a entrada em uma nova atividade.
  • Sequência da atividade (Integer).
afterStateLeaveOcorre após a saída de uma atividade.
  • Sequência da atividade (Integer).
afterTaskComplete

Ocorre após o usuário completar uma tarefa, porém as informações de próxima tarefa e usuários destino já foram salvas.

  • Usuário corrente (String);
  • Sequência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
afterTaskCreateOcorre após o usuário receber uma tarefa.
  • Matrícula do usuário (String).
afterTaskSave

Ocorre após salvar as informações selecionadas pelo usuário.

  • Usuário corrente (String);
  • Sequência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
beforeCancelProcess

Ocorre antes do cancelamento da solicitação.

  • Usuário corrente (String);
  • Número do processo (Integer).
beforeStateEntryOcorre antes da entrada em uma nova atividade.
  • Sequência da atividade (Integer).
beforeStateLeaveOcorre antes da saída de uma atividade.
  • Sequência da atividade (Integer).
beforeTaskComplete

Ocorre antes que o usuário complete uma tarefa, porém as informações de próxima tarefa e usuários destino já foram salvas.

Nota
titleObservação

Diferente dos demais eventos do tipo before, este evento não dispara suas validações ao servidor, fazendo com que o sistema não pare a movimentação da atividade quando o mesmo lança uma exceção.

  • Usuário corrente (String);
  • Seqüência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
beforeTaskCreateOcorre antes que o usuário receba uma tarefa.
  • Matrícula do usuário (String).
beforeTaskSave

Ocorre antes de salvar as informações selecionadas pelo usuário.

  • Usuário corrente (String);
  • Sequência da próxima atividade (Integer);
  • Lista de usuários destino (List<String>).
calculateAgreement

Ocorre após o cálculo do consenso (somente para atividades conjuntas) e permite alterar os dados do consenso de uma atividade.

Exemplo:

Bloco de código
languagejavascript
themeEclipse
firstline1
linenumberstrue
function calculateAgreement(currentState, agreementData) {
	log.info("Consenso Atual: " + agreementData.get("currentPercentage"));
	log.info("Atividade Destino Atual: " +  agreementData.get("currentDestState"));
	log.info("Usuario Destino Atual: " + agreementData.get("currentDestUsers"));
	
	//Altera o consenso
	agreementData.put("currentPercentage", 100);
	agreementData.put("currentDestState", 2);
	agreementData.put("currentDestUsers", "adm,teste,super");
}
  • currentState (Integer): atividade que terá o consenso alterado;
  • agreementData (Map<String, Object>): mapa de dados com o percentual calculado, a atividade destino e os usuários de destino. Para obter os valores, utilize o método "get" e para atribuir um valor, utilize o método "put".
onNotify

Se refere a um evento global que ocorre após a movimentação da solicitação e antes de enviar as notificações.

Para mais detalhes consulte a página Desenvolvimento de eventos - On Notify.
setProcess

Ocorre quando um processo é "setado" na API.

Nota
titleObservação

A propriedade WKCompletTask não deve ser utilizada neste evento, pois quando ele é executado o produto ainda não tem a informação se atividade foi ou não completada.

  • Número do processo (Integer).
subProcessCreatedOcorre quando um sub-processo é criado.
  • Número do sub-processo (Integer).
validateAvailableStates

Ocorre após montada a lista de tarefas disponíveis para o usuário a partir da tarefa atual.

  • Sequência da atividade atual (Integer);
  • Lista das sequências das atividades (List<Integer>).  
Informações
  • Não é necessário criar todos os eventos do processo – apenas aqueles nos quais se tem interesse.
  • Todos os eventos são executados de forma persistente.

...

titleImportante!

 

Exemplo

Não é possível capturar (hAPI.getCardValue) ou adicionar (hAPI.setCardValue) dados no formulário na inicialização do processo, sendo possível somente a partir da segunda tarefa.

...

:

Bloco de código
languagejavascript
themeEclipse
firstline1
linenumberstrue
function 

...

validateAvailableStates(iCurrentState, stateList {
	

...

// Códido: 1 - Descrição: Atividade inicial
	// Códido: 2 - Descrição: Atividade ordem 3
	// Códido: 3 - Descrição: Atividade ordem 2
	// Códido: 4 - Descrição: Atividade ordem 1
	
	// stateList atual: [2,3,4]

	var stateArray = new Array();
	
	if (iCurrentState == 1) {
		stateList.clear();
		stateArray.push(4,3,2);
	}
	
	stateArray.forEach(function(code) {
		stateList.add(new java.lang.Integer(code));
	});
	
	// stateList reordenado: [4,3,2]
	return stateList;
}
  • iCurrentState: Sequência da atividade atual (Integer);
  • stateList: Lista das sequências das atividades (List<Integer>).  
Informações
  • Não é necessário criar todos os eventos do processo – apenas aqueles nos quais se tem interesse.
  • Todos os eventos são executados de forma persistente.
Nota
titleImportante!

Não é possível capturar (hAPI.getCardValue) ou adicionar (hAPI.setCardValue) dados no formulário na inicialização do processo, sendo possível somente a partir da segunda tarefa.

Para isso pode ser utilizada a seguinte lógica:

Bloco de código
languagejavascript
themeEclipse
firstline1
linenumberstrue
function beforeStateEntry(sequenceId) {
	if (sequenceId  != "NUMERO_DA_ATIVIDADE_INICIAL") {
		var campo = hAPI.getCardValue("campo1");
	}
}

docAPI

Para ter acesso a funções relacionadas a documentos é possível utilizar nos eventos a variável global docAPI. Os métodos disponíveis através da docAPI são:

MétodoEspecificação
copyDocumentToUploadArea(documentId, version)

Copia os arquivos físicos de um documento existente para a área de upload do usuário logado, onde:

  • documentId: id do documento a ser copiado;
  • version: versão do documento a ser copiado;

Retorno: Array de Strings contendo os nomes dos arquivos que foram disponibilizados na área de upload.

createDocument(document, attachments, securityConfig, approvers, relatedDocs)

Cria um novo documento no GED de acordo com os parâmetros informados, onde:

  • document: documento a ser criado;
  • attachments: lista de anexos do documento;
  • securityConfig: lista de configurações de segurança do documento;
  • approvers: lista de aprovadores do documento;
  • relatedDocs: lista de documentos relacionados ao documento;

Retorno: DocumentDto do documento criado.

Exemplo de utilização desta função em conjunto com a função copyDocumentToUploadArea:

Bloco de código
languagejavascript
themeEclipse
firstline1
linenumberstrue
function beforeStateEntry(sequenceId) {

	if (sequenceId == 5) {
		var attachments = hAPI.listAttachments();
		for ( var i = 0; i < attachments.size(); i++) {
			var docDto = attachments.get(i);

			if (docDto.getDocumentType() == "7") {
				
				docAPI.copyDocumentToUploadArea(docDto.getDocumentId(), docDto.getVersion());
		
				docDto.setDocumentId(0);
				docDto.setParentDocumentId(20);
		
				var attachArray = new java.util.ArrayList();
				var mainAttach = docAPI.newAttachment();
				mainAttach.setFileName(docDto.getPhisicalFile());
				mainAttach.setPrincipal(true);
				mainAttach.setAttach(false);
				attachArray.add(mainAttach);
		
				try {
					var doc = docAPI.createDocument(docDto, attachArray, null, null,null);
					log.info("DOCUMENTO CRIADO COM O ID: " + doc.getDocumentId());
			

docAPI

Para ter acesso a funções relacionadas a documentos é possível utilizar nos eventos a variável global docAPI. Os métodos disponíveis através da docAPI são:

Retorna o nível de permissão do usuário logado no documento informado, onde:

  • documentId: id do documento;
  • version: versão do documento;
    MétodoEspecificação
    copyDocumentToUploadArea(documentId, version)

    Copia os arquivos físicos de um documento existente para a área de upload do usuário logado, onde:

    • documentId: id do documento a ser copiado;
    • version: versão do documento a ser copiado;

    Retorno: Array de Strings contendo os nomes dos arquivos que foram disponibilizados na área de upload.

    createDocument(document, attachments, securityConfig, approvers, relatedDocs)

    Cria um novo documento no GED de acordo com os parâmetros informados, onde:

    • document: documento a ser criado;
    • attachments: lista de anexos do documento;
    • securityConfig: lista de configurações de segurança do documento;
    • approvers: lista de aprovadores do documento;
    • relatedDocs: lista de documentos relacionados ao documento;

    Retorno: DocumentDto do documento criado.

    Exemplo de utilização desta função em conjunto com a função copyDocumentToUploadArea:

    Bloco de código
    languagejavascript
    themeEclipse
    firstline1
    linenumberstrue
    function beforeStateEntry(sequenceId) {
    
    	if (sequenceId == 5) {
    		var attachments = hAPI.listAttachments();
    		for ( var i = 0; i < attachments.size(); i++) {
    			var docDto = attachments.get(i);
    
    			if (docDto.getDocumentType() == "7") {
    				
    				docAPI.copyDocumentToUploadArea(docDto.getDocumentId(), docDto.getVersion());
    		
    				docDto.setDocumentId(0);
    				docDto.setParentDocumentId(20);
    		
    				var attachArray = new java.util.ArrayList();
    				var mainAttach = docAPI.newAttachment();
    				mainAttach.setFileName(docDto.getPhisicalFile());
    				mainAttach.setPrincipal(true);
    				mainAttach.setAttach(false);
    				attachArray.add(mainAttach);
    		
    				try {
    					var doc = docAPI.createDocument(docDto, attachArray, null, null,null);
    					log.info("DOCUMENTO CRIADO COM O ID: " + doc.getDocumentId());
    				} catch (e) {
    					log.error("Problemas na criação do documento:\n" + e);
    				}
    			}
    		}
    	}
    }
    createFolder(document, securityConfig, approvers)

    Cria uma nova pasta no GED de acordo com os parâmetros informados, onde:

    • document: pasta a ser criada;
    • securityConfig: lista de configurações de segurança da pasta;
    • approvers: lista de aprovadores da pasta;

    Retorno: DocumentDto da pasta criada.

    Exemplo de utilização desta função:

    Bloco de código
    languagejavascript
    themeEclipse
    firstline1
    linenumberstrue
    function afterProcessFinish(processId) {
    	try {
    		var dto = docAPI.newDocumentDto();
    		dto.setDocumentDescription("Planilhas");
    		dto.setDocumentType("1");
    		dto.setParentDocumentId(20);
    		dto.setDocumentTypeId("");
    		
    		var folder = docAPI.createFolder(dto, null, null);
    		log.info("PASTA CRIADA COM O ID :" + folder.getDocumentId());
    	} catch (e) {
    					log.error("Problemas na criação dado pastadocumento:\n" + e);
    				}
    			}
    		}
    	}
    }
    createFolder(document, securityConfig, approvers)

    Cria uma nova pasta no GED de acordo com os parâmetros informados

    getDocumentVersion(documentId, version)

    Retorna o DocumentDto de um documento com base no seu id e sua versão, onde:

    • documentIddocument: id do documento pasta a ser retornadocriada;
    • version: versão do documento a ser retornado;

     

    getUserPermissions(documentId, version)
    isUserInGroup(group)

    Retorna se o usuário logado faz parte do grupo informado, onde:

    • group: código do grupo a ser verificado;
    newAttachment()

    Retorna uma nova instância de Attachment.

    newRelatedDocumentDto()

    Retorna uma nova instância de RelatedDocumentDto.

    newDocumentSecurityConfigDto()

    Retorna uma nova instancia de DocumentSecurityConfigDto.

    newApproverDto()

    Retorna uma nova instância de ApproverDto.

    newDocumentDto()

    Retorna uma nova instância de DocumentDto, com o tipo 2 (Documento) como padrão.

     

    Desenvolvimento de processo sob a plataforma

    Com o uso de eventos, o fluig permite que um processo seja desenvolvido sob a plataforma, possibilitando a execução de ações definidas pelo usuário, tais como:

    • validar o ato de completar uma atividade;
    • tomar decisões automaticamente;
    • realizar integrações com outros sistemas;
    • iniciar novas solicitações automaticamente.

    Existem algumas propriedades que contém informações referentes à solicitação que podem ser utilizadas no desenvolvimento do processo sob a plataforma, são elas:

    ParâmetroDescrição
    WKDefCódigo do processo.
    WKVersDefVersão do processo.
    WKNumProcesNúmero da solicitação de processo.
    WKNumStateNúmero da atividade.
    WKCompanyNúmero da empresa.
    WKUserCódigo do usuário corrente.
    WKUserCommentComentário feito pelo usuário na atividade ou no cancelamento da solicitação. Esse parâmetro irá retornar apenas o comentário da atividade corrente ou o texto informado durante o procedimento de cancelamento da solicitação.
    WKCompletTaskSe a tarefa foi completada (true/false).
    WKNextStateNúmero da próxima atividade (destino).
    WKCardIdCódigo do formulário do processo.
    WKFormIdCódigo da definição de formulário do processo.
    WKIdentityCompanyIdentificador da empresa selecionada para Experiências de uso TOTVS.
    WKMobileIdentifica se a ação foi realizada através de um dispositivo mobile.
    WKIsServiceIdentifica se a solicitação de cancelamento foi realizada através de um serviço. Esta variável só pode ser consultada nos eventos beforeCancelProcess e afterCancelProcess.
    WKUserLocaleIdentifica o idioma corrente do usuário.

     

    Além dessas propriedades já alimentadas pela plataforma, é possível criar propriedades desenvolvidas sob a plataforma que podem ser utilizadas nos eventos. O produto disponibiliza a variável globalVars, que é um mapa de dados (Map<String, String>) e estará disponível em todos os eventos.

    Para adicionar uma propriedade e seu valor, utilize o método globalVars.put("name", "value"), onde "name" é o nome da propriedade e "value" o seu valor. Exemplo: globalVars.put("WDAprovador","adm");

    Para recuperar os valores da variável globalVars, utilize o método globalVars.get("name"), onde "name" é o nome da propriedade a ser retornado o valor. Exemplo: globalVars.get("WDAprovador");

    • securityConfig: lista de configurações de segurança da pasta;
    • approvers: lista de aprovadores da pasta;

    Retorno: DocumentDto da pasta criada.

    Exemplo de utilização desta função:

    Bloco de código
    languagejavascript
    themeEclipse
    firstline1
    linenumberstrue
    function afterProcessFinish(processId) {
    	try {
    		var dto = docAPI.newDocumentDto();
    		dto.setDocumentDescription("Planilhas");
    		dto.setDocumentType("1");
    		dto.setParentDocumentId(20);
    		dto.setDocumentTypeId("");
    		
    		var folder = docAPI.createFolder(dto, null, null);
    		log.info("PASTA CRIADA COM O ID :" + folder.getDocumentId());
    	} catch (e) {
    		log.error("Problemas na criação da pasta:\n" + e);
    	}
    }
    
    getDocumentVersion(documentId, version)

    Retorna o DocumentDto de um documento com base no seu id e sua versão, onde:

    • documentId: id do documento a ser retornado;
    • version: versão do documento a ser retornado;

     

    getUserPermissions(documentId, version)

    Retorna o nível de permissão do usuário logado no documento informado, onde:

    • documentId: id do documento;
    • version: versão do documento;

    isUserInGroup(group)

    Retorna se o usuário logado faz parte do grupo informado, onde:

    • group: código do grupo a ser verificado;
    newAttachment()

    Retorna uma nova instância de Attachment.

    newRelatedDocumentDto()

    Retorna uma nova instância de RelatedDocumentDto.

    newDocumentSecurityConfigDto()

    Retorna uma nova instancia de DocumentSecurityConfigDto.

    newApproverDto()

    Retorna uma nova instância de ApproverDto.

    newDocumentDto()

    Retorna uma nova instância de DocumentDto, com o tipo 2 (Documento) como padrão.

     

    Desenvolvimento de processo sob a plataforma

    Com o uso de eventos, o fluig permite que um processo seja desenvolvido sob a plataforma, possibilitando a execução de ações definidas pelo usuário, tais como:

    • validar o ato de completar uma atividade;
    • tomar decisões automaticamente;
    • realizar integrações com outros sistemas;
    • iniciar novas solicitações automaticamente.

    Existem algumas propriedades que contém informações referentes à solicitação que podem ser utilizadas no desenvolvimento do processo sob a plataforma, são elas:

    ParâmetroDescrição
    WKDefCódigo do processo.
    WKVersDefVersão do processo.
    WKNumProcesNúmero da solicitação de processo.
    WKNumStateNúmero da atividade.
    WKCompanyNúmero da empresa.
    WKUserCódigo do usuário corrente.
    WKUserCommentComentário feito pelo usuário na atividade ou no cancelamento da solicitação. Esse parâmetro irá retornar apenas o comentário da atividade corrente ou o texto informado durante o procedimento de cancelamento da solicitação.
    WKCompletTaskSe a tarefa foi completada (true/false).
    WKNextStateNúmero da próxima atividade (destino).
    WKCardIdCódigo do formulário do processo.
    WKFormIdCódigo da definição de formulário do processo.
    WKIdentityCompanyIdentificador da empresa selecionada para Experiências de uso TOTVS.
    WKMobileIdentifica se a ação foi realizada através de um dispositivo mobile.
    WKIsServiceIdentifica se a solicitação de cancelamento foi realizada através de um serviço. Esta variável só pode ser consultada nos eventos beforeCancelProcess e afterCancelProcess.
    WKUserLocaleIdentifica o idioma corrente do usuário.

     

    Além dessas propriedades já alimentadas pela plataforma, é possível criar propriedades desenvolvidas sob a plataforma que podem ser utilizadas nos eventos. O produto disponibiliza a variável globalVars, que é um mapa de dados (Map<String, String>) e estará disponível em todos os eventos.

    Para adicionar uma propriedade e seu valor, utilize o método globalVars.put("name", "value"), onde "name" é o nome da propriedade e "value" o seu valor. Exemplo: globalVars.put("WDAprovador","adm");

    Para recuperar os valores da variável globalVars, utilize o método globalVars.get("name"), onde "name" é o nome da propriedade a ser retornado o valor. Exemplo: globalVars.get("WDAprovador");

    Deck of Cards
    effectDuration0.5
    historyfalse
    idsamples
    effectTypefade
    Card
    defaulttrue
    id1
    labelExemplo 1

    Para validar se o usuário está completando uma atividade corretamente, basta utilizar o evento beforeTaskSave e retornar alguma mensagem caso queira disparar um erro. Por exemplo, segue parte de um código de desenvolvimento de um processo sob a plataforma:

    Bloco de código
    languagejavascript
    themeEclipse
    firstline1
    linenumberstrue
    function beforeTaskSave(colleagueId, nextSequenceId, userList) {
    	var ativAtual = getValue("WKNumState");
    	var process = parseInt(globalVars.get("process"));
    	
    	var resp1 = hAPI.getCardValue("resp1_H");
    	var eficacia1 = hAPI.getCardValue("eficaz1");  
    	var controle1 = hAPI.getCardValue("controle1");
    	var eficaz = true;
    
    	var users = new java.util.ArrayList(
    Deck of Cards
    effectDuration0.5
    historyfalse
    idsamples
    effectTypefade
    Card
    defaulttrue
    id1
    labelExemplo 1

    Para validar se o usuário está completando uma atividade corretamente, basta utilizar o evento beforeTaskSave e retornar alguma mensagem caso queira disparar um erro. Por exemplo, segue parte de um código de desenvolvimento de um processo sob a plataforma:

    Bloco de código
    languagejavascript
    themeEclipse
    firstline1
    linenumberstrue
    function beforeTaskSave(colleagueId, nextSequenceId, userList) {
    	var ativAtual = getValue("WKNumState");
    	var process = parseInt(globalVars.get("process"));
    	
    	var resp1 = hAPI.getCardValue("resp1_H");
    	var eficacia1 = hAPI.getCardValue("eficaz1");  
    	var controle1 = hAPI.getCardValue("controle1");
    	var eficaz = true;
    
    	var users = new java.util.ArrayList();
    
    	if (ativAtual == 7 && nextSequenceId == 12) {
    		if (resp1 != "" && eficacia1 != "1" && eficacia1 != "2") {
    			if (verificaUsuario(users, resp1)) {
    				users.add(resp1);
    			}
    		}
    
    		hAPI.setAutomaticDecision(8, users, "Decisao tomada automaticamente pelo Fluig.");
    	
    	} else if (ativAtual == 9 && nextSequenceId == 13) {
    		if (resp1 != "" && eficacia1 == "2" && controle1 == ""){
    			eficaz = false;
    		}
    
    		if (eficaz) {
    			var codGrupo = buscaGrupo(process, "Qualidade");
    			users.add("Pool:Group:" + codGrupo);
    			hAPI.setAutomaticDecision(6, users , "Decisao tomada automaticamente pelo Fluig.");
    		}
    	}
    }
    Card
    id2
    labelExemplo 2

    Para fazer com que uma decisão seja tomada automaticamente, os seguintes procedimentos devem ser executados:

    1. Adicionar na Extensão do Processo a propriedade AutomaticTasks com a lista de todas as atividades que terão decisão delegada via desenvolvimento sob a plataforma. Exemplo: AutomaticTasks=3,6,10.
    2. Implementar o evento beforeStateEntry e executar o método "setAutomaticDecision" da hAPI, passando como parâmetros a próxima atividade, o próximo usuário (ou lista de usuários) e uma observação.

     

    Bloco de código
    languagejavascript
    themeEclipse
    firstline1
    linenumberstrue
    function beforeStateEntry(sequenceId) {    
    	var userList = new java.util.ArrayList();
    	userList.add("adm");
    	hAPI.setAutomaticDecision(6, userList, "Decisao tomada automaticamente pelo Fluig.");
    }
    Informações

    As atividades com decisão automática também podem ser criadas via editor de processo.

    Card
    id3
    labelExemplo 3

    Para iniciar uma nova solicitação de um outro processo ao finalizar uma solicitação podem ser executados os seguintes procedimentos:

    1. Cadastrar um serviço no fluig em que a URL seja o WSDL do serviço ECMWorkflowEngineService.
    2. Implementar o evento afterProcessFinish utilizando o exemplo abaixo, sendo ‘process2’ o novo processo a ser inicializado.

    Bloco de código
    languagejs
    themeEclipse
    firstline1
    linenumberstrue
    function afterProcessFinish(processId) {
    	
    	// Servico <url_fluig>/webdesk/ECMWorkflowEngineService?wsdl
    	// Busca o webservice cadastrado com o código "WorkflowEngineService"
    	var workflowEngineServiceProvider = ServiceManager.getServiceInstance("WorkflowEngineService");
    	var workflowEngineServiceLocator = workflowEngineServiceProvider.instantiate("com.totvs.technology.ecm.workflow.ws.ECMWorkflowEngineServiceService");
    	var workflowEngineService = workflowEngineServiceLocator.getWorkflowEngineServicePort();
     
    	// Cria o ProcessAttachmentDtoArray
    	var processAttachmentDtoArray = workflowEngineServiceProvider.instantiate("com.totvs.technology.ecm.workflow.ws.ProcessAttachmentDtoArray");
    
    	// Cria o ObjectFactory
    	var objectFactory = workflowEngineServiceProvider.instantiate("net.java.dev.jaxb.array.ObjectFactory");
    	
    	// Cria um String[][]
    	var cardData = objectFactory.createStringArrayArray();
    	
    	// Cria uma solicitação
    	workflowEngineService.simpleStartProcess("adm", "adm", 1, "process2", "Comment", processAttachmentDtoArray, cardData);	
    }
    Informações

    Existem outros métodos parar iniciar uma solicitação, consulte-os aqui.

    Lembre-se de consultar a classe ObjectFactory do serviço, essa classe possui diversos métodos para criar instância de objetos necessários para utilização do serviço.

    ...

    Bloco de código
    languagejavascript
    themeEclipse
    var vCodProcess = getValue("WKDef");

     

    Eventos para validação de formulário

    Em processos que possuem um formulário desenvolvido sob a plataforma é possível implementar funções JavaScript dentro do formulário, para serem executadas automaticamente durante a movimentação do processo.

     

    Estão disponíveis:

    Eclipse
    var vCodProcess = getValue("WKDef");

     

    Eventos para validação de formulário

    Em processos que possuem um formulário desenvolvido sob a plataforma é possível implementar funções JavaScript dentro do formulário, para serem executadas automaticamente durante a movimentação do processo.

     

    Estão disponíveis:

    É executada quando o usuário pressiona o botão Movimentar antes de serem exibidas as opções de movimentação do processo.

    Se o fluxo não necessitar da interação do usuário, este método não será executado!   sejam exibidos erros personalizados ExemplobeforeMovementOptionsbeforeMovementOptions valor campo Email +document.formulario.email.value); if(document.cad01.nome.value === 'false'){ return false; } if(document.cad01.nome.value !== ''){ " + document.formulario.nome.value } }
    EventoDescrição
    beforeMovementOptions

    É executada quando o usuário pressiona o botão Movimentar antes de serem exibidas as opções de movimentação do processo.

    Nota

    Se o fluxo não necessitar da interação do usuário, este método não será executado!  

    Parâmetros:

    • numState: número da atividade atual.

    Opcionais:

    • return false: impedirá a execução do processo. Esta opção permite que sejam exibidos erros personalizados no formulário.
    • throw(“Erro”): impedirá a execução e exibirá uma tela de erro padrão do fluig com o texto informado.

    Exemplo:

    Bloco de código
    languagejs
    themeEclipse
    firstline1
    linenumberstrue
    var beforeMovementOptions = function(numState){
    	console.log("-beforeMovementOptions-");
    	console.log("numState: " + numState);	
    	console.log("valor campo Email: " +document.formulario.email.value);
    	if(document.cad01.nome.value === 'false'){
    		return false;
    	}
    	if(document.cad01.nome.value !== ''){
    		throw("Erro " + document.formulario.nome.value);
    	}
    }
    beforeSendValidate

    Ocorre antes da solicitação ser movimentada, após já ter sido selecionada a atividade destino, o usuário e demais informações necessárias à solicitação.

    EventoDescrição
    beforeMovementOptions
    Nota

    Parâmetros:

    • numState: número da atividade atual.
    • nextState: número da atividade destino.

    Opcionais:

    • return false: impedirá a execução do processo. Esta opção permite que
    • seja exibido um erro personalizado no formulário.
    • throw(“Erro”): impedirá a execução e exibirá uma tela de erro padrão do fluig com o texto informado.

    Exemplos:

    Bloco de código
    languagejs
    themeEclipse
    firstline1
    linenumberstrue
    var 
    beforeSendValidate = function(numState,nextState){
    	console.log("-
    beforeSendValidate-");
    	console.log("numState: " + numState);
    
    	console.log("
    nextState: "
     + nextState);	
    	throw("Erro 
    Xyz");
    
    beforeSendValidate

    Ocorre antes da solicitação ser movimentada, após já ter sido selecionada a atividade destino, o usuário e demais informações necessárias à solicitação.

    Parâmetros:

    • numState: número da atividade atual.
    • nextState: número da atividade destino.

    Opcionais:

    • return false: impedirá a execução do processo. Esta opção permite que seja exibido um erro personalizado no formulário.
    • throw(“Erro”): impedirá a execução e exibirá uma tela de erro padrão do fluig com o texto informado.

    Exemplos:

    Bloco de código
    languagejs
    themeEclipse
    firstline1
    linenumberstrue
    var beforeSendValidate = function(numState,nextState){
    	console.log("-beforeSendValidate-");
    	console.log("numState: " + numState);
    	console.log("nextState: " + nextState);	
    	throw("Erro Xyz");
    }
    Bloco de código
    languagejs
    themeEclipse
    firstline1
    linenumberstrue
    var beforeSendValidate = function(numState,nextState){
    	console.log("-beforeSendValidate-");
    	console.log("numState: " + numState);
    	console.log("nextState: " + nextState);	
    	var isOk = confirm("Deseja realmente enviar o processo ?");
    	return isOk;
     }

    ...

    titleMais informações

    Sobre personalização de notificações e e-mail acompanhe informações detalhadas em:

    }
    Bloco de código
    languagejs
    themeEclipse
    firstline1
    linenumberstrue
    var beforeSendValidate = function(numState,nextState){
    	console.log("-beforeSendValidate-");
    	console.log("numState: " + numState);
    	console.log("nextState: " + nextState);	
    	var isOk = confirm("Deseja realmente enviar o processo ?");
    	return isOk;
     }
    Nota
    titleMais informações

    Sobre personalização de notificações e e-mail acompanhe informações detalhadas em:

     

     

    function validateAvailableStates(iCurrentState,stateList){ // Códido: 1 - Descrição: Atividade inicial // Códido: 2 - Descrição: Atividade ordem 3 // Códido: 3 - Descrição: Atividade ordem 2 // Códido: 4 - Descrição: Atividade ordem 1  // stateList atual: [2,3,4]
     var stateArray = new Array();  if (iCurrentState == 1) { stateList.clear(); stateArray.push(4,3,2); }  stateArray.forEach(function(code) { stateList.add(new java.lang.Integer(code)); });  // stateList reordenado: [4,3,2] log.info(stateList); return stateList;}

    ...