Les extensions DataWorks vous permettent de définir une logique personnalisée pour surveiller les opérations des utilisateurs, intercepter les actions inappropriées, envoyer des notifications d'événements et gérer les flux de travail. Cette rubrique explique comment développer et déployer une extension à l'aide de Function Compute.
Informations générales
Function Compute est un service de calcul entièrement géré et piloté par les événements. Vous pouvez déployer une extension dans l'environnement d'exécution de Function Compute ; DataWorks transmet alors les messages d'événements des points d'extension à la classe ExtensionRequest. Dans le code de votre extension, implémentez la méthode handleRequest de l'interface PojoRequestHandler pour construire un objet ExtensionRequest. Cet objet reçoit les messages d'événements des points d'extension ainsi que le contexte (Context) provenant de DataWorks. Définissez ensuite la logique de traitement de votre extension et renvoyez le résultat via la classe ExtensionResponse. DataWorks récupère automatiquement ce résultat depuis ExtensionResponse afin de déterminer s'il faut bloquer le flux d'opération du point d'extension actuel.
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
Seuls l'Open Platform administrator, l'tenant administrator, les comptes Alibaba Cloud et les utilisateurs RAM auxquels la politique 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 Politiques 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 être déclenchées pour les 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, tels 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 passer la vérification avant que les opérations ultérieures puissent se poursuivre.
Déclenchement : vous pouvez associer plusieurs extensions au même événement de point d'extension. Cela signifie qu'un seul événement peut déclencher plusieurs extensions.
Limites liées aux événements : les extensions déployées à l'aide de Function Compute prennent actuellement en charge les pré-événements pour le téléchargement de données, les pré-événements pour la publication et la dépublication d'actifs ainsi que les pré-événements pour le téléversement de données.
Fonctionnement
Le diagramme suivant illustre le traitement des événements de points d'extension par une extension basée sur Function Compute :
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étermine s'il convient de bloquer le processus.
Tâches du développeur
Développez votre extension avant de la déployer dans Function Compute. Utilisez la bibliothèque fc-java-core pour exécuter le gestionnaire. Un exemple de code est fourni dans le fichier fc_dataworks_demo01-1.0-SNAPSHOT.jar. Pour plus d'informations, consultez la rubrique Gestionnaires d'événements.
Étape 1 : Configurer les dépendances de l'extension
Lors du développement de votre extension, ajoutez les dépendances suivantes au fichier pom.xml.
Dépendance DataWorks
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dataworks_public20200518</artifactId>
<version>5.6.0</version>
</dependency>
Dépendance Function Compute
<!-- https://mvnrepository.com/artifact/com.aliyun.fc.runtime/fc-java-core -->
<dependency>
<groupId>com.aliyun.fc.runtime</groupId>
<artifactId>fc-java-core</artifactId>
<version>1.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun.fc.runtime/fc-java-event -->
<dependency>
<groupId>com.aliyun.fc.runtime</groupId>
<artifactId>fc-java-event</artifactId>
<version>1.2.0</version>
</dependency>
Dépendance d'emballage
<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>
Vous pouvez utiliser le plugin Apache Maven Shade ou le plugin Apache Maven Assembly. L'exemple précédent utilise le plugin Apache Maven Shade.
Étape 2 : Développer le code de l'extension
Pour développer une extension dans Function Compute, implémentez la méthode handleRequest de l'interface PojoRequestHandler. Cette méthode reçoit les objets ExtensionRequest et le Context, puis renvoie le résultat du traitement à l'aide de la classe ExtensionResponse .
-
Tenez compte des points suivants lors du développement du code.
Analyser le contenu du message
Pour obtenir des informations sur le format des messages d'événements transmis par DataWorks, consultez la rubrique Référence du développeur : Liste des événements et format des messages. Dans le format du message,
messageBodycontient le contenu spécifique du message. Lors du développement, utilisez le champmessageBody.eventCodepour identifier le type de message et le champmessageIdpour obtenir les détails du message.Logique de traitement
Rédigez la logique de traitement des messages en fonction de vos besoins métier. Les méthodes suivantes permettent d'améliorer l'efficacité :
Utilisez la Fonctionnalité avancée : Configurer les paramètres d'une extension. Par exemple, vous pouvez utiliser le paramètre
extension.project.disabledpour désactiver l'extension pour un espace de travail spécifique.Lorsque vous traitez 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 champiddans le message d'événement. Pour plus d'informations, consultez la rubrique Annexe : Format des messages envoyés de DataWorks vers EventBridge.Résultat du traitement
Lors de l'emballage du résultat
ExtensionResponse, spécifiez unCheckResult. DataWorks lit leCheckResultfinal pour déterminer si le processus échoue.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. Vous devez enquêter et résoudre l'erreur afin de garantir que les processus suivants s'exécutent comme prévu.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é.
Téléchargez le fichier d'exemple de code fc_dataworks_demo01-1.0-SNAPSHOT.jar et téléversez-le dans Function Compute pour vérification. Le code suivant fournit plus de détails :
-
Une fois le code développé, emballez le programme dans un fichier exécutable
.jarou.zipdestiné à Function Compute.Ouvrez une fenêtre de ligne de commande dans votre éditeur de code, accédez au répertoire racine et exécutez la commande mvn clean package pour emballer le code.
Si la compilation échoue, ajustez le code en fonction des messages d'erreur affichés dans la sortie.
Si la compilation réussit, le fichier JAR compilé se trouve dans le répertoire target du projet. Le nom du fichier est basé sur les champs artifactId et version du fichier pom.xml, par exemple java-example-1.0-SNAPSHOT.jar.
RemarqueSous macOS et Linux, assurez-vous que les fichiers de code disposent des autorisations de lecture et d'exécution avant l'emballage.
Tâches Function Compute
Étape 1 : Déployer l'extension
Connectez-vous à la console Function Compute 2.0 et accédez à la page Tasks.
-
Cliquez sur Create Function pour créer un service et la fonction requise, puis déployez l'extension. Les messages d'événements spécifiques de l'extension développée sont envoyés directement à ce service. Pour plus d'informations, consultez les rubriques Créer un service et Créer une fonction. Dans le panneau Create Function, sélectionnez Create with built-in runtimes, choisissez Process event requests comme type de gestionnaire, sélectionnez Upload code via JAR package comme méthode de téléversement du code, puis téléversez le package de code préparé.
Sélectionnez un environnement d'exécution en fonction de votre code. Le package d'exemple fourni à l'étape 1,
fc_dataworks_demo01-1.0-SNAPSHOT.jar, correspond à l'environnement Java 8. Téléchargezfc_dataworks_demo01-1.0-SNAPSHOT.jarsur votre ordinateur local et téléversez-le en tant que code package. Configurez les autres paramètres selon vos besoins.Pour plus d'informations sur les opérations relatives aux fonctions, consultez la rubrique Gérer les fonctions.
-
Modifiez le gestionnaire de fonction.
Vous pouvez configurer le gestionnaire dans la console Function Compute. Pour les fonctions Java, le format du gestionnaire est
[Package name].[Class name]::[Method name]. Par exemple :Nom du package :
example.Nom de la classe :
HelloFC.Nom de la méthode :
handleRequest.
Le gestionnaire peut être configuré comme suit :
example.HelloFC::handleRequest.RemarqueLe gestionnaire par défaut dans Function Compute est example.App::handleRequest. Modifiez le gestionnaire en fonction de votre code réel. Pour plus d'informations sur les gestionnaires, consultez la rubrique Gestionnaires.
Étape 2 : Tester la fonction
Après avoir créé la fonction, accédez à la page des détails de la fonction, cliquez sur l'onglet Code et cliquez sur Test Function. Si le message Execution succeeded s'affiche, vous pouvez procéder à l'enregistrement de l'extension dans DataWorks.
Tâches DataWorks
Étape 1 : Enregistrer l'extension
Après avoir déployé l'extension dans Function Compute, enregistrez-la dans DataWorks.
-
Connectez-vous à la 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 accéder à la page Extensions.
-
Cliquez sur , sélectionnez Deploy Based on Function Compute et configurez les informations de l'extension.
Vous pouvez configurer les paramètres selon vos besoins. Le tableau suivant décrit les paramètres.
-
Terminez l'enregistrement.
Cliquez sur OK. Une fois l'enregistrement terminé, vous pouvez afficher l'extension dans la List of Extensions.
Étape 2 : Publier l'extension
Après avoir développé, déployé et enregistré l'extension dans DataWorks, vous devez la tester, l'approuver et la publier. Une fois publiée, les administrateurs autres que le propriétaire de l'extension peuvent activer celle-ci dans Management Center. Pour plus d'informations, consultez la rubrique Appliquer une extension.
Annexe : Format des messages d'événements DataWorks
Le code suivant présente le format de message courant lors de l'utilisation de Function Compute. Le messageBody contient les détails de l'événement DataWorks et varie selon le type de message.
{
"blockBusiness": true,
"eventCategoryType": "resources-download",// The event category.
"eventType": "upload-data-to-table",// The event type.
"extensionBizId": "job_6603643923728775070",
"messageBody": {
// The message content varies by message type. The following two fields are fixed.
"tenantId": 28378****10656, // The tenant ID. Each Alibaba Cloud account corresponds to a tenant in DataWorks, and each tenant has a unique ID. You can find this ID in the user information section in the upper-right corner of DataStudio.
"eventCode": "xxxx"//
},
"messageId": "52d44ee7-b51f-4d4d-afeb-*******" // The event ID. This is a unique identifier for the event.
}
Le contenu du champ messageBody varie selon le type de message. Pour plus de détails sur les messages d'événements, consultez la rubrique Référence du développeur : Liste des événements et format des messages.
Documentation connexe
Pour plus d'informations sur Function Compute, consultez la rubrique Présentation de Function Compute
Vous pouvez également déployer une extension à l'aide d'un service autogéré. Pour plus d'informations, consultez la rubrique Développer et déployer une extension à l'aide d'un service autogéré.