Dans DataWorks, les extensions vous permettent de définir une logique personnalisée pour régir les opérations des utilisateurs, par exemple en interceptant et bloquant les actions inappropriées, en recevant des notifications pour des événements spécifiques ou en mettant en œuvre un contrôle des processus. Cette rubrique explique comment développer et déployer une extension à l'aide d'un service auto-géré.
Contexte
Prérequis
Vous avez activé l'abonnement aux messages d'événement. Le déploiement d'une extension via un service auto-géré s'appuie sur la capacité de distribution des messages d'EventBridge. Assurez-vous d'avoir configuré un bus d'événements dans EventBridge pour recevoir les messages d'événements ouverts de DataWorks, et que les messages de ce bus sont acheminés vers votre service déployé sur site ou dans le cloud.
Limites
Seuls les utilisateurs de l'édition Enterprise de DataWorks peuvent utiliser le module Extensions.
Le module Extensions est disponible dans les régions suivantes : Chine (Pékin), Chine (Hangzhou), Chine (Shanghai), Chine (Zhangjiakou), Chine (Shenzhen), Chine (Chengdu), États-Unis (Silicon Valley), États-Unis (Virginie), Allemagne (Francfort), Japon (Tokyo), Chine (Hong Kong) et Singapour.
Remarques d'utilisation
Seuls l'Open Platform administrator, l'tenant administrator, les comptes Alibaba Cloud et les utilisateurs RAM auxquels la stratégie AliyunDataWorksFullAccess est attachée disposent des autorisations de lecture et d'écriture sur le backend développeur. Pour plus d'informations sur la gestion des autorisations, consultez les rubriques Contrôle des autorisations pour les services globaux et Stratégies RAM pour les autorisations de service et de console.
Limites liées à la version : Si votre abonnement à l'édition Enterprise de DataWorks expire, toutes les extensions deviennent inactives et ne peuvent plus déclencher de vérifications d'événements. Les vérifications déjà déclenchées mais n'ayant pas encore atteint un état final sont automatiquement validées.
Limites liées aux nœuds : Lorsqu'un nœud composite contenant des nœuds internes, tel qu'un nœud Platform for AI, un nœud do-while ou un nœud for-each, déclenche une vérification, tous les nœuds internes doivent réussir la vérification avant que les opérations suivantes ne puissent se poursuivre.
Déclenchement : Vous pouvez associer plusieurs extensions au même événement de point d'extension. Un seul événement peut ainsi déclencher plusieurs extensions.
Fonctionnement
Le diagramme suivant illustre le flux de travail de base pour le déploiement d'une extension avec un service auto-géré qui consomme des messages via EventBridge.
Après le déclenchement d'un événement de point d'extension, le processus associé passe à l'état Checking en attendant que l'extension renvoie un résultat via un rappel API. Le processus reste dans cet état jusqu'à ce que l'extension envoie le résultat à DataWorks. En fonction du résultat renvoyé, DataWorks décide de bloquer ou non le processus.
Développer le service
Avant de déployer une extension dans DataWorks, vous devez la développer et la déployer sur site ou dans le cloud. Vous pouvez initialiser votre projet à l'aide du code de la bibliothèque d'exemples de code de la plateforme ouverte DataWorks et trouver d'autres exemples dans le code exemple de la plateforme ouverte sur GitHub. Lors du développement de l'extension, vous devez la déployer en fonction du type de service qui reçoit les messages acheminés depuis le bus d'événements.
Étape 1 : Configurer les dépendances
Lors du développement d'une extension, ajoutez les dépendances suivantes au fichier pom.xml. EventBridge prend en charge divers types d'endpoints pour traiter et consommer les événements. Outre les dépendances ci-dessous, vous devrez peut-être en ajouter d'autres selon la cible d'événement configurée dans EventBridge.
Bibliothèque de dépendances DataWorks
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dataworks_public20200518</artifactId>
<version>5.6.0</version>
</dependency>
Plugin d'empaquetage
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Étape 2 : Développer le code de l'extension
Le bus d'événements d'EventBridge achemine les messages vers votre service déployé. Ce service reçoit les messages DataWorks provenant du bus d'événements, les traite, puis appelle une API DataWorks spécifique pour renvoyer le résultat du traitement.
-
Développez le code du service.
Analyser le contenu du message
Pour connaître le format des messages d'événements envoyés par DataWorks, consultez l'Annexe : Format des messages envoyés de DataWorks à EventBridge. Dans un message, le champ
datacontient le contenu spécifique du message. Pendant le développement, identifiez le type de message à l'aide du champdata.eventCodeet récupérez les détails du message via le champ id.RemarqueOpenEvent utilise EventBridge pour distribuer les messages d'événements DataWorks. Avant de développer une extension, abonnez-vous aux messages DataWorks dans EventBridge. Pour plus d'informations, consultez la rubrique Activer l'abonnement aux messages d'événement.
Écrire la logique de traitement
Traitez les messages du bus d'événements selon vos besoins métier. Utilisez les méthodes suivantes pour améliorer l'efficacité du développement et les performances de l'application :
Utilisez l'fonctionnalité avancée : Configurer les paramètres d'une extension. Par exemple, utilisez le paramètre
extension.project.disabledpour désactiver l'extension pour un espace de travail spécifique.Lors du traitement des points d'extension liés au module DataStudio, appelez l'opération GetIDEEventDetail et utilisez le
MessageIdpour obtenir un instantané des données au moment du déclenchement de l'événement de point d'extension.
RemarqueLe paramètre
MessageIdcorrespond au champiddu message d'événement. Pour plus d'informations, consultez l'Annexe : Format des messages envoyés de DataWorks à EventBridge.Renvoyer le résultat à DataWorks
Votre service doit renvoyer le résultat du traitement à DataWorks en appelant une opération OpenAPI. L'opération API spécifique à appeler dépend du module à l'origine de l'événement de point d'extension.
Événements de point d'extension dans DataStudio : Appelez l'opération UpdateIDEEventResult pour renvoyer le résultat du traitement.
Événements de point d'extension dans Operation Center : Appelez l'opération UpdateWorkbenchEventResult pour renvoyer le résultat du traitement.
Événements de point d'extension dans d'autres modules : Appelez l'opération CallbackExtension pour renvoyer le résultat du traitement.
La requête API de rappel doit inclure les paramètres suivants : l'extension à laquelle le service s'applique (ExtensionCode), le message d'événement (MessageId) et le résultat du traitement (CheckResult).
-
CheckResult : Résultat du traitement. Valeurs possibles :
OK: La vérification de l'extension a réussi pour cet événement de point d'extension.FAIL: La vérification de l'extension a échoué pour cet événement de point d'extension. Identifiez et corrigez l'erreur pour garantir le bon déroulement des processus suivants.WARN: La vérification de l'extension a réussi pour cet événement de point d'extension, mais un avertissement a été généré.
ExtensionCode : Après avoir enregistré l'extension, récupérez ce code depuis la page de liste des extensions dans DataWorks.
MessageId : Correspond au champ id du message. Pour plus d'informations, consultez l'Annexe : Format des messages envoyés de DataWorks à EventBridge.
Une fois le code développé, empaquetez l'application dans un fichier exécutable
.jarpour le déploiement.
Étape 3 : Déployer l'extension
Après avoir développé et débogué le code de l'extension, déployez le code empaqueté en tant que service d'application sur une instance ECS ou un serveur d'un autre fournisseur.
Configurer l'extension dans DataWorks
Une fois le code développé, enregistrez et gérez l'extension dans DataWorks.
Étape 1 : Enregistrer l'extension
Pour développer et utiliser une extension, enregistrez-la d'abord dans DataWorks afin d'obtenir l'ExtensionCode requis pour la suite du développement. Procédez comme suit :
-
Connectez-vous à l'console DataWorks. Dans la région cible, cliquez sur dans le volet de navigation de gauche. Cliquez sur Go to Open Platform pour ouvrir la page Developer Backend.
-
Enregistrez l'extension.
Dans le volet de navigation de gauche, cliquez sur Extensions pour ouvrir la page des extensions.
-
Cliquez sur , sélectionnez Deploy Based on Self-managed Service et configurez les informations de l'extension.
-
Terminez l'enregistrement de l'extension.
Cliquez sur OK pour terminer l'enregistrement.
RemarqueUne fois l'enregistrement terminé, affichez l'extension enregistrée sur la page List of Extensions.
Étape 2 : Publier l'extension
Après avoir développé, déployé et enregistré l'extension dans DataWorks, testez-la, approuvez-la et publiez-la. Une fois publiée, les administrateurs autres que le propriétaire de l'extension peuvent activer l'extension dans Management Center. Pour plus d'informations, consultez la rubrique Appliquer une extension.
Annexe : Format des messages de DataWorks vers EventBridge
Dans le code suivant, DataWorks pousse le contenu du champ data vers EventBridge. EventBridge y ajoute d'autres informations.
{
"datacontenttype": "application/json;charset=utf-8", // The format of the content in the data field. The datacontenttype parameter supports only the application/json format.
"aliyunaccountid": "1111",// The ID of the Alibaba Cloud account.
"aliyunpublishtime": "2024-07-10T07:25:34.915Z",// The time when EventBridge received the event.
"data": {
"tenantId": 28378****10656,// The ID of the tenant. In DataWorks, each Alibaba Cloud account has a unique tenant ID. To find your ID, go to the DataStudio page and click the user information icon in the upper-right corner.
"eventCode": "xxxx"//
},
"aliyunoriginalaccountid": "11111",
"specversion": "1.0",
"aliyuneventbusname": "default",// The name of the event bus in EventBridge that is used to receive event messages from DataWorks.
"id": "45ef4dewdwe1-7c35-447a-bd93-fab****",// The unique ID of the event.
"source": "acs.dataworks",// The event source. `acs.dataworks` indicates that DataWorks pushed the message.
"time": "2024-07-10T15:25:34.897Z",// The time when the event was generated.
"aliyunregionid": "cn-shanghai",// The region where the event was received.
"type": "dataworks:ResourcesUpload:UploadDataToTable"// The event type. You can use this parameter in the EventBridge console to filter messages from DataWorks. The value of this parameter varies by event.
}
Le contenu du champ data varie en fonction du type de message. Pour plus d'informations sur les messages d'événements, consultez la rubrique Référence du développeur : Liste des événements et format des messages.
Exemples d'extensions
Développez désormais du code d'extension personnalisé selon vos besoins métier. Les rubriques suivantes fournissent des exemples d'enregistrement, de développement et d'application d'extensions dans des scénarios typiques.
Documents connexes
Pour plus d'informations sur le format des messages de chaque type d'événement, consultez la rubrique Référence du développeur : Liste des événements et format des messages.
OpenEvent vous permet de vous abonner aux messages pour certains événements via EventBridge. Pour plus d'informations, consultez la rubrique Aperçu d'OpenEvent.
Pour la liste des points d'extension que vous pouvez gérer avec des extensions, consultez la rubrique Aperçu des extensions.
Vous pouvez également déployer une extension à l'aide de Function Compute. Pour plus d'informations, consultez la rubrique Développer et déployer une extension à l'aide de Function Compute.