...
Evento | Descrição | Parâ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).
|
afterStateEntry | Ocorre após a entrada em uma nova atividade. | - Sequência da atividade (Integer).
|
afterStateLeave | Ocorre 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>).
|
afterTaskCreate | Ocorre 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).
|
beforeStateEntry | Ocorre antes da entrada em uma nova atividade. | - Sequência da atividade (Integer).
|
beforeStateLeave | Ocorre 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 |
---|
| 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>).
|
beforeTaskCreate | Ocorre 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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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 |
---|
| 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).
|
subProcessCreated | Ocorre 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.
|
...
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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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 |
---|
|
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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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étodo | Especificaçã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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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:
Método | Especificaçã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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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) | 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âmetro | Descrição |
---|
WKDef | Código do processo. |
WKVersDef | Versão do processo. |
WKNumProces | Número da solicitação de processo. |
WKNumState | Número da atividade. |
WKCompany | Número da empresa. |
WKUser | Código do usuário corrente. |
WKUserComment | Comentá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. |
WKCompletTask | Se a tarefa foi completada (true/false). |
WKNextState | Número da próxima atividade (destino). |
WKCardId | Código do formulário do processo. |
WKFormId | Código da definição de formulário do processo. |
WKIdentityCompany | Identificador da empresa selecionada para Experiências de uso TOTVS. |
WKMobile | Identifica se a ação foi realizada através de um dispositivo mobile. |
WKIsService | Identifica 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. |
WKUserLocale | Identifica 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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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âmetro | Descrição |
---|
WKDef | Código do processo. |
WKVersDef | Versão do processo. |
WKNumProces | Número da solicitação de processo. |
WKNumState | Número da atividade. |
WKCompany | Número da empresa. |
WKUser | Código do usuário corrente. |
WKUserComment | Comentá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. |
WKCompletTask | Se a tarefa foi completada (true/false). |
WKNextState | Número da próxima atividade (destino). |
WKCardId | Código do formulário do processo. |
WKFormId | Código da definição de formulário do processo. |
WKIdentityCompany | Identificador da empresa selecionada para Experiências de uso TOTVS. |
WKMobile | Identifica se a ação foi realizada através de um dispositivo mobile. |
WKIsService | Identifica 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. |
WKUserLocale | Identifica 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 |
---|
effectDuration | 0.5 |
---|
history | false |
---|
id | samples |
---|
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 desenvolvimento de um processo sob a plataforma: Bloco de código |
---|
language | javascript |
---|
theme | Eclipse |
---|
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( |
|
|
Deck of Cards |
---|
effectDuration | 0.5 |
---|
history | false |
---|
id | samples |
---|
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 desenvolvimento de um processo sob a plataforma: Bloco de código |
---|
language | javascript |
---|
theme | Eclipse |
---|
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 desenvolvimento sob a plataforma. 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 |
---|
language | javascript |
---|
theme | Eclipse |
---|
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 podem 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 |
---|
language | js |
---|
theme | Eclipse |
---|
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("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 |
---|
language | javascript |
---|
theme | 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:
|
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:
Evento | Descriçã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 |
---|
language | js |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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. |
Evento | Descriçã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.
- nextState: número da atividade destino.
Opcionais: - return false: impedirá a execução do processo. Esta opção permite que
| sejam exibidos erros personalizados - 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.
| ExemploExemplos: Bloco de código |
---|
language | js |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| var |
| beforeMovementOptionsbeforeSendValidate = function(numState,nextState){
console.log("- |
| beforeMovementOptionsbeforeSendValidate-");
console.log("numState: " + numState); |
| | valor campo Email | +document.formulario.email.value);
if(document.cad01.nome.value === 'false'){
return false;
}
if(document.cad01.nome.value !== ''){
+ nextState);
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. 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 |
---|
language | js |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| var beforeSendValidate = function(numState,nextState){
console.log("-beforeSendValidate-");
console.log("numState: " + numState);
console.log("nextState: " + nextState);
throw("Erro Xyz");
} |
Bloco de código |
---|
language | js |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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;
} |
|
...
Sobre personalização de notificações e e-mail acompanhe informações detalhadas em:
Bloco de código |
---|
language | js |
---|
theme | Eclipse |
---|
firstline | 1 |
---|
linenumbers | true |
---|
| 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 |
---|
|
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;}
...