...
Deck of Cards |
---|
effectDuration | 0.5 |
---|
id | samples |
---|
history | false |
---|
effectType | fade |
---|
|
Card |
---|
default | true |
---|
id | 1 |
---|
label | Exemplo 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 customização para um processo: Bloco de código |
---|
theme | Eclipse |
---|
language | javascript |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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 |
---|
| Para fazer com que uma decisão seja tomada automaticamente, os seguintes procedimentos devem ser executados: - Adicionar na Extensão do Processo a propriedade AutomaticTasks com a lista de todas as atividades que terão decisão delegada via customização. Exemplo: AutomaticTasks=3,6,10.
- 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 |
---|
theme | Eclipse |
---|
language | javascript |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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 |
---|
| Para iniciar uma nova solicitação de um outro processo ao finalizar uma solicitação pode ser executados os seguintes procedimentos: - Cadastrar um serviço no Fluig em que a URL seja o WSDL do serviço ECMWorkflowEngineService.
- Implementar o evento afterProcessFinish utilizando o exemplo abaixo. Sendo ‘process2’ o novo processo a ser inicializado
Bloco de código |
---|
theme | Eclipse |
---|
language | js |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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("com.totvs.technology.ecm.workflow.ws.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. |
|
|
Tratamento de Exceções
As exceções podem ser tratadas nos seguintes eventos: beforeStateEntry, beforeTaskSave e beforeCancelProcess. O tratamento de exceção no evento beforeStateEntry pode ser utilizado na inicialização de solicitações, pois ele impede que a solicitação seja iniciada. O tratamento de exceção no evento beforeTaskSave pode ser utilizado somente se a solicitação já estiver inicializada.
...