/** * WorkflowIntegrator * @version 1.0 * @releaseDate 2020-05-27 * @author Kallico Fróis * @thanks Adriner Andrade * * @description Módulo desenvolvido para facilitar a integração entre a API do * Senior Workflow e Formulários WEB. A ferramenta foi desenvolvida para * interferir o mínimo possível no formulário, desacoplando seus métodos, * tratando as lógicas dentro da ferramenta, minimizando os impactos no * componente na qual é implementada. */ import { BehaviorSubject } from 'rxjs'; export interface TaskData { processName: string; taskName: string; } export interface NextAction { connectsWithAutomaticGateway: boolean; finish: boolean; name: string; } export declare class WorkflowIntegrator { private workflowCockpit; private _isRequestNew; private _nextAction; private _nextActionName; private _taskData; private _isFinishing; private _processVariables; private _workflowPayload; private onLoadActions; private onSubmitActions; private onRollbackActions; processInstanceId: BehaviorSubject; /** * ### WorkflowIntegrator - Integrador de componentes ao Senior Workflow. * * @Description * Instancia a classe do integrador com Senior Workflow. * Ao instanciar a classe automaticamente as Actions são resetadas. * * @Actions * As Actions são ações a serem executadas durante o ciclo de vida do Workflow * Estas podem ser definidas usando os métodos: * `addOnLoadAction()`, `addOnSubmitAction()`, `addOnRollbackAction()`. * * */ constructor(); /** * Instancia o workflowCockpit (API de integração) * * @description * Ao executar este método, as `onLoadAtions` serão executadas! * Se houverem ações para executar logo após o carregamento do formulário no * Senior Workflow as **ações devem ser adicionadas anteriormente** à * chamada dessa função, através do método `addOnLoadAction()`. * */ init(): void; /** # Workflow LOAD Section # **/ /** * Método chamado no carregamento do formulário no Senior Workflow. * ** @important * Deve finalizar chamando o método `_runActions(this.onSbumitActions)`. */ private _onLoadWorkflow; /** # Workflow SUBMIT Section # **/ /** * Método chamado ao clicar no botão `Enviar` do Senior Workflow. * * @important * Deve iniciar chamando o método `_runActions(this.onSbumitActions)`. */ private _onSubmitWorkflow; /** # Workflow ROLLBACK Section # **/ /** * Método chamado ao ocorrer um erro no processamento do formulário por * parte do Senior Workflow * * * @important * Deve iniciar chamando o método `_runActions(this.onRollbackActions)`. */ private _onRollbackWorkflow; /** # ACTIONS Section # **/ /** * Reseta os objetos com as Ações a serem efetuadas no ciclo de vida do * Senior Workflow. */ resetActions(): void; /** * Executa as ações do objeto passado nos argumentos * * @param actionsToRun Objeto onde que deve conter uma chave * identificadora e um valor com um *método* ou *promise* a ser executada/ * resolvida */ private _runActions; /** # Actions SETTERs # */ /** * Adiciona um ação à pilha para execução no momento do carregamento do * formulário no Senior Workflow; * * @important * As Ações de carregamento **devem ser adicionadas antes da chamada do * método** `init()`! * * @param id Nome identificador para a callback a ser executada; * @param callback Função a ser executada; */ addOnLoadAction(id: string, callback: any): void; /** * Adiciona um ação à pilha para execução no momento do envio do formulário * para o Senior Workflow * * @param id Nome identificador para a callback a ser executada; * @param callback Função a ser executada; */ addOnSubmitAction(id: string, callback: any): void; /** * Adiciona um ação à pilha para execução em caso de haver um erro no * processamento do formulário por parte do Senior Workflow. * * @param id Nome identificador para a callback a ser executada; * @param callback Função a ser executada; */ addOnRollbackAction(id: string, callback: any): void; /** * Adiciona um objeto às Variáveis do Processo (`_processVariables`) * * @param id Nome identificador do objeto a ser adicionado * @param processVariable Objeto a ser adicionado as variáveis do processo */ addProcessVariable(id: string, processVariable: any): void; /** * Define o objecto payload que será enviado ao Senior Worfkflow quando o usuário * clicar no botão enviar. * * @param payload Objeto a ser enviado para o Workflow */ setWorkflowPayload(payload: object): void; /** # Actions GETTERs # */ readonly loadActions: object; readonly submitActions: object; readonly rollbackActions: object; /** # GETTERs # **/ readonly isRequestNew: boolean; readonly isFinishing: boolean; readonly nextActionName: string; readonly taskData: TaskData; readonly processVariables: any; }