Compartir a través de


Biblioteca cliente de flujo de trabajo de Azure Purview para Java: versión 1.0.0-beta.2

Los flujos de trabajo son procesos empresariales repetibles y automatizados que los usuarios pueden crear en Microsoft Purview para validar y orquestar operaciones CUD (crear, actualizar, eliminar) en sus entidades de datos. La habilitación de estos procesos permite a las organizaciones supervisar los cambios, aplicar el cumplimiento de directivas y garantizar datos de calidad en todo el panorama de los datos.

Use la biblioteca cliente para el flujo de trabajo de Purview para:

  • Administración de flujos de trabajo
  • Envío de solicitudes de usuario y supervisión de ejecuciones de flujo de trabajo
  • Visualización y respuesta a tareas de flujo de trabajo

Para más información sobre cómo usar el flujo de trabajo, consulte la documentación del servicio.

Introducción

Requisitos previos

Autenticación

Dado que el servicio flujo de trabajo usa un token de portador de Azure Active Directory (AAD) para la autenticación y la identificación, se debe codificar una dirección de correo electrónico en el token para permitir la notificación al usar el flujo de trabajo. Se recomienda usar la biblioteca de identidades de Azure con usernamePasswordCredential. Antes de usar la biblioteca de identidades de Azure con flujo de trabajo, se debe registrar y usar una aplicación para el clientId pasado a UsernamePasswordCredential.

Para usar el proveedor UsernamePasswordCredential que se muestra a continuación u otros proveedores de credenciales proporcionados con el SDK de Azure, incluya el azure-identity paquete:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.10.4</version>
</dependency>

Establezca los valores del identificador de cliente, el identificador de inquilino de la aplicación de AAD como variables de entorno: AZURE_CLIENT_ID, AZURE_TENANT_ID. Establezca el valor de nombre de usuario y contraseña de un usuario de AAD como variables de entorno: USER_NAME, PASSWORD.

WorkflowClient purviewWorkflowClient = new WorkflowClientBuilder()
    .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "endpoint"))
    .credential(new UsernamePasswordCredentialBuilder()
        .clientId(Configuration.getGlobalConfiguration().get("CLIENTID", "clientId"))
        .tenantId(Configuration.getGlobalConfiguration().get("TENANTID", "tenantId"))
        .username(Configuration.getGlobalConfiguration().get("USERNAME", "username"))
        .password(Configuration.getGlobalConfiguration().get("PASSWORD", "password"))
        .build())
    .buildClient();

Ejemplos

En la siguiente sección se proporcionan varios fragmentos de código que abarcan algunos de los escenarios más comunes, entre los que se incluyen:

Creación del flujo de trabajo

BinaryData workflowCreateOrUpdateCommand =
    BinaryData.fromString(
        "{\"name\":\"Create glossary term workflow\",\"description\":\"\",\"triggers\":[{\"type\":\"when_term_creation_is_requested\",\"underGlossaryHierarchy\":\"/glossaries/20031e20-b4df-4a66-a61d-1b0716f3fa48\"}],\"isEnabled\":true,\"actionDag\":{\"actions\":{\"Startandwaitforanapproval\":{\"type\":\"Approval\",\"inputs\":{\"parameters\":{\"approvalType\":\"PendingOnAll\",\"title\":\"ApprovalRequestforCreateGlossaryTerm\",\"assignedTo\":[\"eece94d9-0619-4669-bb8a-d6ecec5220bc\"]}},\"runAfter\":{}},\"Condition\":{\"type\":\"If\",\"expression\":{\"and\":[{\"equals\":[\"@outputs('Startandwaitforanapproval')['body/outcome']\",\"Approved\"]}]},\"actions\":{\"Createglossaryterm\":{\"type\":\"CreateTerm\",\"runAfter\":{}},\"Sendemailnotification\":{\"type\":\"EmailNotification\",\"inputs\":{\"parameters\":{\"emailSubject\":\"GlossaryTermCreate-APPROVED\",\"emailMessage\":\"YourrequestforGlossaryTerm@{triggerBody()['request']['term']['name']}isapproved.\",\"emailRecipients\":[\"@{triggerBody()['request']['requestor']}\"]}},\"runAfter\":{\"Createglossaryterm\":[\"Succeeded\"]}}},\"else\":{\"actions\":{\"Sendrejectemailnotification\":{\"type\":\"EmailNotification\",\"inputs\":{\"parameters\":{\"emailSubject\":\"GlossaryTermCreate-REJECTED\",\"emailMessage\":\"YourrequestforGlossaryTerm@{triggerBody()['request']['term']['name']}isrejected.\",\"emailRecipients\":[\"@{triggerBody()['request']['requestor']}\"]}},\"runAfter\":{}}}},\"runAfter\":{\"Startandwaitforanapproval\":[\"Succeeded\"]}}}}}");
RequestOptions requestOptions = new RequestOptions();
Response<BinaryData> response =
    purviewWorkflowClient.createOrReplaceWithResponse(
        "4afb5752-e47f-43a1-8ba7-c696bf8d2745", workflowCreateOrUpdateCommand, requestOptions);

Envío de solicitudes de usuario

BinaryData userRequestsPayload =
    BinaryData.fromString(
        "{\"comment\":\"Thanks!\",\"operations\":[{\"type\":\"CreateTerm\",\"payload\":{\"glossaryTerm\":{\"name\":\"term\",\"anchor\":{\"glossaryGuid\":\"20031e20-b4df-4a66-a61d-1b0716f3fa48\"},\"nickName\":\"term\",\"status\":\"Approved\"}}}]}");
RequestOptions requestOptions = new RequestOptions();
Response<BinaryData> response =
    userRequestsClient.submitWithResponse(userRequestsPayload, requestOptions);

Aprobar tarea de flujo de trabajo

BinaryData approvalResponseComment = BinaryData.fromString("{\"comment\":\"Thanks for raising this!\"}");
RequestOptions requestOptions = new RequestOptions();
Response<Void> response =
    approvalClient.approveWithResponse(
        "69b57a00-f5de-4a17-a44a-6479adae373d", approvalResponseComment, requestOptions);

Conceptos clave

Solución de problemas

Pasos siguientes

Contribuciones

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un [Contrato de licencia de colaborador (CLA)][cla] declarando que tiene derecho a, y en realidad, nos concede los derechos para usar su contribución.

Cuando se envía una solicitud de incorporación de cambios, un bot de CLA determinará de forma automática si tiene que aportar un CLA y completar la PR adecuadamente (por ejemplo, la etiqueta, el comentario). Solo siga las instrucciones que le dará el bot. Solo será necesario que lo haga una vez en todos los repositorios con nuestro CLA.

Este proyecto ha adoptado el [Código de conducta de código abierto de Microsoft][coc]. Para obtener más información, consulte [Preguntas más frecuentes sobre el código de conducta][coc_faq] o póngase en contacto con [opencode@microsoft.com][coc_contact] con cualquier pregunta o comentario adicional.

Impresiones