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

文檔

安裝PHP SDK

本文將詳細(xì)介紹云工作流的PHP SDK安裝步驟及調(diào)用示例。以PHP語言為例,本文將講解如何調(diào)用云工作流以創(chuàng)建流程接口、獲取流程相關(guān)信息接口,以及異步啟動流程執(zhí)行的接口為例,并提供完整的集成步驟。

前提條件

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

環(huán)境要求

重要

執(zhí)行 composer 安裝 SDK 的 PHP 版本要小于或等于實(shí)際運(yùn)行時的 PHP 版本。 例如,在 PHP7.2 環(huán)境下安裝 SDK 后生成 vendor 目錄,只能在 PHP7.2 以上版本使用,如果拷貝到 PHP5.6 環(huán)境下使用,會出現(xiàn)依賴版本不兼容問題。一些用戶可能由于網(wǎng)絡(luò)問題無法安裝,可以通過以下命令使用阿里云 Composer 全量鏡像。

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

步驟一:引入SDK

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

特化調(diào)用

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

  1. 訪問云工作流 SDK

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

  3. 選擇您需要的安裝方式,將代碼復(fù)制到您的項(xiàng)目中。

  4. 在您的項(xiàng)目中載入該依賴包。

其PHP語言安裝產(chǎn)品如下:

composer require alibabacloud/fnf-20190315 1.1.3

泛化調(diào)用

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

composer require alibabacloud/darabonba-openapi

步驟二:初始化Client

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

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

使用AK初始化

說明

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

本示例以將AccessKey配置在環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET的方式來實(shí)現(xiàn)身份驗(yàn)證為例。

<?php

namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Fnf\V20190315\Fnf;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Fnf\V20190315\Models\DescribeFlowRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {
    /**
     * 使用AK&SK初始化賬號Client
     * @return Fnf Client
     */
    public static function createClient() {
       
        $config = new Config([
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
        ]);
        $config->endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        
        return new Fnf($config);
    }
}

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

說明

初始化Client后,您可以通過Client調(diào)用云工作流API

接口名稱:CreateFlow

此接口用于創(chuàng)建一個流程。在調(diào)用過程中,您需要根據(jù)實(shí)際業(yè)務(wù)需求創(chuàng)建請求對象,并設(shè)置相應(yīng)的參數(shù)及運(yùn)行時配置。同時,您也可以自定義運(yùn)行時配置以滿足特定需求。

 // 創(chuàng)建請求對象
 $createFlowRequest = new CreateFlowRequest([
            // 您的流程名稱
            "name" => "my_flow_name",
            // 流程定義,遵循 Flow Definition Language (FDL)語法標(biāo)準(zhǔn)。考慮到向前兼容,當(dāng)系統(tǒng)支持兩種規(guī)范的流程定義規(guī)范。
            "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"
        ]);
        // 運(yùn)行時配置
        $runtime = new RuntimeOptions([]);

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

<?php

namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Fnf\V20190315\Fnf;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Fnf\V20190315\Models\CreateFlowRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * 使用AK&SK初始化賬號Client
     * @return Fnf Client
     */
    public static function createClient(){
        $config = new Config([
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        ]);
        $config->endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        return new Fnf($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient();
        // 創(chuàng)建請求對象
 $createFlowRequest = new CreateFlowRequest([
            // 您的流程名稱
            "name" => "my_flow_name",
            // 流程定義,遵循 Flow Definition Language (FDL)語法標(biāo)準(zhǔn)。考慮到向前兼容,當(dāng)系統(tǒng)支持兩種規(guī)范的流程定義規(guī)范。
            "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"
        ]);
        // 運(yùn)行時配置
        $runtime = new RuntimeOptions([]);
        try {
            // 復(fù)制代碼運(yùn)行請自行打印 API 的返回值
            $client->createFlowWithOptions($createFlowRequest, $runtime);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 此處僅做打印展示,請謹(jǐn)慎對待異常處理,在工程項(xiàng)目中切勿直接忽略異常。
            // 錯誤 message
            var_dump($error->message);
            // 診斷地址
            var_dump($error->data["Recommend"]);
            Utils::assertAsString($error->message);
        }
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

接口名稱:DescribeFlow

此接口用于獲取特定流程的相關(guān)信息。在調(diào)用過程中,您需要根據(jù)實(shí)際業(yè)務(wù)需求創(chuàng)建請求對象,并設(shè)置相應(yīng)的參數(shù)及運(yùn)行時配置。同時,您也可以自定義運(yùn)行時配置以滿足特定需求。

// 創(chuàng)建請求對象并設(shè)置入?yún)? $describeFlowRequest = new DescribeFlowRequest([
            // 您的流程名稱
            "name" => "my_flow_name"
        ]);
        // 創(chuàng)建運(yùn)行時配置對象
        $runtime = new RuntimeOptions([]);

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

<?php

namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Fnf\V20190315\Fnf;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Fnf\V20190315\Models\DescribeFlowRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * 使用AK&SK初始化賬號Client
     * @return Fnf Client
     */
    public static function createClient(){
        $config = new Config([
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        ]);
        $config->endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        return new Fnf($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient();
      // 創(chuàng)建請求對象并設(shè)置入?yún)?      $describeFlowRequest = new DescribeFlowRequest([
            // 您的流程名稱
            "name" => "my_flow_name"
        ]);
        // 創(chuàng)建運(yùn)行時配置對象
        $runtime = new RuntimeOptions([]);
        try {
            // 復(fù)制代碼運(yùn)行請自行打印 API 的返回值
            $client->describeFlowWithOptions($describeFlowRequest, $runtime);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 此處僅做打印展示,請謹(jǐn)慎對待異常處理,在工程項(xiàng)目中切勿直接忽略異常。
            // 錯誤 message
            var_dump($error->message);
            // 診斷地址
            var_dump($error->data["Recommend"]);
            Utils::assertAsString($error->message);
        }
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

接口名稱:StartExecution

此接口用于獲取特定流程的相關(guān)信息。在調(diào)用過程中,您需要根據(jù)實(shí)際業(yè)務(wù)需求創(chuàng)建請求對象,并設(shè)置相應(yīng)的參數(shù)及運(yùn)行時配置。同時,您也可以自定義運(yùn)行時配置以滿足特定需求。

  // 創(chuàng)建請求對象
  $startExecutionRequest = new StartExecutionRequest([
            // 您的開始執(zhí)行流程名稱
            "flowName" => "your_flow_name",
            // 執(zhí)行名稱
            "executionName" => "your_exec_name",
            // 執(zhí)行輸入
            "input" => "{\"key\":\"value\"}",
            // 流程執(zhí)行結(jié)束后回調(diào)TaskToken相關(guān)任務(wù) 示例值:12
            "callbackFnFTaskToken" => "12"
        ]);
        // 運(yùn)行時配置
        $runtime = new RuntimeOptions([]);

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

<?php

namespace AlibabaCloud\SDK\Sample;

use AlibabaCloud\SDK\Fnf\V20190315\Fnf;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Fnf\V20190315\Models\StartExecutionRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;

class Sample {

    /**
     * 使用AK&SK初始化賬號Client
     * @return Fnf Client
     */
    public static function createClient(){
        $config = new Config([
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_ID。
            "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
            // 必填,請確保代碼運(yùn)行環(huán)境設(shè)置了環(huán)境變量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
            "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        ]);
        // Endpoint 請參考 https://api.aliyun.com/product/fnf
        $config->endpoint = "cn-hangzhou.fnf.aliyuncs.com";
        return new Fnf($config);
    }

    /**
     * @param string[] $args
     * @return void
     */
    public static function main($args){
        $client = self::createClient();
        // 創(chuàng)建請求對象
        $startExecutionRequest = new StartExecutionRequest([
            // 您的開始執(zhí)行流程名稱
            "flowName" => "your_flow_name",
            // 執(zhí)行名稱
            "executionName" => "your_exec_name",
            // 執(zhí)行輸入
            "input" => "{\"key\":\"value\"}",
            // 流程執(zhí)行結(jié)束后回調(diào)TaskToken相關(guān)任務(wù) 示例值:12
            "callbackFnFTaskToken" => "12"
        ]);
        // 運(yùn)行時配置
        $runtime = new RuntimeOptions([]);
        try {
            // 復(fù)制代碼運(yùn)行請自行打印 API 的返回值
            $client->startExecutionWithOptions($startExecutionRequest, $runtime);
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 此處僅做打印展示,請謹(jǐn)慎對待異常處理,在工程項(xiàng)目中切勿直接忽略異常。
            // 錯誤 message
            var_dump($error->message);
            // 診斷地址
            var_dump($error->data["Recommend"]);
            Utils::assertAsString($error->message);
        }
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
Sample::main(array_slice($argv, 1));

SDK調(diào)用示例

您可以使用API級別的多語言SDK Demo進(jìn)行調(diào)試。示例代碼,請參見開發(fā)者門戶OpenAPI Explorer