Índice | ||||||||
---|---|---|---|---|---|---|---|---|
|
...
Com o uso de eventos, o ECM permite que um processo seja customizado possibilitando a execução de ações definidas pelo usuário, tais como:
...
Bloco de código |
---|
function afterProcessFinish(processId){ var func = { run: function(){ a(); } }; var r = new java.lang.Runnable(func); var t = new java.lang.Thread(r); t.start(); log.info("Iniciei a thread"); return; } function a(){ try { var atividade = getValue("WKNumState"); var user = getValue("WKUser"); var processo = getValue("WKNumProces"); log.info("########## Atividade: " + atividade); log.info("########## inicio webservice workflow"); var workflow = ServiceManager.getService("WorkflowEngineService"); var serviceHelper = workflow.getBean(); var serviceLocator = serviceHelper.instantiate("com.datasul.technology.webdesk.workflow.ws.WorkflowEngineServiceServiceLocator"); var service = serviceLocator.getWorkflowEngineServicePort(); log.info("########## carregou serviço workflow"); log.info("########## Carrega Colaboradores do segundo processo"); var stringArray = service.getAvailableUsersStart("adm", "adm", 1, "process2", 0, 0); var field1 = serviceHelper.instantiate("com.datasul.technology.webdesk.workflow.ws.KeyValueDto"); field1.setKey("nome"); field1.setValue("valorNome"); var field2 = serviceHelper.instantiate("com.datasul.technology.webdesk.workflow.ws.KeyValueDto"); field2.setKey("cid"); field2.setValue("valorCidade"); var resultArr = serviceHelper.instantiate("com.datasul.technology.webdesk.workflow.ws.KeyValueDtoArray"); resultArr.setItem(new Array(field1, field2)); log.info("########## Inicia StartProcess"); var userArray = serviceHelper.instantiate("net.java.dev.jaxb.array.StringArray"); userArray.setItem(new Array(user)); log.info("########## Usuario: " + userArray.getItem(0)); try { var ret = service.startProcessClassic("adm", "adm", 1, "process2", 2, userArray , "webservice chamada", "adm", false, null,resultArr, null, true); } catch(e) { log.info("########## Erro startProcess: " + e); } } catch(x) { log.info("########## Erro Process: " + x); } } |
As exceções podem ser tratadas nos seguintes eventos: beforeStateEntry, beforeTaskSave e beforeCancelProcess. O tratamento da exceção no evento beforeStateEntry pode ser utilizado somente na inicialização de solicitações, pois ele impede que a solicitação seja iniciada. O tratamento da exceção no evento beforeTaskSave pode ser utilizado somente se a solicitação já estiver inicializada. Abaixo segue os modelos para utilização em cada um dos eventos:
...
Bloco de código |
---|
function beforeTaskSave(colleagueId,nextSequenceId,userList){ if(getValue("WKUserComment")==null || getValue("WKUserComment")=="") throw "A observação deve ser preenchida"; } function beforeCancelProcess(colleagueId,processId){ if(getValue("WKUserComment")==null || getValue("WKUserComment")=="") throw "A observação deve ser preenchida"; } |
Os mecanismos de atribuição são instrumentos utilizados durante um processo de workflow que permitem criar, segundo um critério estabelecido pelo próprio mecanismo, uma lista de possíveis colaboradores para uma atividade. Esta lista pode ser utilizada em dois momentos:
1. Na inicialização do processo, onde o sistema verifica se o usuário corrente faz parte desta lista e, portanto, pode iniciá-lo;
2. No momento do encaminhamento de uma tarefa, quando esta lista é apresentada ao usuário corrente com opções de encaminhamento da solicitação.
No primeiro caso, a lista é gerada de acordo com o mecanismo de atribuição existente na primeira atividade do processo (que representa a atividade de start). Nas demais atividades é adotado o segundo procedimento. Quando não houver um mecanismo de atribuição associado a uma atividade (seja ela inicial ou não), todos os usuários são considerados válidos.
Na inicialização do ECM são criados alguns mecanismos automaticamente, conforme abaixo:
...
O mecanismo de atribuição geralmente é composto de duas partes, a tela de configuração e o script de resolução do mecanismo de atribuição.
...
Para processos que possuem um fichário padrão definido são passados alguns parâmetros com informações sobre o processo para serem utilizados nas customizações do fichário, conforme abaixo:
...
var vCodProcess = getValue("WKDef");
É possível incluir customizações de e-mail durante o andamento de um Workflow. Existem duas modalidades de customização nessa categoria:
...