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:


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

WebserviceMétodoObservaçõ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

APIMétodoObservaçõ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:

Para consultar as APIs disponíveis, acesse aqui.

EndpointUsercodeObservaçõ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


DOCUMENT MANAGEMENT - ECM (UTILIZANDO USERCODE)

Datasets

Chamadas de datasets que usem:


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.


http://seudominio/process-management/api/v2/processes/seguranca/start


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


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 realizar as configurações, qualquer ação realizada, será feita no nome do usuário que foi utilizado na configuração de personificação.




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