10 KiB
title, source, path
| title | source | path |
|---|---|---|
| Personificação | https://tdn.totvs.com/pages/viewpage.action?pageId=567579891 | \Plataforma Documentação técnica\Desenvolvimento sobre a plataforma\Integrações\Personificação.md |
- Objetivo
- Conceito
- Utilização
- Itens que receberam controle de personificação
- Exemplo de uso via API Rest
- Configurando a personificação
Objetivo
O objetivo deste guia é apresentar o conceito de personificação, e listar os serviços que receberam o controle de personificação.
Conceito
Personificação é quando uma pessoa executa ações em nome de outra. A plataforma possui serviços (APIs, datasets, webservices) que permitem que o usuário do contexto seja diferente do usuário logado. Por exemplo, o usuário acessa a API de workflow com o id "user1" e chama o método que movimenta uma solicitação workflow. Porém esse método tem um parâmetro que informa a partir de qual usuário será feita a movimentação, nesse caso pode ser passado o id "user2", possibilitando que o user1 consiga movimentar uma solicitação que está com o user2.
Esse recurso é essencial para automatizar alguns processos, no caso de ter um usuário "Integrador" que movimenta as solicitações atrasadas automaticamente.
Utilização
O recurso de Personificação está disponível no TOTVS Fluig Plataforma a partir da atualização 1.7.1 (Crystal Lake).
É possível controlar as permissões de acesso deste recurso pelo Painel de controle da plataforma, acessando o item Permissões e buscando a seguinte configuração:
- Tipo: Personification
- Nome do recurso: Personificação de usuários
- Permissão: Personificar: Quando ativada, permite executar ações utilizando o ID de outro usuário.
Itens que receberam controle de personificação
Além de ter a permissão liberada, é necessário que o serviço desejado tenha sido implementado com o controle de personificação. Confira a seguir a lista completa de webservices, APIs e datasets que suportam esse recurso:
Services
| Webservice | Método | Observações |
|---|---|---|
| ECMCardIndexService | - getCardIndexesWithoutApprover - updateSimpleCardIndex - updateSimpleCardIndexWithDataset - updateSimpleCardIndexWithDatasetAndGeneralInfo - updateSimpleCardIndexWithRelatedDatasets - createSimpleCardIndex - createSimpleCardIndexWithDataset - createSimpleCardIndexWithDatasetPersisteType - createSimpleCardIndexWithRelatedDatasets - getCardIndexContent - getActiveCardIndex | |
| ECMCardService | - getCardVersion | |
| ECMColleagueGroupService | - getColleagueGroupsByColleagueId - getColleagueGroup - deleteColleagueGroup | |
| ECMColleagueService | - getColleague - colab - removeColleague - activateColleague | |
| ECMDashBoardService | - Todos os métodos menos o getUrlEcm que não usa personificação | |
| ECMDatasetService | - getDataset | |
| ECMDocumentService | - getActiveDocument - getDocumentContent - getDocumentVersion - getDocumentByExternalId - createSimpleDocument - findMostPopularDocuments - findMostPopularDocumentsOnDemand - deleteDocument - destroyDocument - findRecycledDocuments - restoreDocument - copyDocumentToUploadArea - updateSimpleDocument - moveDocument - updateGroupSecurityType - destroyDocumentApproval - approveDocument | |
| ECMFavoritesService | - findFavorites - findFavoritesProcess - addProcessToFavorites - addDocumentToFavorites - removeFavoriteDocument - removeFavoriteProcess - isFavoriteDocument | |
| ECMKnowledgeService | - findLastDocumentsByUser | |
| ECMOutstandingService | - transfer | |
| ECMReportService | - getReportContent | |
| ECMSearchDocumentServiceService | - searchDocuments - searchFavoritesDocuments - advancedSearchDocuments - advancedSearchDocumentsWithMetadata | |
| ECMWorkflowEngineService | - cancelInstance - cancelInstanceByReplacement - calculateDeadLineHours - calculateDeadLineTime - getAttachments - getAvailableProcess - getAvailableProcessOnDemand - getCardValue - getInstanceCardDataResponse - startProcess - startProcessClassic - saveAndSendTask - saveAndSendTaskByReplacement - saveAndSendTaskClassic - searchProcess - setAutomaticDecisionClassic - takeProcessTask - takeProcessTaskByReplacement - setTasksComments - createWorkFlowProcessVersion - releaseProcess - getHistories - getActualThread - getAllActiveStates - getAvailableStates - getAvailableUsers - getAllProcessAvailableToExport - getAllProcessAvailableToImport - getAvailableUsersStart - getAvailableUsersStartOnDemand - getProcessFormId - getWorkFlowProcessVersion | |
| ECMOutstandingService | - transfer | |
| ECMDashBoardService | - findMyDocumentsOnDemand | |
| ECMColleagueReplacementService | ||
| ECMCardIndexService | - getAttachmentsList - getCustomizationEvents - getFormDatasets - getFormFields |
APIs
| API | Método | Observações |
|---|---|---|
| */*ecm/document | - /create - /createDocument | |
| /2.0/documents | - createDocument - createPrivateDocument - updateFile | |
| /v2/documents | - (PATCH) /{id}/users/{userCode}/hits - (PATCH) /{id}/users/{userCode}/version/{version}/hits | |
| /2.0/favorites | - findFavoritesDocuments/{colleagueId}/ - findFavoritesProcess/{colleagueId}/ | |
| /2.0/folderdocuments | - create | |
| /2.0/security | - changeUserPassword | |
| /2.0/users | - changeUserPassword | |
| hAPI | - publishWorkflowAttachment |
Endpoints
Veja a seguir quais os endpoints que recebem personificação:
- Content Management, que envolve a parte ECM/Documentos.
- Process Management, que envolve a parte de BPM/Processos.
Para consultar as APIs disponíveis, acesse aqui.
| Endpoint | Usercode | Observações |
|---|---|---|
| Process | - ProcessRest-GET /v2/processes/{processId}/activities - ProcessRest-GET /v2/processes/{processId}/process-versions/{processVersion}/activities - ProcessRest-GET /v2/processes/{processId}/process-versions/{processVersion}/requests - ProcessRest-GET /v2/processes/{processId}/process-versions/{processVersion}/requests/tasks - ProcessRest-GET /v2/processes/{processId}/requests - ProcessRest-GET /v2/processes/{processId}/requests/tasks - ProcessRest-GET /v2/processes/{processId}/requests/tasks/resume - ProcessRest-POST /start | |
| Request | - RequestRest-GET /v2/requests/{processInstanceId}/tasks - RequestRest-GET /v2/requests/{processInstanceId}/possible-assignees - RequestRest-POST /v2/requests/{processInstanceId}/move - RequestRest-GET /v2/requests/{processInstanceId}/histories - RequestRest-GET /v2/requests/{processInstanceId}/attachments/{attachmentSequence}/download - RequestRest-GET /v2/requests/{processInstanceId}/attachments/download - RequestRest-GET /v2/requests/{processInstanceId} - RequestRest-GET /v2/requests/{processInstanceId}/activities - RequestRest-GET /v2/requests/{processInstanceId}/attachments | |
| Activities | - ActivityRest-GET /v2/activities | |
| Tasks | - TaskRest-GET /v2/tasks | |
| Documents | - Documents-GET /v2/documents/{id}/users/{userCode}/hits - Documents-GET /v2/documents/{id}/users/{userCode}/version/{version}/hits |
Datasets
- Document
- Colleague
Chamadas de datasets que usem:
- CardIndexDataset
- MetaListDataset
Exemplo de uso via API Rest
Para utilizar a personificação via API Rest é necessário acessar o serviço. Ao acessar a ferramenta configure os endpoints que deseja acessar.
EXEMPLO
http://seudominio/process-management/api/v2/processes/seguranca/start
- O endpoint utilizado no exemplo serve para iniciar uma solicitação.
Configurando o token do usuário
Exemplo utilizando jwt.token.
O que é jwt.token?
JWT é um padrão aberto de mercado definido pela RFC 7519 como um formato compacto e auto suficiente para transmitir informações entre as partes como um objeto JSON.
Dependendo do endpoint que esteja consumindo, será necessário passar as informações no body da requisição.
Configurando a personificação
Qual a função do header em requisições HTTP?
O header (cabeçalho) é um conjunto de informações adicionais enviadas junto à requisição HTTP. Ele funciona como a 'etiqueta de uma encomenda': não contém os dados principais (que ficam no body), mas sim metadados importantes: como o tipo de conteúdo, autorização ou instruções que orientam o servidor sobre como interpretar e processar a mensagem. Abaixo temos alguns exemplos de utilização do Header:
Autenticação: inclui um token de acesso para o servidor saber quem está chamando a API.
EXEMPLO Authorization: Bearer
Formato de dados: indica que o conteúdo enviado/recebido é JSON.
EXEMPLO Content-Type: application/json
Idioma ou customização: informa preferências de resposta.
EXEMPLO Accept-Language: pt-BR
No Postman, o header (cabeçalho) é utilizado para configurar informações complementares que acompanham a requisição. Nele podem ser definidos, por exemplo, o tipo de conteúdo enviado (JSON, XML, etc.), dados de autorização para acesso à API e outras instruções necessárias para que o servidor interprete corretamente a requisição antes de processar os dados.
Abaixo vamos mostrar o passo a passo para a configuração do recurso personificação.
01. Na aba Headers adicione a chave "X-Personification-UserCode" ** e o valor "usuárioComPermissãoDePersonificação”.
A chave utilizada para a configuração é X-Personification-UserCode
02. Após realizaras configurações, qualquer ação realizada, será feita no nome do usuário que foi utilizado na configuração de personificação.
EXEMPLO
Estou realizando o login com o usuário A, mas iniciei uma solicitação com o usuário B, logo, ao acessar a Central de Tarefas do usuário B a solicitação estará inicializada por ele.
Abaixo temos alguns exemplos visuais utilizando a personificação