Histórico da Página
Índice
Índice | ||||||||
---|---|---|---|---|---|---|---|---|
|
Propriedades extensão
As propriedades de extensão contêm informações especiais que podem alterar o comportamento padrão do processo em algum ponto. Elas devem ser utilizadas principalmente durante a fase de desenvolvimento sob a plataforma ou conter "flags" especiais que alterem alguma lógica interna (apenas em casos especiais).
...
Para a utilização desta funcionalidade, basta utilizar o trecho loading.setMessage(String message) na implementação do evento, conforme exemplo no trecho de código abaixo:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
function validateForm(form){ loading.setMessage("Validando campos de formulário"); if(form.getValue('nome') == null || form.getValue('nome') == '') { throw "Campo nome não está preenchido"; } loading.setMessage(""); } |
...
Método | Especificação | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
getCardValue("nomeCampo") | Permite acessar o valor de um campo do formulário do processo, onde:
| |||||||||||||||||||
setCardValue("nomeCampo", "valor") | Permite definir o valor de um campo do formulário do processo, onde:
| |||||||||||||||||||
setAutomaticDecision(numAtiv, listaColab, "obs") | Permite definir o fluxo de saída de uma atividade de forma automática, onde:
| |||||||||||||||||||
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.
Exemplo de uso para esta função:
| |||||||||||||||||||
setDueDate(numProcesso, numThread, "userId", dataConclusao, tempoSeg) | Permite alterar o prazo de conclusão para uma determinada atividade do processo, onde:
| |||||||||||||||||||
transferTask(transferUsers, "obs", int numThread) | Transfere uma tarefa de um usuário para outro(s) usuário(s).
| |||||||||||||||||||
transferTask(transferUsers, "obs") | Transfere uma tarefa de um usuário para outro(s) usuário(s). Este método não pode ser usado em processos com atividades paralelas:
| |||||||||||||||||||
startProcess(processId, ativDest, listaColab, "obs", completarTarefa, valoresForm, modoGestor) | Inicia uma solicitação workflow, onde:
Retorna um mapa com informações da solicitação criada. Entre elas, o iProcess que é o número da solicitação criada. | |||||||||||||||||||
setColleagueReplacement(userId) | Seta um usuário substituto, onde:
| |||||||||||||||||||
setTaskComments("userId", numProcesso, numThread, "obs") | Define uma observação para uma determinada tarefa do processo, onde:
| |||||||||||||||||||
getCardData(numProcesso) | Retorna um Mapa com todos os campos e valores do formulário da solicitação.
| |||||||||||||||||||
getAdvancedProperty("propriedade") | Retorna o valor da propriedade avançada de um processo.
| |||||||||||||||||||
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:
Retorno: Array de Objeto, onde a primeira posição do array é a data e a segunda a hora. Exemplo:
| |||||||||||||||||||
calculateDeadLineTime(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 minutos:
Retorno: Array de Objeto, onde a primeira posição do array é a data e a segunda a hora. Exemplo:
| |||||||||||||||||||
getUserTaskLink(numAtiv) | Permite buscar o link para movimentação de uma determinada atividade, e utilizá-lo para enviar um e-mail com template personalizado, por exemplo.
Retorno: link para movimentação da solicitação.
Exemplo:
| |||||||||||||||||||
createAdHocTasks(workflowProcessInstanceId, sequenceId, assunto, detalhamento, listatvidadesAhoc) | Permite a criação de atividades adhoc dentro dos eventos do fluig
Exemplo:
| |||||||||||||||||||
listAttachments() | Retorna a lista de anexos do processo.
| |||||||||||||||||||
publishWorkflowAttachment(documento) | Permite publicar anexos workflow da solicitação no GED do fluig, onde:
Exemplo:
| |||||||||||||||||||
attachDocument(documentId)
| Permite anexar documentos do GED a solicitação workflow, onde:
Exemplo:
| |||||||||||||||||||
getAvailableStatesDetail(companyId, userId, processId, processInstanceId, threadSequence) | Retorna detalhes das atividades disponíveis para seleção. Parâmetros:
Retorno: ProcessStateDto[]. | |||||||||||||||||||
getChildrenInstances(processInstanceId) | Retorna uma lista com os números das solicitações filhas, onde:
Exemplo:
| |||||||||||||||||||
getParentInstance(processInstanceId) | Retorna o número da solicitação pai, onde:
Exemplo:
| |||||||||||||||||||
addCardChild(tableName, cardData) | Adiciona um filho no formulário pai e filho do processo, onde:
Exemplo:
|
...
Abaixo um exemplo de como executar o WebService de Colleague para criar um usuário no fluig após executar uma tarefa:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
function afterTaskComplete(colleagueId, nextSequenceId, userList) { if (nextSequenceId == 2) { //Busca o webservices de Colaborador var colleagueServiceProvider = ServiceManager.getServiceInstance("Colleague"); var colleagueServiceLocator = colleagueServiceProvider.instantiate("com.totvs.technology.ecm.foundation.ws.ECMColleagueServiceService"); var colleagueService = colleagueServiceLocator.getColleagueServicePort(); //Cria o ColleagueDto – Verificar a lista de métodos na visualização do serviço var colleagueDto = 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 var colleagueDtoArray = colleagueServiceProvider.instantiate("com.totvs.technology.ecm.foundation.ws.ColleagueDtoArray"); colleagueDtoArray.getItem().add(colleagueDto); var result = colleagueService.createColleague("adm", "adm", 1, colleagueDtoArray); log.info("Result: " + result); } } |
...
Abaixo um outro exemplo utilizando o WebService ECMCardService para alterar o valor do campo de um registro de formulário após a entrada em uma nova atividade:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
function afterStateEntry(sequenceId){ if (sequenceId == 2) { //Servico "<url_fluig>/webdesk/ECMCardService?wsdl"cadastrado com o código "CardService" var cardServiceProvider = ServiceManager.getServiceInstance("CardService"); var cardServiceLocator = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.ECMCardServiceServiceLocator"); var cardService = cardServiceLocator.getCardServicePort(); var cardFieldDtoArray = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDtoArray"); var cardField = cardServiceProvider.instantiate("com.totvs.technology.ecm.dm.ws.CardFieldDto"); //Seta valor no campo com name = 'nome' cardField.setField("nome"); cardField.setValue("Valor alterado via WS dentro de um evento workflow"); var vetCardFields = new Array(); vetCardFields.push(cardField); cardFieldDtoArray.setItem(vetCardFields); //Altera o(s) campo(s) do registro de formulário. //updateCardData(tenantId, login, senha, codRegistroForm, cardFieldDtoArray); cardService.updateCardData(1, "adm", "adm", 8, cardFieldDtoArray); } } |
...
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. |
| |||||||||||||
afterProcessCreate | Ocorre logo após a criação de um novo processo.
|
| |||||||||||||
afterProcessFinish | Ocorre após finalizada a solicitação. |
| |||||||||||||
afterReleaseVersion | Ocorre após a liberação de uma versão do processo. |
| |||||||||||||
afterStateEntry | Ocorre após a entrada em uma nova atividade. |
| |||||||||||||
afterStateLeave | Ocorre após a saída de uma atividade. |
| |||||||||||||
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. |
| |||||||||||||
afterTaskCreate | Ocorre após o usuário receber uma tarefa. |
| |||||||||||||
afterTaskSave | Ocorre após salvar as informações selecionadas pelo usuário. |
| |||||||||||||
beforeCancelProcess | Ocorre antes do cancelamento da solicitação. |
| |||||||||||||
beforeStateEntry | Ocorre antes da entrada em uma nova atividade. |
| |||||||||||||
beforeStateLeave | Ocorre antes da saída de uma atividade. |
| |||||||||||||
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.
|
| |||||||||||||
beforeTaskCreate | Ocorre antes que o usuário receba uma tarefa. |
| |||||||||||||
beforeTaskSave | Ocorre antes de salvar as informações selecionadas pelo usuário. |
| |||||||||||||
calculateAgreement | Ocorre após o cálculo do consenso (somente para atividades conjuntas) e permite alterar os dados do consenso de uma atividade. Exemplo:
|
| |||||||||||||
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.
|
| |||||||||||||
subProcessCreated | Ocorre quando um sub-processo é criado. |
| |||||||||||||
validateAvailableStates | Ocorre após montada a lista de tarefas disponíveis para o usuário a partir da tarefa atual. |
|
...
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:
|
...
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:
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:
Retorno: DocumentDto do documento criado. Exemplo de utilização desta função em conjunto com a função copyDocumentToUploadArea:
| |||||||||||||
createFolder(document, securityConfig, approvers) | Cria uma nova pasta no GED de acordo com os parâmetros informados, onde:
Retorno: DocumentDto da pasta criada. Exemplo de utilização desta função:
| |||||||||||||
getDocumentVersion(documentId, version) | Retorna o DocumentDto de um documento com base no seu id e sua versão, onde:
| |||||||||||||
getUserPermissions(documentId, version) | Retorna o nível de permissão do usuário logado no documento informado, onde:
| |||||||||||||
isUserInGroup(group) | Retorna se o usuário logado faz parte do grupo informado, onde:
| |||||||||||||
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. |
...
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
...
Abaixo é apresentado os modelos para utilização em cada um dos eventos:
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
function beforeStateEntry(sequenceId) { var activity = getValue("WKNumState"); if (activity == 0 || activity == 1) { //Outra condição. throw "TRATAMENTO DE EXCEÇÃO"; } } function beforeTaskSave(colleagueId, nextSequenceId, userList) { var activity = getValue("WKNumState"); if (activity != 0 && activity != 1) { //Outra condição throw "TRATAMENTO DE EXCEÇÃO"; } } function beforeCancelProcess(colleagueId, processId) { //Condição. throw "TRATAMENTO DE EXCEÇÃO"; } |
...
É possível consultar o campo Observação de uma solicitação de processo, verificando se ele foi preenchido ou não. Para isto, é necessário validar a propriedade WKUserComment no evento beforeTaskSave ou no evento beforeCancelProcess. Exemplo:
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"; } } |
...
Deck of Cards | |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||
|
...
Nos scripts dos eventos da definição de formulário basta recuperar as informações com o comando getValue, conforme exemplo:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
var vCodProcess = getValue("WKDef"); |
...
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.
Parâmetros:
Opcionais:
Exemplo:
| |||||||||||||||
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:
Opcionais:
Exemplo:
|
...