Customização de Workflow - Fluig - TDN

download Customização de Workflow - Fluig - TDN

of 14

Transcript of Customização de Workflow - Fluig - TDN

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    1/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 1/14

    ndice

    1 Customizao de Workflow1.1 Propriedades Avanadas1.2 Eventos do Processo1.3 Customizao do Processo1.4 Tratamento de Excees1.5 Mecanismo de Atribuio1.6 Como criar um Mecanismo de Atribuio1.7 Parmetros Workflow para Customizao de Formulrios

    1.8 Customizao de E-mail1.8.1 Envio de E-mail Padro1.8.2 Envio de E-mail Customizado

    2 Third Party Trademarks

    Customizao de Workflow

    Propriedades Avanadas

    s propriedades avanadas contm informaes especiais que podem alterar o comportamento padro do processo em algum ponto.

    Elas devem ser utilizadas principalmente durante a fase de customizao ou conter "flags" especiais que alterem alguma lgica interna(apenas em casos especiais).

    O cadastro de propriedades avanadas do processo realizado pelo Fluig Studio, sendo necessrio que o diagrama do processo j estejacriado. Para cadastrar uma propriedade avanada, necessrio abrir o processo para edio, e na viso Properties acessar a opo

    vanado:

    Deve se utilizar os botes Adicionar, Editar e Excluir para a manuteno das propriedades avanadas do processo. Uma propriedadeavanada representada por nome e valor, onde o nome deve ser nico. Abaixo o formulrio para a criao de uma propriedade avanada:

    Customizao de Workflow

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818http://www.fluig.com/
  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    2/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 2/14

    Eventos do Processo

    Os eventos de um processo so um conjunto de scripts carregados pela API de workflow. Tais scripts so desenvolvidos com o uso dalinguagem JavaScript e chamados ao longo da execuo do processo em momentos pr-determinados, como por exemplo a criao dasolicitao do processo ou a entrada em uma nova atividade.

    implementao dos eventos do processo realizada pelo Fluig Studio, sendo necessrio j existir um projeto Fluig com pelo menos umdiagrama de processo.

    Para criar um novo evento do processo, clicar com o boto direito do mouse no projeto, acessar a opo New e em seguida a opo

    Other. No assistente aberto, selecionar a opo "Script Evento Workflow",presente na pasta Fluig, e clicar no boto Next. Na nova telaselecionar qual o evento que ser criado e relacionar ele a um processo j existente. Para finalizar, clicar no boto Finish:

    Em todos os eventos do processo possvel obter informaes da API de Workflow. Cada evento possui acesso ao handle da API deorkflow atravs da varivel global hAPI. Os seguintes mtodos esto disponveis atravs da hAPI:

    Mtodo Especificao

    getCardValue("nomeCampo") Permite acessar o valor de um campo do formulrio do processo, onde:

    nomeCampo: nome do campo do formulrio.

    setCardValue("nomeCampo","valor")

    Permite definir o valor de um campo do formulrio do processo, onde:

    nomeCampo: nome do campo do formulrio;valor: valor a ser definido para o campo do formulrio.

    setAutomaticDecision(numAtiv,listaColab, "obs")

    Permite definir o fluxo de sada de uma atividade de forma automtica, onde:

    numAtiv: nmero da atividade destino;listaColab: lista (do tipo String) dos usurios que recebero a tarefa;obs: observao da tarefa;

    getActiveStates() Retorna uma lista das atividades ativas do processo.

    getActualThread(numEmpresa,numProcesso, numAtiv)

    Retorna a thread da atividade que est ativa, lembrando que em caso de atividades paralelas,retorna 0, 1, 2 e assim sucessivamente.

    numEmpresa: nmero da empresa;numProcesso: nmero da solicitao;

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    3/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 3/14

    numAtiv: nmero da atividade.

    Exemplo de uso para esta funo:

    setDueDate(numProcesso,numThread, "userId",dataConclusao, tempoSeg)

    Permite alterar o prazo de concluso para uma determinada atividade do processo, onde:

    numProcesso: nmero da solicitao;numThread: nmero da thread (normalmente 0, quando no se utiliza atividades paralelas);userId: o usurio responsvel pela tarefa;dataConclusao: a nova data de concluso;tempoSeg: tempo que representa a nova hora de concluso, calculado em segundos aps ameia-noite.

    Recomendamos a utilizao deste mtodo no evento afterTaskCreate, pois serexecutado logo aps a criao da tarefa. Exemplo:

    transferTask(transferUsers, "obs",int numThread)

    Transfere uma tarefa de um usurio para outro(s) usurio(s).

    transferUsers: lista (do tipo String) de usurios;obs: a observao;

    1234

    5678910111213141516171819

    20

    functionafterTaskCreate(colleagueId) {

    varnrProxAtividade = getValue("WKNextState"); if(nrProxAtividade == "5"){ //atividade entre paralelas

    vardata = newDate(); varnumEmpresa = getValue("WKCompany");

    //seta o dia, ms (Janeiro 0) e ano data.setDate(20); data.setMonth(10); data.setFullYear(2010);

    // Recupera o numero da solicitao varnumProcesso = getValue("WKNumProces");

    // Seta o prazo para as 14:00 hAPI.setDueDate(numProcesso,hAPI.getActualThread(numEmpresa, numProcesso, nrProxAtividade),

    colleagueId, data, 50400); }}

    1234567891011121314

    functionafterTaskCreate(colleagueId) { vardata = newDate();

    //seta o dia, ms (Janeiro 0) e ano data.setDate(20); data.setMonth(10); data.setFullYear(2010);

    // Recupera o numero da solicitao varprocesso = getValue("WKNumProces");

    // Seta o prazo para as 14:00 hAPI.setDueDate(processo, 0, colleagueId, data, 50400);}

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    4/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 4/14

    numThread: sequncia da thread, em caso de atividades paralelas.

    transferTask(transferUsers, "obs") Transfere uma tarefa de um usurio para outro(s) usurio(s). Este mtodo no pode ser usadoem processos com atividades paralelas:

    transferUsers: lista (do tipo String) de usurios;obs: a observao.

    startProcess(processId, ativDest,listaColab, "obs", completarTarefa,valoresForm, modoGestor)

    Inicia uma solicitao workflow, onde:

    processId: cdigo do processo;

    ativDest: atividade de destino;listaColab: lista (do tipo String) de usurios;obs: texto da observao;completarTarefa: indica se deve completar a tarefa (true) ou apenas salvar (false);valoresForm: um Mapa com os valores do formulrio do processo;modoGestor: acesso como gestor do processo (true/false).

    Retorna um mapa com informaes da solicitao criada. Entre elas, o iProcess que o nmeroda solicitao criada.

    setColleagueReplacement(userId) Seta um usurio substituto, onde:

    userId: cdigo do usurio substituto.

    setTaskComments("userId",numProcesso, numThread, "obs")

    Define uma observao para uma determinada tarefa do processo, onde:

    userId: usurio responsvel pela tarefa;numProcesso: nmero da solicitao de processo;numThread: o nmero da thread (normalmente 0, quando no se utiliza atividades paralelas);obs: a observao.

    getCardData(numProcesso) Retorna um Mapa com todos os campos e valores do formulrio da solicitao.

    numProcesso: nmero da solicitao de processo.

    getAdvancedProperty("propriedade") Retorna o valor da propriedade avanada de um processo.

    propriedade: nome da propriedade avanada.

    calculateDeadLineHours(data,

    segundos, prazo, periodId)

    Calcula um prazo a partir de uma data com base no expediente e feriados cadastrados no

    produto passando o prazo em horas:

    data: Data inicial (tipo Date);segundos: Quantidade de segundos aps a meia noite;prazo: Prazo que ser aplicado em horas (tipo int);periodId: Cdigo de Expediente.

    Retorno: Array de Objeto, onde a primeira posio do array a data e a segunda a hora.

    Exemplo:

    12

    34567891011121314

    functionafterTaskCreate(colleagueId) { vardata = newDate();

    //Calcula o prazo

    varobj = hAPI.calculateDeadLineHours(data, 50000, 2,"Default"); vardt = obj[0]; varsegundos = obj[1];

    //Recupera o numero da solicitao varprocesso = getValue("WKNumProces");

    //Altera o prazo do processo hAPI.setDueDate(processo,0,colleagueId, dt, segundos);}

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    5/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 5/14

    calculateDeadLineTime(data,segundos, prazo, periodId)

    Calcula um prazo a partir de uma data com base no expediente e feriados cadastrados noproduto passando o prazo em minutos:

    data: Data inicial (tipo Date);segundos: Quantidade de segundos aps a meia noite;prazo: Prazo que ser aplicado em minutos (tipo int).periodId - Cdigo de Expediente

    Retorno: Array de Objeto, onde a primeira posio do array a data e a segunda a hora.

    Exemplo:

    getUserTaskLink(numAtiv) Permite buscar o link para movimentao de uma determinada atividade, e utiliz-lo para enviarum e-mail com template customizado, por exemplo.

    numAtiv: nmero da atividade

    Retorno: link para movimentao da solicitao.

    Ateno

    Este mtodo no retorna link para atividades que ainda no foram criadas, ou seja, nopode ser utilizado em eventos comoafterTaskComplete(colleagueId,nextSequenceId,userList) para obter o link da atividadecom "nextSequenceId".

    Exemplo:

    1234

    5678910111213

    functionafterTaskCreate(colleagueId) { vardata = newDate(); //Calcula o prazo varobj = hAPI.calculateDeadLineTime(data, 50000, 120,

    "Default"); vardt = obj[0]; varsegundos = obj[1];

    //Recupera o numero da solicitao varprocesso = getValue("WKNumProces");

    // Altera o prazo do processo hAPI.setDueDate(processo,0,colleagueId, dt, segundos);}

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    6/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 6/14

    Nos eventos existe a possibilidade de integrao com servios de dados. Tais servios podem ser WebServices, AppServer Progress eDataset.

    O acesso a WebServices ou AppServer Progress deve ser previamente configurado no cadastro de Servios. Para mais detalhesconsulte em Integrao Com Aplicativos Externos, no captulo "Acessando WebServices a partir do Fluig".

    baixo um exemplo de como executar o WebService de Colleague para criar um usurio no Fluig aps executar uma tarefa:

    Os seguintes eventos so disparados pela API de Workflow:

    Evento Descrio Parmetros

    afterCancelProcess Ocorre aps o cancelamento da solicitao. Usurio corrente

    (String);Nmero doprocesso(Integer).

    afterProcessCreate Ocorre logo aps a criao de um novo processo. Nmero do novo

    12345678910

    111213

    functionafterTaskCreate(colleagueId) { varsequenceId = getValue("WKCurrentState"); if(sequenceId == 2) { vardestinatarios = newjava.util.ArrayList(); destinatarios.add(colleagueId);

    varparametros = newjava.util.HashMap(); parametros.put("WDK_CompanyId", getValue("WKCompany")); parametros.put("WDK_TaskLink",hAPI.getUserTaskLink(sequenceId));

    notifier.notify(getValue("WKUser"), "tplCustomizado",

    parametros, destinatarios, "text/html");}

    }

    123456789101112

    131415161718192021222324252627

    282930

    functionafterTaskComplete(colleagueId, nextSequenceId, userList) {

    if(nextSequenceId == 2) { //Busca o webservices de Colaborador varcolleagueServiceProvider = ServiceManager.getServiceInstance("Colleague"); varcolleagueServiceLocator =colleagueServiceProvider.instantiate("com.totvs.technology.ecm.foundation.ws.ECMColleagueServiceService" varcolleagueService = colleagueServiceLocator.getColleagueServicePort();

    //Cria o ColleagueDto Verificar a lista de mtodos na visualizao do servio varcolleagueDto =colleagueServiceProvider.instantiate("com.totvs.technology.ecm.foundation.ws.ColleagueDto" );

    colleagueDto.setCompanyId(1); colleagueDto.setColleagueId("teste"); colleagueDto.setColleagueName("Usuario Teste"); colleagueDto.setActive(true); colleagueDto.setVolumeId("Default"); colleagueDto.setLogin("teste"); colleagueDto.setMail("[email protected]"); colleagueDto.setPasswd("teste"); colleagueDto.setAdminUser(false); colleagueDto.setEmailHtml(true); colleagueDto.setDialectId("pt_BR");

    //Cria o colleagueDtoArray e adiciona varcolleagueDtoArray =colleagueServiceProvider.instantiate("com.totvs.technology.ecm.foundation.ws.ColleagueDtoArray" );

    colleagueDtoArray.getItem().add(colleagueDto);

    varresult = colleagueService.createColleague("adm", "adm", 1, colleagueDtoArray); log.info("Result: "+ result); }}

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082260
  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    7/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 7/14

    Observao:Em caso de execuo deste evento um em sub-processo, noser possvel definir ou resgatar dados da ficha anexada ao sub-processo, poisnessa situao a ficha ainda no est criada.

    processo(Integer).

    afterProcessFinish Ocorre aps finalizada a solicitao. Nmero doprocesso(Integer).

    afterReleaseVersion Ocorre aps a liberao de uma verso do processo. XML com a

    definio doprocesso(String).

    afterStateEntry Ocorre aps a entrada em uma nova atividade. Sequncia daatividade(Integer).

    afterStateLeave Ocorre aps a sada de uma atividade. Sequncia daatividade(Integer).

    afterTaskComplete Ocorre aps o usurio completar uma tarefa, porm as informaes de prxima tarefa e

    usurios destino j foram salvas.

    Usurio corrente

    (String);Sequncia daprximaatividade(Integer);Lista deusurios destino(List).

    afterTaskCreate Ocorre aps o usurio receber uma tarefa. Matrcula dousurio (String).

    afterTaskSave Ocorre aps salvar as informaes selecionadas pelo usurio. Usurio corrente(String);

    Sequncia daprximaatividade(Integer);Lista deusurios destino(List).

    beforeCancelProcess Ocorre antes do cancelamento da solicitao. Usurio corrente(String);Nmero doprocesso(Integer).

    beforeStateEntry Ocorre antes da entrada em uma nova atividade. Sequncia daatividade(Integer).

    beforeStateLeave Ocorre antes da sada de uma atividade. Sequncia daatividade(Integer).

    beforeTaskComplete Ocorre antes que o usurio complete uma tarefa, porm as informaes de prximatarefa e usurios destino j foram salvas.

    Usurio corrente(String);Seqncia daprximaatividade(Integer);

    Lista deusurios destino(List).

    beforeTaskCreate Ocorre antes que o usurio receba uma tarefa. Matrcula dousurio (String).

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    8/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 8/14

    beforeTaskSave Ocorre antes de salvar as informaes selecionadas pelo usurio. Usurio corrente(String);Sequncia daprximaatividade(Integer);Lista deusurios destino(List).

    calculateAgreement Ocorre aps o clculo do consenso (somente para atividades conjuntas) e permitealterar os dados do consenso de uma atividade.

    Exemplo:

    currentState(Integer):atividade queter o consensoalterado;agreementData(Map): mapade dados com opercentualcalculado, aatividade destinoe os usurios de

    destino. Paraobter os valores,utilize o mtodo"get" e paraatribuir um valor,utilize o mtodo"put".

    onNotify Ocorre aps a movimentao da solicitao e antes de enviar as notificaes. Para maisdetalhes consulteo captuloCustomizao deE-mail.

    setProcess Ocorre quando um processo "setado" na API.

    Observao:A propriedade WKCompletTask no deve ser utilizada nesteevento, pois quando ele executado o produto ainda no tem a informao seatividade foi ou no completada.

    Nmero doprocesso(Integer).

    subProcessCreated Ocorre quando um sub-processo criado. Nmero do sub-processo(Integer).

    validateAvailableStates Ocorre aps montada a lista de tarefas disponveis para o usurio a partir da tarefaatual.

    Sequncia daatividade atual(Integer);Lista dassequncias dasatividades(List).

    No necessrio criar todos os eventos do processo apenas aqueles que se estiver interessado.Todos os eventos so executados de forma persistente.

    Importante: No possvel capturar (hAPI.getCardValue) ou adicionar (hAPI.setCardValue) dados no formulrio na inicializaodo processo, sendo possvel somente a partir da segunda tarefa.

    Para isso pode ser utilizado a seguinte lgica:

    12345678

    910

    functioncalculateAgreement(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");}

    http://-/?-
  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    9/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 9/14

    Customizao do ProcessoCom o uso de eventos, o Fluig permite que um processo seja customizado possibilitando a execuo de aes definidas pelo usurio,ais como:

    Validar o ato de completar uma atividade;Tomar decises automaticamente;Realizar integraes com outros sistemas;Iniciar novas solicitaes automaticamente.

    Existem algumas propriedades que contm informaes referentes solicitao que podem ser utilizadas na customizao do processo,so elas:

    Parmetro Descrio

    WKDef Cdigo do processo

    WKVersDef Verso do processo

    WKNumProces Nmero da solicitao de processo

    WKNumState Nmero da at ividade

    WKCompany Nmero da empresa

    WKUser Cdigo do usurio corrente

    WKUserComment Comentrio feito pelo usurio na atividade ou no cancelamento da solicitao

    WKCompletTask Se a tarefa foi completada (true/false)

    WKNextState Nmero da prxima atividade (destino)

    WKCardId Cdigo do formulrio do processo

    WKFormId Cdigo da definio de formulrio do processo

    lm dessas propriedades j alimentadas pelo produto, possvel criar propriedades customizadas que podem ser utilizadas noseventos. O produto disponibiliza a varivel globalVars, que um mapa de dados (Map) e estar disponvel em todos oseventos.

    Para adicionar uma propriedade e seu valor, utilize o mtodo 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 varivel globalVars, utilize o mtodo globalVars.get("name"), onde "name" o nome da propriedade a serretornado o valor. Exemplo: globalVars.get("WDAprovador");

    he license could not be verified: License Certificate has expired!

    Tratamento de Excees

    s excees podem ser tratadas nos seguintes eventos: beforeStateEntry, beforeTaskSave e beforeCancelProcess. O tratamento deexceo no evento beforeStateEntry pode ser utilizado na inicializao de solicitaes, pois ele impede que a solicitao seja iniciada. Oratamento de exceo no evento beforeTaskSave pode ser utilizado somente se a solicitao j estiver inicializada.

    baixo apresentado os modelos para utilizao em cada um dos eventos:

    12345

    functionbeforeStateEntry(sequenceId) { if(sequenceId != "NUMERO_DA_ATIVIDADE_INICIAL") { varcampo = hAPI.getCardValue("campo1"); }}

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    10/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 10/14

    possvel consultar o campo observao de uma solicitao de processo, verificando se ele foi preenchido ou no. Para isto, necessrio validar a propriedade WKUserCommentno evento beforeTaskSaveou no evento beforeCancelProcess. Exemplo:

    Mecanismo de Atribuio

    Os mecanismos de atribuio so instrumentos utilizados durante um processo de workflow que permitem criar, segundo um critrioestabelecido pelo prprio mecanismo, uma lista de possveis usurios para uma atividade. Esta lista pode ser utilizada em doismomentos:

    1. Na inicializao do processo, onde o sistema verifica se o usurio corrente faz parte desta lista e, portanto, pode inici-lo;2. No momento do encaminhamento de uma tarefa, quando esta lista apresentada ao usurio corrente com opes de

    encaminhamento da solicitao.

    No primeiro caso, a lista gerada de acordo com o mecanismo de atribuio existente na primeira atividade do processo (que representaa atividade inicial). Nas demais atividades adotado o segundo procedimento. Quando no houver um mecanismo de atribuio associado

    a uma atividade (seja ela inicial ou no), todos os usurios so considerados vlidos.

    O Fluig possui alguns mecanismos de atribuio padres, conforme abaixo:

    MecanismodeAtribuio

    Descrio

    Para umPapel (Pool)

    Permite atribuir tarefas a um papel e no apenas a um usurio. Assim, qualquer um dos usurios neste papel podeassumir as tarefas para complet-las.

    Para umGrupo(Pool)

    Permite atribuir tarefas a um grupo e no apenas a um usurio. Assim, qualquer um dos usurios deste grupo podeassumir as tarefas para complet-las.

    PorAssociao

    Permite compor lgicas complexas de atribuio por intermdio da associao de vrios mecanismos.

    Por CampodeFormulrio

    Permite atribuir tarefas ao usurio informado em um campo do formulrio do processo.

    12345678910

    11121314151617181920

    functionbeforeStateEntry(sequenceId) { varactivity = getValue("WKNumState"); if(activity == 0 || activity == 1) { //Outra condio. throw"TRATAMENTO DE EXCEO"; }}functionbeforeTaskSave(colleagueId, nextSequenceId, userList) { varactivity = getValue("WKNumState");

    if(activity != 0 && activity != 1) { //Outra condio throw"TRATAMENTO DE EXCEO"; }}functionbeforeCancelProcess(colleagueId, processId) { //Condio. throw"TRATAMENTO DE EXCEO";}

    1234567891011

    functionbeforeTaskSave(colleagueId, nextSequenceId, userList) { if(getValue("WKUserComment") == null|| getValue("WKUserComment") == "") { throw"A observao deve ser preenchida"; }}functionbeforeCancelProcess(colleagueId, processId) { if(getValue("WKUserComment") == null|| getValue("WKUserComment") == "") { throw"A observao deve ser preenchida"; }}

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    11/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 11/14

    PorExecutor deAtividade

    Permite selecionar os usurios que executaram uma atividade anterior.

    Por Grupo Permite filtrar apenas os usurios que faam parte de um determinado grupo.

    Por Gruposdo Usurio

    Permite filtrar apenas os usurios que pertenam a um dos grupos do usurio corrente, ou do usurio que iniciou oprocesso (solicitante). Tambm permite filtrar apenas os usurios cujo grupo de trabalho seja o mesmo do usurio(corrente ou solicitante).

    Por Papel Permite filtrar apenas os usurios que possuam um determinado papel.

    Por Usurio Permite atribuir tarefas a um usurio especfico.

    Como criar um Mecanismo de Atribuio

    criao de um mecanismo de atribuio realizada pelo Fluig Studio, sendo necessrio j existir um projeto Fluig.

    Utilize o passo-a-passo para conhecer o processo de criao de um mecanismo de atribuio de exemplo:

    he license could not be verified: License Certificate has expired!

    Parmetros Workflow para Customizao de Formulrios

    Para processos que possuem uma definio de formulrio definida so passados alguns parmetros com informaes sobre o processopara serem utilizados nos eventos da definio de formulrio, conforme abaixo:

    Parmetro Descrio

    WKDef Cdigo do processo

    WKVersDef Verso do processo

    WKNumProces Nmero da solicitao de processo

    WKNumState Nmero da atividade movimentada

    WKCurrentState Nmero da atividade atual

    WKCompany Nmero da empresa

    WKUser Cdigo do usurio corrente

    WKUserPassword Senha do usurio corrente em MD5

    WKCompletTask Se a tarefa foi completada (true/false)

    WKNextState Nmero da prxima atividade (destino)

    WKCardId Cdigo do formulrio do processo

    WKFormId Cdigo da definio de formulrio do processo

    Nos scripts dos eventos da definio de formulrio basta recuperar as informaes com o comando getValue, conforme exemplo:

    Customizao de E-mail

    possvel incluir customizaes de e-mail durante o andamento de um workflow. Exis tem duas modalidades de customizao nessacategoria:

    Envio e alterao de e-mail padro atravs do evento onNotify;

    Envio de e-mail customizado em qualquer evento do workflow.

    Envio de E-mail Padro

    Para interferir no envio de um e-mail padro, deve ser utilizado o evento onNotify, que disparado no exato momento em que qualquer umdos e-mails de processo enviado. Nesse evento, podem ser feitas alteraes, como por exemplo adicionar outros destinatrios ao e-mail

    arvCodProcess = getValue("WKDef");

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    12/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 12/14

    (alm daqueles que esto participando do processo), modificar os valores dos parmetros utilizados no template de e-mail, etc.

    baixo se encontra um exemplo de como implementar esse evento:

    O evento onNotify est disponvel na lista de eventos do processo. Portanto, ao selecionar esse evento na lista de eventos disponveis, aassinatura da funo acima j ser preenchida automaticamente. Este evento disponibiliza os seguintes parmetros:

    Parmetro Descrio

    subject o assunto do e-mail. A alterao desta varivel ir implicar que todos os usurios recebam o e-mail com o novoassunto configurado, inclusive aqueles que participam do processo. Exemplo de utilizao: subject.add("ASSUNTO");

    receivers Lista de e-mails destinatrios. Tambm possvel adicionar outros e-mails, de usurios que no participam do processo.Inclusive, podem ser adicionados e-mails de usurios que no esto cadastrados no Fluig, caso seja necessrio notificaruma pessoa que no tenho acesso ao sistema.

    template Permite validar qual tipo de e-mail est sendo enviado (por exemplo, template de nova tarefa, notificao de gestor, etc).

    Com base nessa varivel podemos distinguir quais e-mails queremos customizar. recomendvel que sempre sejaverificado o cdigo do template, para evitar que ocorram alteraes em outros tipos de e-mail, que no necessitariam decustomizao.

    params um mapa de dados que permite alterar/incluir parmetros para que sejam apresentados no e-mail. O nome dosparmetros informados nesse mapa devem ser os mesmos que so utilizados dentro do arquivo de template.

    No exemplo que foi apresentado acima est sendo validado se o template o TPL028 (que corresponde a Notificao do Gestor), emcaso positivo, um novo e-mail ser adicionado na lista de destinatrios. Ou seja, alm do gestor do processo, outra pessoa sernotificada, recebendo uma cpia do e-mail que o gestor ir receber. Como est sendo validado o cdigo do template, os demais tipos dee-mail no sero afetados.

    Os templates podem ser consultados dentro do diretrio do volume, em: \templates\tplmail. Se for necessrio adicionar algum

    parmetro no e-mail padro, os templates podem ser editados diretamente nesse diretrio.

    Envio de E-mail Customizado

    Caso seja necessrio incluir um novo tipo de e-mail, alm daqueles que so disponibilizados pelo produto, o Fluig permite que o usuriocadastre templates de e-mails customizados, atravs da opo Templates de Emailspresente na aba Gerais do Painel de Controle.

    Para incluir um novo Template, basta acionar a opo Adicionar no menu e preencher os dados solicitados. Nesta etapa tambm deve sereito upload do arquivo de template.

    Para adicionar parmetros dentro de um arquivo de template (TXT ou HTML), deve-se utilizar a seguinte notao:

    ${NOME_DO_PARAMETRO}

    Neste caso, ser utilizado o identificador "NOME_DO_PARAMETRO" durante a customizao para atribuir um valor a este parmetro. Osemplates disponveis no volume da empresa (\templates\tplmail) podem ser consultados para mais exemplos de utilizao de

    parmetros.

    Aps cadastrar um novo template, possvel utiliz-lo para enviar e-mail a partir de qualquer um dos eventos do processo (exceto noonNotify ver "Envio de E-mail Padro"). Para efetuar um envio de e-mail, em base de um template customizado, utilizado o objetonotifier, chamando a funo "notify", conforme o cdigo abaixo:

    12345

    functiononNotify(subject, receivers, template, params) { if(template.match("tpl028") != null) { receivers.add("[email protected]"); }}

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    13/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    http://tdn.totvs.com/pages/viewpage.action?pageId=73082818#CustomizaodeWorkflow-CustomizaodeWorkflow 13/14

    Onde:

    O primeiro parmetro que a funo notify recebe o cdigo/matrcula do usurio que ir enviar o e-mail (remetente).

    O segundo parmetro o cdigo do template que foi cadastrado no Fluig.O terceiro parmetro um mapa de dados (java.util.HashMap) que contm os parmetros que sero utilizados para preencher asvariveis do template.Por padro, os parmetros WDK_VirtualDir (diretrio virtual) e WDK_AdviceUser (Nome do colaborador remetente) so adicionadosao mapa de parmetros automaticamente e podem ser utilizados no template, sem que os valores sejam adicionados pelacustomizao.O quarto parmetro representa a lista de usurios que iro receber o e-mail (java.util.ArrayList). Esta lista de usurios consiste emuma lista de cdigos de usurios cadastrados no Fluig.O quinto e ltimo parmetro especifica qual ser o formato do e-mail enviado. Os valores aceitos so "text/html" e "text /plain".

    Outra forma de executar o mtodo de envio de email informando o nmero da ficha, conforme exemplo:

    Ateno: Obrigatoriamente o valor informado deve ser um formulrio. Outros tipos de documentos no sero tratados e ocorrererro na execuo do evento.

    o executar este mtodo, automaticamente os parmetros abaixo sero adicionados na lista de parmetros e podem ser utilizados noemplate:

    Parmetro Descrio

    WDK_CardContent Contedo HTML do formulrio (simula a visualizao)

    WDK_DocumentAuthor Nome do Autor

    WDK_DocumentComments Comentrio adicional

    WDK_DocumentDescription Descrio do formulrio

    WDK_DocumentIconImage Imagem do cone do formulrio

    WDK_DocumentNumber Nmero do formulrio

    WDK_DocumentUpdatedDate Data de atualizao do formulrio

    WDK_DocumentVersion Verso do formulrio

    WDK_DocumentViewLink Link para acesso ao formulrio

    12345678910

    111213141516171819

    try{ //Monta mapa com parmetros do template

    varparametros = newjava.util.HashMap(); parametros.put("NOME_USUARIO", "JOAO"); parametros.put("CODIGO_USUARIO", "01");

    //Este parmetro obrigatrio e representa o assunto do e-mail parametros.put("subject", "ASSUNTO");

    //Monta lista de destinatrios

    vardestinatarios = newjava.util.ArrayList(); destinatarios.add("CODIGO-DESTINATARIO");

    //Envia e-mail notifier.notify("MATRICULA-REMETENTE", "CODIGO-TEMPLATE", parametros, destinatarios, "text/html");} catch(e){ log.info(e);}

    notifier.notify("MATRICULA-REMETENTE", NUMERO DO FORMULARIO, "CODIGO-TEMPLATE", parametros, destinatarios,"text/html");

  • 7/21/2019 Customizao de Workflow - Fluig - TDN

    14/14

    15/6/2014 Customizao de Workflow - Fluig - TDN

    Third Party Trademarks

    Progress and OpenEdge are trademarks or registered trademarks of Progress Software Corporation or one of its subsidiaries or affiliates inhe U.S. and other countries.

    avaScript is a trademark of Oracle Corporation.

    ava is registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

    ny other third party trademarks are the property of their respective owners.

    Nenhum