Automatizar tarefas de mudança quando os funcionários mudam de trabalho com as APIs de fluxo de trabalho do ciclo de vida do Microsoft Graph

Este tutorial oferece orientações passo a passo para automatizar tarefas de mudança de funcionários através de APIs de fluxos de trabalho de ciclo de vida no Microsoft Graph.

Captura de ecrã a mostrar o cenário de Fluxos de Trabalho de Ciclo de Vida.

Neste tutorial, você aprende a:

  • Configure um fluxo de trabalho de ciclo de vida para marcar para os funcionários que se mudam para um novo departamento.
  • Configure uma tarefa para notificar o gestor dos utilizadores movidos por e-mail.
  • Monitorize a status do fluxo de trabalho e as respetivas tarefas associadas.

Pré-requisitos

Para concluir este tutorial, precisa dos seguintes recursos e privilégios:

  • Esta funcionalidade requer licenças Microsoft Entra ID Governance. Para encontrar a licença certa para os seus requisitos, consulte Microsoft Entra ID Governance noções básicas de licenciamento.

  • Inicie sessão num cliente de API, como o Graph Explorer para chamar o Microsoft Graph com uma conta que tenha, pelo menos, a função de administrador de ciclo de vida Microsoft Entra.

  • Conceda a si mesmo a permissão delegada LifecycleWorkflows.ReadWrite.All Microsoft Graph.

  • Crie duas contas de utilizador a utilizar neste tutorial: uma para o funcionário e outra para o respetivo gestor e tenha as seguintes definições configuradas conforme aplicável.

    Propriedade do utilizador Descrição Definir em
    Email Notifica o gestor de que o funcionário foi transferido para o departamento. Tanto o gestor como o funcionário devem ter caixas de correio ativas para receber e-mails. Funcionário, Gestor
    manager Este atributo é utilizado pela tarefa de fluxo de trabalho. Funcionário

Criar um fluxo de trabalho do mover

Solicitação

O pedido seguinte cria um fluxo de trabalho do mover com as seguintes definições:

  • É executado dentro do prazo, mas também pode ser executado a pedido.
  • O fluxo de trabalho é executado quando um funcionário é adicionado ao departamento de Vendas .
  • Apenas uma tarefa incorporada é executada neste fluxo de trabalho: para enviar um e-mail ao gestor do funcionário a notificá-lo da mudança. Esta tarefa é identificada nos fluxos de trabalho do ciclo de vida pelo taskDefinitionIdaab41899-9972-422a-9d97-f626014578b7.
POST https://graph.microsoft.com/v1.0/identityGovernance/lifecycleWorkflows/workflows
Content-type: application/json

{
    "category": "mover",
    "description": "Configure mover tasks for a user moved to the Sales department.",
    "displayName": "Added to Sales department workflow",
    "isEnabled": true,
    "isSchedulingEnabled": true,
    "executionConditions": {
        "@odata.type": "#microsoft.graph.identityGovernance.triggerAndScopeBasedConditions",
        "scope": {
            "@odata.type": "#microsoft.graph.identityGovernance.ruleBasedSubjectSet",
            "rule": "(department eq 'Sales')"
        },
        "trigger": {
            "@odata.type": "#microsoft.graph.identityGovernance.attributeChangeTrigger",
            "triggerAttributes": [
                {
                    "name": "department"
                }
            ]
        }
    },
    "tasks": [
        {
            "continueOnError": false,
            "description": "Send email to moving employee's manager",
            "displayName": "Notify manager of move",
            "isEnabled": true,
            "taskDefinitionId": "aab41899-9972-422a-9d97-f626014578b7",
            "arguments": []
        }
    ]
}

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 201 Created
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/lifecycleWorkflows/workflows/$entity",
    "category": "mover",
    "description": "Configure mover tasks for a user moved to the Sales department.",
    "displayName": "Added to Sales department workflow",
    "isEnabled": true,
    "isSchedulingEnabled": true,
    "lastModifiedDateTime": "2024-03-28T12:46:10.0505943Z",
    "createdDateTime": "2024-03-28T12:46:10.0505809Z",
    "deletedDateTime": null,
    "id": "2bb05c85-556a-429a-8c16-16f6be5ef880",
    "nextScheduleRunDateTime": "2024-03-28T13:37:08Z",
    "version": 1,
    "executionConditions": {
        "@odata.type": "#microsoft.graph.identityGovernance.triggerAndScopeBasedConditions",
        "scope": {
            "@odata.type": "#microsoft.graph.identityGovernance.ruleBasedSubjectSet",
            "rule": "(department eq 'Sales')"
        },
        "trigger": {
            "@odata.type": "#microsoft.graph.identityGovernance.attributeChangeTrigger",
            "triggerAttributes": [
                {
                    "name": "department"
                }
            ]
        }
    }
}

Verificar o âmbito do fluxo de trabalho

Agora que o fluxo de trabalho foi criado, tome nota do ID do fluxo de trabalho e, em seguida, adicione o utilizador no qual pretende testar o fluxo de trabalho ao departamento de Vendas . Após 15 a 30 minutos, pode determinar se o utilizador está em fila para executar o fluxo de trabalho para o mesmo ao verificar o âmbito de execução do fluxo de trabalho. Para determinar se um utilizador está em fila para executar o fluxo de trabalho, utilize o seguinte pedido.

POST https://graph.microsoft.com/v1.0/identityGovernance/lifecycleWorkflows/workflows/2bb05c85-556a-429a-8c16-16f6be5ef880/executionScope

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.identityGovernance.userProcessingResult)",
    "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET identityGovernance/lifecycleWorkflows/workflows('<guid>')/executionScope?$select=completedDateTime,failedTasksCount",
    "value": [
        {
            "id": "2bb05c85-556a-429a-8c16-16f6be5ef880_1_2bb05c85-556a-429a-8c16-16f6be5ef880_638472334281668424_6324d383-5034-49dc-a62d-30d61e01b613",
            "completedDateTime": null,
            "failedTasksCount": 0,
            "processingStatus": "queued",
            "scheduledDateTime": "2024-03-28T14:37:08.1668424Z",
            "startedDateTime": null,
            "totalTasksCount": 1,
            "totalUnprocessedTasksCount": 1,
            "workflowExecutionType": "scheduled",
            "workflowVersion": 1,
            "subject": {
                "id": "6324d383-5034-49dc-a62d-30d61e01b613"
            }
        }
    ]
}

Verificar tarefas e status de fluxo de trabalho

Em qualquer altura, pode monitorizar a status dos fluxos de trabalho e as respetivas tarefas associadas a três níveis.

  • Monitorizar tarefas ao nível do utilizador.
  • Monitorize o resumo agregado de alto nível dos resultados ao nível do utilizador de um fluxo de trabalho, dentro de um período especificado.
  • Obtenha o registo detalhado de todas as tarefas que foram executadas para um utilizador específico no fluxo de trabalho.

Opção 1: Monitorizar tarefas de um fluxo de trabalho ao nível do utilizador

Solicitação

O exemplo a seguir mostra uma solicitação.

GET https://graph.microsoft.com/v1.0/identityGovernance/lifecycleWorkflows/workflows/2bb05c85-556a-429a-8c16-16f6be5ef880/userProcessingResults

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/lifecycleWorkflows/workflows('2bb05c85-556a-429a-8c16-16f6be5ef880')/userProcessingResults",
    "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET identityGovernance/lifecycleWorkflows/workflows('<guid>')/userProcessingResults?$select=completedDateTime,failedTasksCount",
    "value": [
        {
            "id": "2bb05c85-556a-429a-8c16-16f6be5ef880_1_2bb05c85-556a-429a-8c16-16f6be5ef880_638470955486351520_6324d383-5034-49dc-a62d-30d61e01b613",
            "completedDateTime": "2024-03-27T00:19:22.5753749Z",
            "failedTasksCount": 1,
            "processingStatus": "completedWithErrors",
            "scheduledDateTime": "2024-03-27T00:19:08.635152Z",
            "startedDateTime": "2024-03-27T00:19:17.1696067Z",
            "totalTasksCount": 1,
            "totalUnprocessedTasksCount": 0,
            "workflowExecutionType": "onDemand",
            "workflowVersion": 1,
            "subject": {
                "id": "6324d383-5034-49dc-a62d-30d61e01b613"
            }
        }
    ]
}

Opção 2: obter o resumo agregado de alto nível dos resultados ao nível do utilizador para um fluxo de trabalho, dentro de um período especificado

Solicitação

O exemplo a seguir mostra uma solicitação.

GET https://graph.microsoft.com/v1.0/identityGovernance/lifecycleWorkflows/workflows/2bb05c85-556a-429a-8c16-16f6be5ef880/userProcessingResults/summary(startDateTime=2024-03-01T00:00:00Z,endDateTime=2024-03-30T00:00:00Z)

Resposta

O exemplo a seguir mostra a resposta.

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.identityGovernance.userSummary",
    "failedTasks": 2,
    "failedUsers": 2,
    "successfulUsers": 10,
    "totalTasks": 12,
    "totalUsers": 12
}