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

文檔

安裝Node.js SDK

更新時間:

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

前提條件

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

環境要求

Node.js >= 8.x。

步驟一:引入SDK

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

獲取特化調用SDK安裝方式

V2.0 SDK中包含了參數處理、請求組裝以及返回值處理等OpenAPI請求的主要邏輯。開發者只需安裝相關產品的SDK包依賴,即可調用阿里云OpenAPI。

  1. 登錄SDK中心,選擇將要使用產品,例如您將要調用云工作流的API。

  2. 安裝頁面SDK 代系選擇V2.0所有語言選擇TypeScript。然后在快速入門頁簽中,您可以獲取云工作流的SDK安裝方式。

fnf.png

獲取泛化調用SDK安裝方式

泛化調用方式不依賴任何一個產品的SDK,只依賴核心包@alicloud/openapi-client,即可調用阿里云API。Node.js語言安裝配置文件如下,最新版本請參見alicloud/openapi-client

npm i @alicloud/openapi-client

步驟二:初始化Client

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

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

使用AK初始化

說明

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

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

'use strict';

const fnf20190315 = require('@alicloud/fnf20190315');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {
  /**
   * 使用AK&SK初始化賬號Client
   * @return Client
   * @throws Exception
   */
  static createClient() {
  
    let config = new OpenApi.Config({
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    
    config.endpoint = `cn-hangzhou.fnf.aliyuncs.com`;
    
    return new fnf20190315.default(config);
  }
  
  static async main(args) {
    let client = Client.createClient();
  }
}

exports.Client = Client;
Client.main(process.argv.slice(2));

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

說明

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

接口名稱:CreateFlow

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

  // 創建請求對象
  let createFlowRequest = new fnf20190315.CreateFlowRequest({
      // 您的流程名字
      name: 'your_flow_name',
      // 流程定義,遵循 Flow Definition Language (FDL)語法標準。考慮到向前兼容,當系統支持兩種規范的流程定義規范。
      definition: '舊版:
"
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
"',
      // 流程描述
      description: 'your test flow',
      // 流程類型
      type: 'FDL',
    });
    // 運行時配置
    let runtime = new Util.RuntimeOptions({ });

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

'use strict';

const fnf20190315 = require('@alicloud/fnf20190315');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {

  /**
   * 使用AK&SK初始化賬號Client
   * @return Client
   * @throws Exception
   */
  static createClient() {

    let config = new OpenApi.Config({
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    
    config.endpoint = `cn-hangzhou.fnf.aliyuncs.com`;
    return new fnf20190315.default(config);
  }

  static async main(args) {
    let client = Client.createClient();
     // 創建請求對象
  let createFlowRequest = new fnf20190315.CreateFlowRequest({
      // 您的流程名字
      name: 'your_flow_name',
      // 流程定義,遵循 Flow Definition Language (FDL)語法標準。考慮到向前兼容,當系統支持兩種規范的流程定義規范。
      definition: '舊版:
"
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
"',
      // 流程描述
      description: 'your test flow',
      // 流程類型
      type: 'FDL',
    });
    // 運行時配置
    let runtime = new Util.RuntimeOptions({ });
    try {
      // 復制代碼運行請自行打印 API 的返回值
      await client.createFlowWithOptions(createFlowRequest, runtime);
    } catch (error) {
      // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
      // 錯誤 message
      console.log(error.message);
      // 診斷地址
      console.log(error.data["Recommend"]);
      Util.default.assertAsString(error.message);
    }    
  }

}

exports.Client = Client;
Client.main(process.argv.slice(2));

接口名稱:DescribeFlow

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

// 創建請求對象并設置入參
let describeFlowRequest = new fnf20190315.DescribeFlowRequest({
      // 您的流程名稱
      name: 'your_flow_name',
    });
    // 創建運行時配置對象
    let runtime = new Util.RuntimeOptions({ });

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

'use strict';

const fnf20190315 = require('@alicloud/fnf20190315');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {

  /**
   * 使用AK&SK初始化賬號Client
   * @return Client
   * @throws Exception
   */
  static createClient() {
   
    let config = new OpenApi.Config({
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
   
    config.endpoint = `cn-hangzhou.fnf.aliyuncs.com`;
    return new fnf20190315.default(config);
  }

  static async main(args) {
    let client = Client.createClient();
    // 創建請求對象
    let describeFlowRequest = new fnf20190315.DescribeFlowRequest({
      // 您的流程名稱
      name: 'your_flow_name',
    });
    // 運行時配置
    let runtime = new Util.RuntimeOptions({ });
    try {
      // 復制代碼運行請自行打印 API 的返回值
      await client.describeFlowWithOptions(describeFlowRequest, runtime);
    } catch (error) {
      // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
      // 錯誤 message
      console.log(error.message);
      // 診斷地址
      console.log(error.data["Recommend"]);
      Util.default.assertAsString(error.message);
    }    
  }

}

exports.Client = Client;
Client.main(process.argv.slice(2));

接口名稱:StartExecution

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

// 創建請求對象
let startExecutionRequest = new fnf20190315.StartExecutionRequest({
      // 您的開始執行流程名稱
      flowName: 'your_flow_name',
      // 執行名稱
      executionName: 'your_exec_name',
      // 執行的輸入
      input: '{"key":"value"}',
      // 流程執行結束后回調TaskToken相關任務 示例值:12
      callbackFnFTaskToken: '12',
    });
// 運行時配置    
let runtime = new Util.RuntimeOptions({ });

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

'use strict';

const fnf20190315 = require('@alicloud/fnf20190315');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {

  /**
   * 使用AK&SK初始化賬號Client
   * @return Client
   * @throws Exception
   */
  static createClient() {

    let config = new OpenApi.Config({
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // 必填,請確保代碼運行環境設置了環境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    config.endpoint = `cn-hangzhou.fnf.aliyuncs.com`;
    return new fnf20190315.default(config);
  }

  static async main(args) {
    let client = Client.createClient();
    // 創建請求對象
    let startExecutionRequest = new fnf20190315.StartExecutionRequest({
      // 您的開始執行流程名稱
      flowName: 'your_flow_name',
      // 執行名稱
      executionName: 'your_exec_name',
      // 執行的輸入
      input: '{"key":"value"}',
      // 流程執行結束后回調TaskToken相關任務 示例值:12
      callbackFnFTaskToken: '12',
    });
    // 運行時配置
    let runtime = new Util.RuntimeOptions({ });
    try {
      // 復制代碼運行請自行打印 API 的返回值
      await client.startExecutionWithOptions(startExecutionRequest, runtime);
    } catch (error) {
      // 此處僅做打印展示,請謹慎對待異常處理,在工程項目中切勿直接忽略異常。
      // 錯誤 message
      console.log(error.message);
      // 診斷地址
      console.log(error.data["Recommend"]);
      Util.default.assertAsString(error.message);
    }    
  }

}

exports.Client = Client;
Client.main(process.argv.slice(2));

SDK調用示例

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