日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

安裝Java SDK

本文將詳細介紹云工作流的Java SDK安裝步驟及調用示例。以Java語言為例,本文將講解如何調用云工作流以創建流程接口、獲取流程相關信息接口,以及異步啟動流程執行的接口為例,并提供完整的集成步驟。

前提條件

調用阿里云OpenAPI通常需要設置訪問密鑰(AccessKey)。請確保已創建AccessKey。具體操作,請參見創建AccessKey。為了避免憑據泄露,常見的方案是將其寫入到環境變量中,更多安全方案請參見使用訪問憑據訪問阿里云OpenAPI最佳實踐。

環境要求

最低要求Java 8。

步驟一:引入SDK

阿里云SDK支持泛化與特化兩種方式調用OpenAPI,詳情參見泛化調用與特化調用,不同的調用方式需要引入的SDK也不同。

特化調用

您可以訪問OpenAPI門戶網站,搜索您需要的產品,查看產品支持的SDK語言及安裝方法,然后在您的項目中引入SDK。本案例的SDK獲取步驟如下:

  1. 訪問云工作流 SDK

  2. 所有語言欄目中選擇您需要的SDK語言。

  3. 選擇您需要的安裝方式,將代碼復制到您的項目中。

  4. 在您的項目中載入該依賴包。

其Java語言的Maven依賴配置文件如下:

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>fnf20190315</artifactId>
  <version>1.1.2</version>
</dependency>

泛化調用

泛化調用方式不依賴任何一個產品的SDK,只依賴如下核心包com.aliyun.tea-openapi。其Java語言Maven依賴安裝配置文件如下,最新版本請參見tea-openapi。

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-openapi</artifactId>
      <version>0.2.8</version>
    </dependency>

步驟二:初始化Client

請根據云工作流(FNF)所屬地域正確填寫服務接入地址(又稱“訪問端點”或“Endpoint”),關于服務接入地址的更多信息,請參見支持的地域

以下將以特化調用代碼為例,詳細說明調用過程。如您選擇泛化調用方案,更多信息請參見泛化調用與特化調用。

使用AK初始化

說明

阿里云賬號AccessKey擁有所有OpenAPI的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。

本示例以將AccessKey配置在環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實現身份驗證為例。

import com.aliyun.tea.*;

public class Sample {
    /**
     * <b>description</b> :
     * <p>使用AK&amp;SK初始化賬號Client</p>
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.fnf20190315.Client createClient() throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
                
        config.endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        return new com.aliyun.fnf20190315.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.fnf20190315.Client client = Sample.createClient();
    }
}

步驟三:使用已初始化的Client調用云工作流(FNF) API

說明

初始化Client后,您可以通過Client調用云工作流API。

接口名稱:CreateFlow

此接口用于創建一個流程。在調用過程中,您需要根據實際業務需求創建請求對象,并設置相應的參數及運行時配置。同時,您也可以自定義運行時配置以滿足特定需求。

  // 創建請求對象
  com.aliyun.fnf20190315.models.CreateFlowRequest createFlowRequest = new com.aliyun.fnf20190315.models.CreateFlowRequest()
                // 您的流程名稱
                .setName("your_flow_name")
                // 流程定義,遵循 Flow Definition Language (FDL)語法標準??紤]到向前兼容,當系統支持兩種規范的流程定義規范。
                .setDefinition("舊版:
\"
type: flow
version: v1
name: my_flow_name
steps:
  - type: pass
    name: mypass
\"

新版:
\"
Type: StateMachine
SpecVersion: v1
Name: my_flow_name
StartAt: my_state
States:
  - Type: Pass
    Name: my_state
    End: true
\"")            
                // 流程描述
                .setDescription("my test flow")
                // 流程類型
                .setType("FDL");
        // 運行時配置        
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();

以下是使用AK創建一個流程的完整示例代碼:

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用AK&amp;SK初始化賬號Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.fnf20190315.Client createClient() throws Exception {

        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        config.endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        return new com.aliyun.fnf20190315.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.fnf20190315.Client client = Sample.createClient();
        // 創建請求對象
        com.aliyun.fnf20190315.models.CreateFlowRequest createFlowRequest = new com.aliyun.fnf20190315.models.CreateFlowRequest()
                // 您的流程名稱
                .setName("your_flow_name")
                // 流程定義,遵循 Flow Definition Language (FDL)語法標準??紤]到向前兼容,當系統支持兩種規范的流程定義規范。
                .setDefinition("舊版:
\"
type: flow
version: v1
name: my_flow_name
steps:
  - type: pass
    name: mypass
\"

新版:
\"
Type: StateMachine
SpecVersion: v1
Name: my_flow_name
StartAt: my_state
States:
  - Type: Pass
    Name: my_state
    End: true
\"")            
                // 流程描述
                .setDescription("my test flow")
                // 流程類型
                .setType("FDL");
        // 運行時配置        
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 復制代碼運行請自行打印 API 的返回值
            client.createFlowWithOptions(createFlowRequest, runtime);
        } catch (TeaException error) {
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            // 錯誤 message
            System.out.println(error.getMessage());
            // 診斷地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            // 錯誤 message
            System.out.println(error.getMessage());
            // 診斷地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

接口名稱:DescribeFlow

此接口用于獲取特定流程的相關信息。在調用過程中,您需要根據實際業務需求創建請求對象,并設置相應的參數及運行時配置。同時,您也可以自定義運行時配置以滿足特定需求。

// 創建請求對象
com.aliyun.fnf20190315.models.DescribeFlowRequest describeFlowRequest = new com.aliyun.fnf20190315.models.DescribeFlowRequest()
                 // 您的流程名稱
                .setName("your_flow_name");
        // 運行時配置        
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();

以下是使用AK獲取流程相關信息的完整示例代碼:

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用AK&amp;SK初始化賬號Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.fnf20190315.Client createClient() throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    
        config.endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        return new com.aliyun.fnf20190315.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.fnf20190315.Client client = Sample.createClient();
        // 創建請求對象
        com.aliyun.fnf20190315.models.DescribeFlowRequest describeFlowRequest = new com.aliyun.fnf20190315.models.DescribeFlowRequest()
                 // 請求參數
                .setName("your_flow_name");
        // 運行時配置        
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 復制代碼運行請自行打印 API 的返回值
            client.describeFlowWithOptions(describeFlowRequest, runtime);
        } catch (TeaException error) {
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            // 錯誤 message
            System.out.println(error.getMessage());
            // 診斷地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            // 錯誤 message
            System.out.println(error.getMessage());
            // 診斷地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

接口名稱:StartExecution

此接口用于異步調用以啟動一個流程的執行。在調用過程中,您需要根據實際業務需求構建請求對象,并設置相應的參數及運行時配置。同時,您也可以自定義運行時配置以滿足特定需求。

// 創建請求對象
com.aliyun.fnf20190315.models.StartExecutionRequest startExecutionRequest = new com.aliyun.fnf20190315.models.StartExecutionRequest()
                // 您的開始執行的流程名稱
                .setFlowName("your_flow_name")
                // 執行名稱
                .setExecutionName("your_exec_name")
                // 執行的輸入
                .setInput("{\"key\":\"value\"}")
                // 流程執行結束后回調TaskToken相關任務
                .setCallbackFnFTaskToken("12");
        // 運行時配置        
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();

以下是使用AK異步調用啟動一個流程的執行的完整示例代碼:

package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用AK&amp;SK初始化賬號Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.fnf20190315.Client createClient() throws Exception {
 
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
                // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        config.endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        return new com.aliyun.fnf20190315.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.fnf20190315.Client client = Sample.createClient();
        // 創建請求對象
        com.aliyun.fnf20190315.models.StartExecutionRequest startExecutionRequest = new com.aliyun.fnf20190315.models.StartExecutionRequest()
                // 您的開始執行的流程名稱
                .setFlowName("your_flow_name")
                // 執行名稱
                .setExecutionName("your_exec_name")
                // 執行的輸入
                .setInput("{\"key\":\"value\"}")
                // 流程執行結束后回調TaskToken相關任務
                .setCallbackFnFTaskToken("12");
        // 運行時配置        
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 復制代碼運行請自行打印 API 的返回值
            client.startExecutionWithOptions(startExecutionRequest, runtime);
        } catch (TeaException error) {
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            // 錯誤 message
            System.out.println(error.getMessage());
            // 診斷地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
            // 錯誤 message
            System.out.println(error.getMessage());
            // 診斷地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

SDK調用示例

您可以使用API級別的多語言SDK Demo進行調試。示例代碼,請參見開發者門戶OpenAPI Explorer。