...
Deve-se utilizar os botões Adicionar novo Atributo, para adicionar uma propriedade de extensão. Abaixo o formulário para a criação de um novo atributo.
...
Na imagem a seguir é possível visualizar o atributo adicionado, definindo as atividades 2 e 4 (separadas por virgulavírgula) como atividades automáticas do processo.
...
Para criar um novo evento do processo, clicar com o botão direito do mouse no projeto, acessar a opção New e em seguida a opção Other. No assistente aberto, selecionar a opção "Script Evento Workflow", presente na pasta Fluig, e clicar no botão Next. Na nova tela selecionar qual o evento que será criado e relacionar ele a um processo já existente. Para finalizar, clicar no botão Finish:
hAPI
Em todos os eventos do processo é possível obter informações da API de Workflow. Cada evento possui acesso ao handle da API de workflow através da variável global hAPI. Os seguintes métodos estão disponíveis através da hAPI:
...
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 |
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ó poderá ser consultada nos eventos beforeCancelProcess e afterCancelProcess. |
WKUserLocale | Identifica o idioma corrente do usuário. |
Além dessas propriedades já alimentadas pelo produto, é possível criar propriedades customizadas 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.
...
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 em Propriedades Avançadas 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
|
|
...