DataWorks, farklı kiracılardaki görevleri tetiklemek ve çalıştırmak için HTTP tetikleyici düğümü sağlar. Bu konu, DataWorks'te çapraz kiracı iş akışlarını düzenlemek amacıyla bir HTTP tetikleyici düğümünün nasıl yapılandırılacağını açıklar.
Arka Plan
Birçok kuruluşta veri işleme ve analiz iş akışları birden fazla kiracı arasında veya aynı kiracı altındaki farklı bölgelerde çalışır. DataWorks bu senaryoları desteklemek için HTTP tetikleyici düğümünü sunar:
Farklı kiracı ortamlarındaki bağımlı görevlerin orkestrasyonu.
Aynı kiracı altında birden fazla bölgedeki farklı zamanlama sistemleri arasındaki iş akışlarının koordinasyonu. Örneğin, B Sistemindeki bir iş akışı yalnızca A Sistemindeki bir düğüm görevini tamamladıktan sonra başlayabilir.
Aşağıdaki diyagram, çapraz kiracı senaryosunda tetikleme mekanizmasının nasıl çalıştığını gösterir.
Diyagram açıklaması: Kiracı B ortamındaki bir iş akışı bir HTTP tetikleyici düğümü içerir ve Operation Center'a dağıtılır. İş akışı çalıştırıldığında, yukarı akış düğümleri zamanlamalarına göre sırayla yürütülür. Yürütme HTTP tetikleyici düğümüne ulaştığında, düğüm ve aşağı akış görevleri bekleme durumuna geçer. HTTP tetikleyici düğümü Kiracı A'dan gelen bir tetikleme komutunu aldıktan ve doğruladıktan sonra, HTTP tetikleyici düğümü ve aşağı akış görevleri sırayla çalışmaya başlar.
Ön Koşullar
Her biri ayrı bir kök hesaba sahip iki kiracı ortamınız vardır.
İki ortamın her birinde bir çalışma alanı oluşturdunuz.
Her ortamdaki çalışma alanıyla bir serverless kaynak grubunu ilişkilendirdiniz.
-
Tetikleyen çalışma alanıyla ilişkili serverless kaynak grubunun VPC'si için bir Internet NAT Gateway ve bir EIP yapılandırdınız.
ÖnemliBir shell düğümü bir HTTP tetikleyici düğümünü tetiklediğinde, tetikleme komutu genel internet üzerinden gönderilmelidir.
Tetikleme komutunu gönderen shell düğümünü içeren çalışma alanıyla bir MaxCompute hesaplama kaynağını ilişkilendirdiniz. Daha fazla bilgi için bkz. Hesaplama kaynaklarını yönetme.
Notlar
HTTP tetikleyici düğümü yalnızca bir tetikleyici olarak işlev görür. Düğüm için herhangi bir kod yapılandırmanıza gerek yoktur.
-
Çalışma alanı türünüzle eşleşen örneği izleyin:
Use Data Studio (New Version) çalışma alanları: Data Studio (yeni sürüm) örneğini izleyin.
-
Use Data Studio (New Version) özelliğini kullanmayan çalışma alanları: eski Data Studio örneğini izleyin.
NotUse Data Studio (New Version) özelliğini etkinleştirmemiş çalışma alanlarında yalnızca DataWorks Enterprise Edition HTTP tetikleyici düğümlerini destekler.
Data Studio (yeni sürüm) örneği
Kiracı A'dan Kiracı B'nin Data Studio (yeni sürüm) ortamında düğüm yürütmeyi tetiklemek istiyorsanız aşağıdaki talimatları izleyin.
Kiracı B ortamı: HTTP tetikleyici düğüm iş akışı oluşturma
Uzaktan tetiklenecek olan Kiracı B'nin çalışma alanında bir iş akışı oluşturun. İş akışı, tetikleme komutunu alan bir HTTP tetikleyici düğümü ve çapraz kiracı tetikleme etkisini doğrulamanızı sağlayan bir aşağı akış iş düğümü (bu konuda örnek olarak bir shell düğümü kullanılmıştır) içermelidir.
-
Data Studio'ya gidin.
DataWorks çalışma alanı listesi sayfasına gidin, üst gezinme çubuğunda hedef bölgeye geçin, hedef çalışma alanını bulun ve ardından Data Studio'ya gitmek için Operation sütununda seçeneğine tıklayın.
-
Bir iş akışı oluşturun.
Sol gezinme bölmesinde
simgesine tıklayın, Project Directory yanındaki
simgesine tıklayın ve ardından Create Workflow öğesini seçerek Create Workflow iletişim kutusunu açın.Create Workflow iletişim kutusunda iş akışı için özel bir Name belirtin (bu örnekte
HTTP_Workflow) ve ardından iş akışı düzenleme sayfasına gitmek için Confirm öğesine tıklayın.
-
Düğümler oluşturun.
İş akışı düzenleme sayfasındaki Create Node panelinde düğümünü ve General > Shell düğümünü iş akışı düzenleme sayfasına sürükleyin.
Shell düğümünü HTTP tetikleyici düğümünün aşağı akış düğümü olarak ekleyin.
-
İş akışındaki shell düğümünü düzenleyin.
ÖnemliHTTP tetikleyici düğümü yalnızca bir tetikleyici olarak işlev görür. Düğüm için herhangi bir kod yapılandırmanıza gerek yoktur.
-
Shell düğümünün üzerine gelin ve Open Node öğesine tıklayın. Düğüm düzenleme sayfasına aşağıdaki içeriği girin.
echo "DataWorks"; Shell düğümü düzenleme sayfasının sağ tarafındaki Scheduling Settings bölümünde Resource Group ayarını çalışma alanınızla ilişkili serverless kaynak grubuna ayarlayın.
Shell düğümü düzenleme sayfasının üstündeki araç çubuğunda Save öğesine tıklayın.
-
-
İş akışını dağıtın.
Proje dizininde oluşturduğunuz
HTTP_Workflowiş akışını bulun. İş akışı düzenleme sayfasının sağ tarafındaki Scheduling Settings bölümünde Instance generation method ayarını Instant generation after publishing olarak ayarlayın.Dağıtım panosunu açmak için araç çubuğundaki
düğmesine tıklayın ve ardından Start Release Production öğesine tıklayın. Görev, dağıtım denetimi süreci aracılığıyla dağıtılacaktır. Daha fazla bilgi için bkz. Düğümleri dağıtma.
-
HTTP örnek parametre bilgilerini kaydedin.
HTTP tetikleyici düğümü zamanlanmış örnekleri hemen oluşturduğundan, HTTP örnek parametre bilgilerini görüntülemek ve kaydetmek için Operation Center'a gidebilirsiniz.
-
DataWorks konsolunda oturum açın. Hedef bölgede sol gezinme bölmesinden seçeneğine tıklayın. Açılan listeden bir çalışma alanı seçin ve Go to Operation Center öğesine tıklayın.
Sol gezinme bölmesinde seçeneğine tıklayarak Cycle Examples sayfasına gidin.
-
Oluşturduğunuz HTTP tetikleyici düğüm örneğini bulun ve örneğin Task ID ile Scheduled Time değerlerini kaydedin.
NotÖrneğin Task ID değerini görüntülemek için HTTP tetikleyici düğüm örneğinin adının üzerine gelin.
-
Yerel ortam: Örnek kodu hazırlama
-
POM bağımlılıklarını ekleyin.
TriggerSchedulerTaskInstance hata ayıklama sayfasına giderek SDK Example sekmesindeki eksiksiz SDK kurulum bilgilerini görüntüleyebilirsiniz.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.example.demo.CrossTenantTriggerSchedulerTaskInstance</mainClass> <!-- Replace this with your main class --> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <!-- Execute during the package phase --> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>dataworks_public20240518</artifactId> <version>6.2.0</version> </dependency> </dependencies>ÖnemliKod geliştirmeyi tamamladıktan sonra
mainClassparametresini oluşturduğunuz Java kodunun ana sınıf adıyla değiştirin. Ana sınıf adı, tam paket adının ardından sınıf adının geldiği biçimi kullanır. Örneğin, com.example.demo.CrossTenantTriggerSchedulerTaskInstance. -
Kodu geliştirin.
package com.example.demo; import com.aliyun.dataworks_public20240518.Client; import com.aliyun.dataworks_public20240518.models.TriggerSchedulerTaskInstanceRequest; import com.aliyun.dataworks_public20240518.models.TriggerSchedulerTaskInstanceResponse; import com.aliyun.teautil.models.RuntimeOptions; import java.text.SimpleDateFormat; import java.util.Calendar; public class CrossTenantTriggerSchedulerTaskInstance { // Method to create an Alibaba Cloud DataWorks client public static Client createClient20240518(String accessId, String accessKey, String endpoint) throws Exception { // Initialize OpenAPI configuration object com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config(); config.setAccessKeyId(accessId); // Set AccessKey ID config.setAccessKeySecret(accessKey); // Set AccessKey Secret config.setEndpoint(endpoint); // Set service endpoint return new Client(config); // Return the initialized client instance } // Method to trigger a DataWorks node run public static TriggerSchedulerTaskInstanceResponse runTriggerScheduler(Client client, Long nodeId, String EnvType,Long TriggerTime) throws Exception { TriggerSchedulerTaskInstanceRequest request = new TriggerSchedulerTaskInstanceRequest(); // Create API request object request.setTaskId(nodeId); // Set the node ID to trigger request.setEnvType(EnvType); // Set the project environment request.setTriggerTime(TriggerTime); // Set the scheduled trigger time (millisecond timestamp) RuntimeOptions runtime = new RuntimeOptions(); // Initialize runtime options return client.triggerSchedulerTaskInstanceWithOptions(request, runtime); // Execute the API call and return the response } // Main entry method public static void main(String[] args) throws Exception { // Initialize node ID (example value) String nodeId1 = ""; // Initialize project environment (example value) String EnvTypeStr = ""; // Initialize scheduled time (example value) String cycTimeStr = ""; // Process command-line arguments in a for loop, assigning values to nodeId1, cycTimeParam, and bizTimeParam int i; for(i = 0; i < args.length; ++i) { if (i == 0) { nodeId1 = args[i]; } else if (i == 1) { EnvTypeStr = args[i]; }else if (i == 2) { cycTimeStr = args[i]; } } // Convert string to Long type node ID Long nodeId = Long.parseLong(nodeId1); // Print usage instructions System.out.println("Usage: java -jar test-1.0-SNAPSHOT.jar nodeId EnvTypeStr cycTimeParam"); // Parse scheduled time and convert to timestamp SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = Calendar.getInstance(); calendar.setTime(sdft.parse(cycTimeStr)); // Parse time string Long cycTime = calendar.getTimeInMillis(); // Get millisecond timestamp // Print debug info (timestamp) System.out.println("Scheduled timestamp: " + cycTime); // Configure Alibaba Cloud service parameters String endpoint = "dataworks.cn-hangzhou.aliyuncs.com"; // Service endpoint String accessId = "xxx"; // AccessKey ID String accessKey = "xxx"; // AccessKey Secret // Create Alibaba Cloud client instance Client client = createClient20240518(accessId, accessKey, endpoint); // Execute trigger node operation TriggerSchedulerTaskInstanceResponse response = runTriggerScheduler(client, nodeId,EnvTypeStr, cycTime); // Print API response result (JSON format) System.out.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(response))); } }Yukarıdaki kodda bulunan
endpoint,accessIdveaccessKeyparametrelerini aşağıdaki parametre açıklamalarına göre gerçek değerlerle değiştirin.Parametre
Açıklama
endpoint
Hedef HTTP tetikleyici düğümünün bulunduğu çalışma alanının uç noktası. Daha fazla bilgi için bkz. Alibaba Cloud OpenAPI Geliştirici Portalı uç noktaları.
accessId
Hedef HTTP tetikleyici düğümünün bulunduğu çalışma alanına sahip Alibaba Cloud hesabının
AccessKey IDdeğeri.DataWorks konsolunda oturum açın, üst gezinme çubuğunun sağ üst köşesindeki profil simgesinin üzerine gelin ve ardından hedef HTTP tetikleyici düğümüne sahip RAM kullanıcısının
AccessKey IDveAccessKey Secretdeğerlerini almak için AccessKey bölümüne gidin.UyarıBir Alibaba Cloud kök hesabının
AKdeğeri tam izinlere sahiptir. AK sızdırılırsa ciddi güvenlik riskleri oluşabilir. Hedef çalışma alanında yalnızca çalışma alanı yöneticisi rolüne sahip bir RAM kullanıcısınınAKdeğerini kullanmanızı öneririz.accessKey
Hedef HTTP tetikleyici düğümünün bulunduğu çalışma alanına sahip Alibaba Cloud hesabının
AccessKey Secretdeğeri. Yukarıdaki kodu
jar-with-dependencies.jarson ekiyle bir JAR dosyasında paketleyin.
Kiracı A ortamı: Bir shell düğümü yapılandırma
Tetikleme komutunu göndermek için Kiracı A'nın çalışma alanında bir shell düğümü oluşturun ve yapılandırın.
-
Data Studio'ya gidin.
DataWorks çalışma alanı listesi sayfasına gidin, üst gezinme çubuğunda hedef bölgeye geçin, hedef çalışma alanını bulun ve ardından Data Studio'ya gitmek için Operation sütununda seçeneğine tıklayın.
-
Bir JAR kaynağı yükleyin.
Sol gezinme bölmesinde kaynak yönetimine gitmek için
simgesine tıklayın.Resource Management sayfasında Create düğmesine veya
simgesine tıklayın ve ardından seçeneğini belirleyin.New Resource and Function iletişim kutusunda kaynak adı olarak
http_node_work.jargirin ve Confirm (Onayla) öğesine tıklayın.Kaynak ayrıntıları sayfasında Click Upload düğmesine tıklayarak Yerel ortam: Örnek kodu hazırlama adımında oluşturduğunuz JAR dosyasını yükleyin ve ardından Data Sources ayarını ilişkilendirdiğiniz MaxCompute veri kaynağına ayarlayın.
-
Kaynağı kaydedin ve dağıtın.
JAR kaynağı yüklendikten sonra dağıtım panosunu açmak için araç çubuğundaki
düğmesine tıklayın ve ardından Start Release Production öğesine tıklayın. Dağıtım denetimi sürecini tamamlayın. Daha fazla bilgi için bkz. Düğümleri dağıtma. -
Bir tetikleme shell düğümü oluşturun.
Sol gezinme bölmesinde
simgesine tıklayın ve ardından Project Directory yanındaki
simgesine tıklayın.General > Shell seçeneğini belirleyerek New Node iletişim kutusunu açın.
Düğüm için özel bir Name belirtin ve düğüm düzenleme sayfasına gitmek için Confirm öğesine tıklayın.
-
Tetikleme shell düğümünü düzenleyin.
Shell düğümü düzenleme sayfasının sol gezinme bölmesinde
simgesine tıklayın ve yüklediğiniz JAR kaynağını (http_node_work.jar) bulun.Yüklediğiniz JAR kaynağına sağ tıklayın ve Insert Resource Path öğesini seçin.
Shell düğümündeki tetikleyici kodu yürütme parametrelerini tamamlayın.
##@resource_reference{"http_node_work.jar"} java -jar http_node_work.jar nodeId "EnvTypeStr" "cycTimeParam"
Parametre
Açıklama
java -jar
JAR yürütme komutu.
http_node_work.jar
Başvuruda bulunduğunuz kaynağın adı.
nodeIdKiracı B ortamı: HTTP tetikleyici düğüm iş akışı oluşturma adımında kaydettiğiniz HTTP tetikleyici düğümünün Task ID değeri.
EnvTypeStrHedef HTTP tetikleyici düğümünün proje ortamı. Bu konuda HTTP tetikleyici düğümü üretim ortamına dağıtılır. Bu parametreyi
Prodolarak ayarlayın.HTTP tetikleyici düğümünü geliştirme ortamında çalıştırmak için bu parametreyi
Devolarak ayarlayın.
cycTimeParamKiracı B ortamı: HTTP tetikleyici düğüm iş akışı oluşturma adımında kaydettiğiniz HTTP tetikleyici düğüm görevinin Scheduled Time değeri. Zaman biçimi
yyyy-MM-dd HH:mm:ssşeklindedir. -
Tetikleme shell düğümünü yapılandırın.
Shell düğümü düzenleme sayfasının sağ tarafındaki Scheduling Settings bölümünde yolunu izleyin ve ardından Resource Group olarak çalışma alanıyla ilişkili serverless kaynak grubunu seçin.
Çalıştırma ve sonuçları görüntüleme
Kiracı B'deki HTTP tetikleyici düğümünü ve aşağı akış görevlerini tetiklemek için Kiracı A'daki shell düğümünü çalıştırın.
-
Tetikleme shell düğümünü çalıştırın.
Kiracı A ortamı: Bir shell düğümü yapılandırma adımında yapılandırdığınız shell düğümünün üzerindeki araç çubuğunda Run öğesine tıklayın.
-
Yürütme sonuçlarını görüntüleyin.
Kiracı B ortamına gidin ve yürütme sonuçlarını görüntülemek için aşağıdaki adımları izleyin.
-
DataWorks konsolunda oturum açın. Hedef bölgede sol gezinme bölmesinden seçeneğine tıklayın. Açılan listeden bir çalışma alanı seçin ve Go to Operation Center öğesine tıklayın.
Sol gezinme bölmesinde zamanlanmış örnek sayfasına gitmek için seçeneğine tıklayın.
Tetkilemek istediğiniz HTTP tetikleyici düğüm örneğini bulun ve yürütme sonuçlarını görüntüleyin.
-
Eski Data Studio örneği
Kiracı A'dan Kiracı B'nin eski Data Studio ortamında düğüm yürütmeyi tetiklemek istiyorsanız aşağıdaki talimatları izleyin.
Kiracı B ortamı: HTTP tetikleyici düğüm iş akışı oluşturma
Uzaktan tetiklenecek olan Kiracı B'nin çalışma alanında bir iş akışı oluşturun. İş akışı, tetikleme komutunu alan bir HTTP tetikleyici düğümü ve çapraz kiracı tetikleme etkisini doğrulamanızı sağlayan bir aşağı akış iş düğümü (bu konuda örnek olarak bir shell düğümü kullanılmıştır) içermelidir.
Bir HTTP tetikleyici düğümü oluşturun. Daha fazla bilgi için bkz. HTTP tetikleyici düğümü oluşturma.
-
Bir shell düğümü oluşturun. Daha fazla bilgi için bkz. Shell düğümü oluşturma.
Düğüm düzenleme sayfasına aşağıdaki içeriği girin. Shell düğümü düzenleme sayfasının sağ tarafındaki zamanlama ayarlarında RUN Attribute ve Resource Group for Scheduling öğelerini yapılandırın. Ardından düğüm yapılandırmasını kaydetmek için Save öğesine tıklayın.
echo "DataWorks"; İş akışını Operation Center'a dağıtın.
-
HTTP örnek parametre bilgilerini kaydedin.
HTTP tetikleyici düğümü yalnızca
T+1zamanlanmış örnekleri oluşturmayı desteklediğinden, ertesi gün iş akışının sağ üst köşesindeki
simgesine tıklayarak altındaki Operation and Maintenance Center bölümünde HTTP örnek parametre bilgilerini görüntüleyebilirsiniz.Oluşturduğunuz HTTP tetikleyici düğüm örneğini bulun ve örneğin Task ID, Scheduled Time ve Business Date değerlerini kaydedin.
NotÖrneğin Task ID değerini görüntülemek için HTTP tetikleyici düğüm örneğinin adının üzerine gelin.
Yerel ortam: Kodu hazırlama
-
POM bağımlılıklarını ekleyin.
RunTriggerNode hata ayıklama sayfasına giderek SDK Example sekmesindeki eksiksiz SDK kurulum bilgilerini görüntüleyebilirsiniz.
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.example.demo.CrossTenantTriggerNode</mainClass> <!-- Replace this with your main class --> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>dataworks_public20200518</artifactId> <version>7.0.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.3.8</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-console</artifactId> <version>0.0.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>tea-util</artifactId> <version>0.2.23</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>1.0.1</version> </dependency> </dependencies>ÖnemliKod geliştirmeyi tamamladıktan sonra
mainClassparametresini oluşturduğunuz Java kodunun ana sınıf adıyla değiştirin. Ana sınıf adı, tam paket adının ardından sınıf adının geldiği biçimi kullanır. Örneğin, com.example.demo. CrossTenantTriggerNode. -
Kodu geliştirin.
package com.example.demo; import java.text.SimpleDateFormat; import java.util.Calendar; import com.aliyun.dataworks_public20200518.Client; import com.aliyun.dataworks_public20200518.models.RunTriggerNodeRequest; import com.aliyun.dataworks_public20200518.models.RunTriggerNodeResponse; import com.aliyun.teautil.models.RuntimeOptions; public class CrossTenantTriggerNode { // Method to create an Alibaba Cloud DataWorks client public static Client createClient20200518(String accessId, String accessKey, String endpoint) throws Exception { // Initialize OpenAPI configuration object com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config(); config.setAccessKeyId(accessId); // Set AccessKey ID config.setAccessKeySecret(accessKey); // Set AccessKey Secret config.setEndpoint(endpoint); // Set service endpoint return new Client(config); // Return the initialized client instance } // Method to trigger a DataWorks node run public static RunTriggerNodeResponse runTriggerNode(Client client, Long nodeId, Long cycleTime, Long bizDate, Long appId) throws Exception { RunTriggerNodeRequest request = new RunTriggerNodeRequest(); // Create API request object request.setNodeId(nodeId); // Set the node ID to trigger request.setCycleTime(cycleTime); // Set cycle time (millisecond timestamp) request.setBizDate(bizDate); // Set business date (millisecond timestamp) request.setAppId(appId); // Set application ID RuntimeOptions runtime = new RuntimeOptions(); // Initialize runtime options return client.runTriggerNodeWithOptions(request, runtime); // Execute the API call and return the response } // Main entry method public static void main(String[] args) throws Exception { // Initialize node ID (example value) String nodeId1 = ""; // Initialize scheduled time and business date (example values) String cycTimeStr = ""; String bizTimeParam = ""; // Process command-line arguments in a for loop, assigning values to nodeId1, cycTimeParam, and bizTimeParam int i; for(i = 0; i < args.length; ++i) { if (i == 0) { nodeId1 = args[i]; } else if (i == 1) { cycTimeStr = args[i]; }else if (i == 2) { bizTimeParam = args[i]; } } // Convert string to Long type node ID Long nodeId = Long.parseLong(nodeId1); // Print usage instructions System.out.println("Usage: java -jar test-1.0-SNAPSHOT.jar nodeId cycTimeParam bizTimeParam"); // Parse scheduled time and convert to timestamp SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = Calendar.getInstance(); calendar.setTime(sdft.parse(cycTimeStr)); // Parse time string Long cycTime = calendar.getTimeInMillis(); // Get millisecond timestamp // Parse business date and convert to timestamp SimpleDateFormat sdfti = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendari = Calendar.getInstance(); calendari.setTime(sdfti.parse(bizTimeParam)); Long bizTime = calendari.getTimeInMillis(); // Print debug info (timestamps) System.out.println("Scheduled timestamp: " + cycTime); System.out.println("Business date timestamp: " + bizTime); // Configure Alibaba Cloud service parameters String endpoint = "dataworks.cn-hangzhou.aliyuncs.com"; // Service endpoint String accessId = "xxx"; // AccessKey ID String accessKey = "xxx"; // AccessKey Secret Long appId = Long.valueOf(xxx); // Application ID (replace with actual value) // Create Alibaba Cloud client instance Client client = createClient20200518(accessId, accessKey, endpoint); // Execute trigger node operation RunTriggerNodeResponse response = runTriggerNode(client, nodeId, cycTime, bizTime, appId); // Print API response result (JSON format) System.out.println(com.aliyun.teautil.Common.toJSONString(com.aliyun.teautil.Common.toMap(response))); } }Yukarıdaki kodda bulunan
endpoint,accessId,accessKeyveappIdparametrelerini gerçek değerlerle değiştirin.Parametre
Açıklama
endpoint
Hedef HTTP tetikleyici düğümünün bulunduğu çalışma alanının uç noktası. Daha fazla bilgi için bkz. Alibaba Cloud OpenAPI Geliştirici Portalı uç noktaları.
accessId
Hedef HTTP tetikleyici düğümünün bulunduğu çalışma alanına sahip Alibaba Cloud hesabının
AccessKey IDdeğeri.DataWorks konsolunda oturum açın, üst gezinme çubuğunun sağ üst köşesindeki profil simgesinin üzerine gelin ve ardından
AccessKey IDveAccessKey Secretdeğerlerini almak için AccessKey bölümüne gidin.UyarıBir Alibaba Cloud kök hesabının
AKdeğeri tam izinlere sahiptir. AK sızdırılırsa ciddi güvenlik riskleri oluşabilir. Hedef çalışma alanında yalnızca çalışma alanı yöneticisi rolüne sahip bir RAM kullanıcısınınAKdeğerini kullanmanızı öneririz.accessKey
Hedef HTTP tetikleyici düğümünün bulunduğu çalışma alanına sahip Alibaba Cloud hesabının
AccessKey Secretdeğeri.appId
Hedef HTTP tetikleyici düğümünün bulunduğu çalışma alanının kimliği. Çalışma alanı kimliğini Administration bölümünde görüntüleyebilirsiniz.
Yukarıdaki kodu
jar-with-dependencies.jarson ekiyle bir JAR dosyasında paketleyin.
Kiracı A ortamı: Bir shell düğümü yapılandırma
Kiracı B'nin çalışma alanındaki HTTP tetikleyici düğümünü tetiklemek için Kiracı A'nın çalışma alanında bir shell düğümü yapılandırmak üzere şu adımları izleyin.
-
Bir JAR kaynağı oluşturun ve yükleyin.
Yerel ortam: Kodu hazırlama adımında paketlediğiniz JAR dosyasını bir MaxCompute kaynağı olarak oluşturun. Daha fazla bilgi için bkz. Kaynak oluşturma ve kullanma.
-
Tetikleme shell düğümünü geliştirin.
Bir shell düğümü oluşturun ve shell düğümünde bir MaxCompute kaynağına başvurun. Shell düğümündeki tetikleyici kodu yürütme parametrelerini tamamlayın. Aşağıda örnek kod verilmiştir:
##@resource_reference{"http_node_work.jar"} java -jar http_node_work.jar nodeId "cycleTime" "bizDate"
Parametre
Açıklama
http_node_work.jar
Başvuruda bulunduğunuz kaynağın adı.
nodeIdKiracı B ortamı: HTTP tetikleyici düğüm iş akışı oluşturma adımında kaydettiğiniz HTTP tetikleyici düğümünün görev kimliği.
cycleTimeKiracı B ortamı: HTTP tetikleyici düğüm iş akışı oluşturma adımında kaydettiğiniz tetikleme düğümü görevinin Scheduled Time değeri. Zaman biçimi
yyyy-MM-dd HH:mm:ssşeklindedir.
bizDateKiracı B ortamı: HTTP tetikleyici düğüm iş akışı oluşturma adımında kaydettiğiniz tetikleme düğümü görevinin Business Date değeri. Zaman biçimi
yyyy-MM-dd HH:mm:ssşeklindedir. -
Tetikleme shell düğümünü yapılandırın.
Shell düğümü düzenleme sayfasının sağ tarafındaki Scheduling Settings bölümünde yolunu izleyin ve bunu çalışma alanıyla ilişkili serverless kaynak grubuna ayarlayın.
Çalıştırma ve sonuçları görüntüleme
Kiracı B'deki HTTP tetikleyici düğümünü ve aşağı akış görevlerini tetiklemek için Kiracı A'daki shell düğümünü çalıştırın.
-
Tetikleme shell düğümünü çalıştırın.
Kiracı A ortamı: Bir shell düğümü yapılandırma adımında yapılandırdığınız shell düğümünün üzerindeki araç çubuğunda düğüm görevini çalıştırmak için
simgesine tıklayın. -
Yürütme sonuçlarını görüntüleyin.
Kiracı B ortamına gidin ve yürütme sonuçlarını görüntülemek için aşağıdaki adımları izleyin.
-
DataWorks konsolunda oturum açın. Hedef bölgede sol gezinme bölmesinden seçeneğine tıklayın. Açılan listeden bir çalışma alanı seçin ve Go to Operation Center öğesine tıklayın.
Sol gezinme bölmesinde zamanlanmış örnek sayfasına gitmek için seçeneğine tıklayın.
Tetkilemek istediğiniz HTTP tetikleyici düğüm örneğini bulun ve yürütme sonuçlarını görüntüleyin.
-