Árvore de páginas

Versões comparadas

Chave

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

...

Deck of Cards
effectDuration0.5
idsamples
historyfalse
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
themeEclipse
languagejavascript
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
themeEclipse
languagejavascript
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
themeEclipse
languagejs
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("comnet.totvsjava.technologydev.ecmjaxb.workflow.wsarray.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.

...