浏览代码

FnF public version.

sdk-team 6 年之前
父节点
当前提交
133cfe6c30

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2019-07-02 Version: 1.60.57
+- FnF public version.
+
 2019-07-01 Version: 1.60.56
 - Support cloud_essd disk category for API CreateDisk, CreateInstance and RunInstances, and support configurating PerformanceLevel when choose cloud_essd.
 - Add ModifyDiskSpec API to support cloud_essd PerformanceLevel modification.

+ 104 - 0
services/fnf/client.go

@@ -0,0 +1,104 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
+)
+
+// Client is the sdk client struct, each func corresponds to an OpenAPI
+type Client struct {
+	sdk.Client
+}
+
+// NewClient creates a sdk client with environment variables
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+// NewClientWithProvider creates a sdk client with providers
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithProvider(regionId string, providers ...provider.Provider) (client *Client, err error) {
+	client = &Client{}
+	var pc provider.Provider
+	if len(providers) == 0 {
+		pc = provider.DefaultChain
+	} else {
+		pc = provider.NewProviderChain(providers)
+	}
+	err = client.InitWithProviderChain(regionId, pc)
+	return
+}
+
+// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
+// this is the common api to create a sdk client
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+// NewClientWithAccessKey is a shortcut to create sdk client with accesskey
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}
+
+// NewClientWithStsToken is a shortcut to create sdk client with sts token
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn and policy
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArnAndPolicy(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArnAndPolicy(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy)
+	return
+}
+
+// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithEcsRamRole(regionId, roleName)
+	return
+}
+
+// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	return
+}

+ 116 - 0
services/fnf/create_flow.go

@@ -0,0 +1,116 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateFlow invokes the fnf.CreateFlow API synchronously
+// api document: https://help.aliyun.com/api/fnf/createflow.html
+func (client *Client) CreateFlow(request *CreateFlowRequest) (response *CreateFlowResponse, err error) {
+	response = CreateCreateFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowWithChan invokes the fnf.CreateFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/createflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowWithChan(request *CreateFlowRequest) (<-chan *CreateFlowResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowWithCallback invokes the fnf.CreateFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/createflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowWithCallback(request *CreateFlowRequest, callback func(response *CreateFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowRequest is the request struct for api CreateFlow
+type CreateFlowRequest struct {
+	*requests.RpcRequest
+	RequestId   string `position:"Query" name:"RequestId"`
+	RoleArn     string `position:"Body" name:"RoleArn"`
+	Name        string `position:"Body" name:"Name"`
+	Description string `position:"Body" name:"Description"`
+	Definition  string `position:"Body" name:"Definition"`
+	Type        string `position:"Body" name:"Type"`
+}
+
+// CreateFlowResponse is the response struct for api CreateFlow
+type CreateFlowResponse struct {
+	*responses.BaseResponse
+	RequestId        string `json:"RequestId" xml:"RequestId"`
+	Name             string `json:"Name" xml:"Name"`
+	Description      string `json:"Description" xml:"Description"`
+	Definition       string `json:"Definition" xml:"Definition"`
+	Id               string `json:"Id" xml:"Id"`
+	Type             string `json:"Type" xml:"Type"`
+	RoleArn          string `json:"RoleArn" xml:"RoleArn"`
+	CreatedTime      string `json:"CreatedTime" xml:"CreatedTime"`
+	LastModifiedTime string `json:"LastModifiedTime" xml:"LastModifiedTime"`
+}
+
+// CreateCreateFlowRequest creates a request to invoke CreateFlow API
+func CreateCreateFlowRequest() (request *CreateFlowRequest) {
+	request = &CreateFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "CreateFlow", "fnf", "openAPI")
+	return
+}
+
+// CreateCreateFlowResponse creates a response to parse from CreateFlow response
+func CreateCreateFlowResponse() (response *CreateFlowResponse) {
+	response = &CreateFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/fnf/delete_flow.go

@@ -0,0 +1,104 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteFlow invokes the fnf.DeleteFlow API synchronously
+// api document: https://help.aliyun.com/api/fnf/deleteflow.html
+func (client *Client) DeleteFlow(request *DeleteFlowRequest) (response *DeleteFlowResponse, err error) {
+	response = CreateDeleteFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowWithChan invokes the fnf.DeleteFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/deleteflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowWithChan(request *DeleteFlowRequest) (<-chan *DeleteFlowResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowWithCallback invokes the fnf.DeleteFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/deleteflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowWithCallback(request *DeleteFlowRequest, callback func(response *DeleteFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowRequest is the request struct for api DeleteFlow
+type DeleteFlowRequest struct {
+	*requests.RpcRequest
+	RequestId string `position:"Query" name:"RequestId"`
+	Name      string `position:"Query" name:"Name"`
+}
+
+// DeleteFlowResponse is the response struct for api DeleteFlow
+type DeleteFlowResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFlowRequest creates a request to invoke DeleteFlow API
+func CreateDeleteFlowRequest() (request *DeleteFlowRequest) {
+	request = &DeleteFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "DeleteFlow", "fnf", "openAPI")
+	return
+}
+
+// CreateDeleteFlowResponse creates a response to parse from DeleteFlow response
+func CreateDeleteFlowResponse() (response *DeleteFlowResponse) {
+	response = &DeleteFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/fnf/describe_execution.go

@@ -0,0 +1,113 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeExecution invokes the fnf.DescribeExecution API synchronously
+// api document: https://help.aliyun.com/api/fnf/describeexecution.html
+func (client *Client) DescribeExecution(request *DescribeExecutionRequest) (response *DescribeExecutionResponse, err error) {
+	response = CreateDescribeExecutionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeExecutionWithChan invokes the fnf.DescribeExecution API asynchronously
+// api document: https://help.aliyun.com/api/fnf/describeexecution.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeExecutionWithChan(request *DescribeExecutionRequest) (<-chan *DescribeExecutionResponse, <-chan error) {
+	responseChan := make(chan *DescribeExecutionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeExecution(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeExecutionWithCallback invokes the fnf.DescribeExecution API asynchronously
+// api document: https://help.aliyun.com/api/fnf/describeexecution.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeExecutionWithCallback(request *DescribeExecutionRequest, callback func(response *DescribeExecutionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeExecutionResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeExecution(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeExecutionRequest is the request struct for api DescribeExecution
+type DescribeExecutionRequest struct {
+	*requests.RpcRequest
+	ExecutionName string `position:"Query" name:"ExecutionName"`
+	RequestId     string `position:"Query" name:"RequestId"`
+	FlowName      string `position:"Query" name:"FlowName"`
+}
+
+// DescribeExecutionResponse is the response struct for api DescribeExecution
+type DescribeExecutionResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId" xml:"RequestId"`
+	Name           string `json:"Name" xml:"Name"`
+	FlowName       string `json:"FlowName" xml:"FlowName"`
+	FlowDefinition string `json:"FlowDefinition" xml:"FlowDefinition"`
+	Input          string `json:"Input" xml:"Input"`
+	Output         string `json:"Output" xml:"Output"`
+	Status         string `json:"Status" xml:"Status"`
+	StartedTime    string `json:"StartedTime" xml:"StartedTime"`
+	StoppedTime    string `json:"StoppedTime" xml:"StoppedTime"`
+}
+
+// CreateDescribeExecutionRequest creates a request to invoke DescribeExecution API
+func CreateDescribeExecutionRequest() (request *DescribeExecutionRequest) {
+	request = &DescribeExecutionRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "DescribeExecution", "fnf", "openAPI")
+	return
+}
+
+// CreateDescribeExecutionResponse creates a response to parse from DescribeExecution response
+func CreateDescribeExecutionResponse() (response *DescribeExecutionResponse) {
+	response = &DescribeExecutionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/fnf/describe_flow.go

@@ -0,0 +1,112 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeFlow invokes the fnf.DescribeFlow API synchronously
+// api document: https://help.aliyun.com/api/fnf/describeflow.html
+func (client *Client) DescribeFlow(request *DescribeFlowRequest) (response *DescribeFlowResponse, err error) {
+	response = CreateDescribeFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowWithChan invokes the fnf.DescribeFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/describeflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowWithChan(request *DescribeFlowRequest) (<-chan *DescribeFlowResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowWithCallback invokes the fnf.DescribeFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/describeflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowWithCallback(request *DescribeFlowRequest, callback func(response *DescribeFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowRequest is the request struct for api DescribeFlow
+type DescribeFlowRequest struct {
+	*requests.RpcRequest
+	RequestId string `position:"Query" name:"RequestId"`
+	Name      string `position:"Query" name:"Name"`
+}
+
+// DescribeFlowResponse is the response struct for api DescribeFlow
+type DescribeFlowResponse struct {
+	*responses.BaseResponse
+	RequestId        string `json:"RequestId" xml:"RequestId"`
+	Name             string `json:"Name" xml:"Name"`
+	Description      string `json:"Description" xml:"Description"`
+	Definition       string `json:"Definition" xml:"Definition"`
+	Id               string `json:"Id" xml:"Id"`
+	Type             string `json:"Type" xml:"Type"`
+	RoleArn          string `json:"RoleArn" xml:"RoleArn"`
+	CreatedTime      string `json:"CreatedTime" xml:"CreatedTime"`
+	LastModifiedTime string `json:"LastModifiedTime" xml:"LastModifiedTime"`
+}
+
+// CreateDescribeFlowRequest creates a request to invoke DescribeFlow API
+func CreateDescribeFlowRequest() (request *DescribeFlowRequest) {
+	request = &DescribeFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "DescribeFlow", "fnf", "openAPI")
+	return
+}
+
+// CreateDescribeFlowResponse creates a response to parse from DescribeFlow response
+func CreateDescribeFlowResponse() (response *DescribeFlowResponse) {
+	response = &DescribeFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/fnf/get_execution_history.go

@@ -0,0 +1,109 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetExecutionHistory invokes the fnf.GetExecutionHistory API synchronously
+// api document: https://help.aliyun.com/api/fnf/getexecutionhistory.html
+func (client *Client) GetExecutionHistory(request *GetExecutionHistoryRequest) (response *GetExecutionHistoryResponse, err error) {
+	response = CreateGetExecutionHistoryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetExecutionHistoryWithChan invokes the fnf.GetExecutionHistory API asynchronously
+// api document: https://help.aliyun.com/api/fnf/getexecutionhistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetExecutionHistoryWithChan(request *GetExecutionHistoryRequest) (<-chan *GetExecutionHistoryResponse, <-chan error) {
+	responseChan := make(chan *GetExecutionHistoryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetExecutionHistory(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetExecutionHistoryWithCallback invokes the fnf.GetExecutionHistory API asynchronously
+// api document: https://help.aliyun.com/api/fnf/getexecutionhistory.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetExecutionHistoryWithCallback(request *GetExecutionHistoryRequest, callback func(response *GetExecutionHistoryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetExecutionHistoryResponse
+		var err error
+		defer close(result)
+		response, err = client.GetExecutionHistory(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetExecutionHistoryRequest is the request struct for api GetExecutionHistory
+type GetExecutionHistoryRequest struct {
+	*requests.RpcRequest
+	ExecutionName string           `position:"Query" name:"ExecutionName"`
+	NextToken     string           `position:"Query" name:"NextToken"`
+	RequestId     string           `position:"Query" name:"RequestId"`
+	Limit         requests.Integer `position:"Query" name:"Limit"`
+	FlowName      string           `position:"Query" name:"FlowName"`
+}
+
+// GetExecutionHistoryResponse is the response struct for api GetExecutionHistory
+type GetExecutionHistoryResponse struct {
+	*responses.BaseResponse
+	RequestId string       `json:"RequestId" xml:"RequestId"`
+	NextToken string       `json:"NextToken" xml:"NextToken"`
+	Events    []EventsItem `json:"Events" xml:"Events"`
+}
+
+// CreateGetExecutionHistoryRequest creates a request to invoke GetExecutionHistory API
+func CreateGetExecutionHistoryRequest() (request *GetExecutionHistoryRequest) {
+	request = &GetExecutionHistoryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "GetExecutionHistory", "fnf", "openAPI")
+	return
+}
+
+// CreateGetExecutionHistoryResponse creates a response to parse from GetExecutionHistory response
+func CreateGetExecutionHistoryResponse() (response *GetExecutionHistoryResponse) {
+	response = &GetExecutionHistoryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/fnf/list_executions.go

@@ -0,0 +1,108 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListExecutions invokes the fnf.ListExecutions API synchronously
+// api document: https://help.aliyun.com/api/fnf/listexecutions.html
+func (client *Client) ListExecutions(request *ListExecutionsRequest) (response *ListExecutionsResponse, err error) {
+	response = CreateListExecutionsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListExecutionsWithChan invokes the fnf.ListExecutions API asynchronously
+// api document: https://help.aliyun.com/api/fnf/listexecutions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListExecutionsWithChan(request *ListExecutionsRequest) (<-chan *ListExecutionsResponse, <-chan error) {
+	responseChan := make(chan *ListExecutionsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListExecutions(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListExecutionsWithCallback invokes the fnf.ListExecutions API asynchronously
+// api document: https://help.aliyun.com/api/fnf/listexecutions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListExecutionsWithCallback(request *ListExecutionsRequest, callback func(response *ListExecutionsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListExecutionsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListExecutions(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListExecutionsRequest is the request struct for api ListExecutions
+type ListExecutionsRequest struct {
+	*requests.RpcRequest
+	NextToken string           `position:"Query" name:"NextToken"`
+	RequestId string           `position:"Query" name:"RequestId"`
+	Limit     requests.Integer `position:"Query" name:"Limit"`
+	FlowName  string           `position:"Query" name:"FlowName"`
+}
+
+// ListExecutionsResponse is the response struct for api ListExecutions
+type ListExecutionsResponse struct {
+	*responses.BaseResponse
+	RequestId  string           `json:"RequestId" xml:"RequestId"`
+	NextToken  string           `json:"NextToken" xml:"NextToken"`
+	Executions []ExecutionsItem `json:"Executions" xml:"Executions"`
+}
+
+// CreateListExecutionsRequest creates a request to invoke ListExecutions API
+func CreateListExecutionsRequest() (request *ListExecutionsRequest) {
+	request = &ListExecutionsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "ListExecutions", "fnf", "openAPI")
+	return
+}
+
+// CreateListExecutionsResponse creates a response to parse from ListExecutions response
+func CreateListExecutionsResponse() (response *ListExecutionsResponse) {
+	response = &ListExecutionsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/fnf/list_flows.go

@@ -0,0 +1,107 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListFlows invokes the fnf.ListFlows API synchronously
+// api document: https://help.aliyun.com/api/fnf/listflows.html
+func (client *Client) ListFlows(request *ListFlowsRequest) (response *ListFlowsResponse, err error) {
+	response = CreateListFlowsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListFlowsWithChan invokes the fnf.ListFlows API asynchronously
+// api document: https://help.aliyun.com/api/fnf/listflows.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFlowsWithChan(request *ListFlowsRequest) (<-chan *ListFlowsResponse, <-chan error) {
+	responseChan := make(chan *ListFlowsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListFlows(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListFlowsWithCallback invokes the fnf.ListFlows API asynchronously
+// api document: https://help.aliyun.com/api/fnf/listflows.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListFlowsWithCallback(request *ListFlowsRequest, callback func(response *ListFlowsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListFlowsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListFlows(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListFlowsRequest is the request struct for api ListFlows
+type ListFlowsRequest struct {
+	*requests.RpcRequest
+	NextToken string           `position:"Query" name:"NextToken"`
+	RequestId string           `position:"Query" name:"RequestId"`
+	Limit     requests.Integer `position:"Query" name:"Limit"`
+}
+
+// ListFlowsResponse is the response struct for api ListFlows
+type ListFlowsResponse struct {
+	*responses.BaseResponse
+	RequestId string      `json:"RequestId" xml:"RequestId"`
+	NextToken string      `json:"NextToken" xml:"NextToken"`
+	Flows     []FlowsItem `json:"Flows" xml:"Flows"`
+}
+
+// CreateListFlowsRequest creates a request to invoke ListFlows API
+func CreateListFlowsRequest() (request *ListFlowsRequest) {
+	request = &ListFlowsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "ListFlows", "fnf", "openAPI")
+	return
+}
+
+// CreateListFlowsResponse creates a response to parse from ListFlows response
+func CreateListFlowsResponse() (response *ListFlowsResponse) {
+	response = &ListFlowsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/fnf/start_execution.go

@@ -0,0 +1,114 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// StartExecution invokes the fnf.StartExecution API synchronously
+// api document: https://help.aliyun.com/api/fnf/startexecution.html
+func (client *Client) StartExecution(request *StartExecutionRequest) (response *StartExecutionResponse, err error) {
+	response = CreateStartExecutionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StartExecutionWithChan invokes the fnf.StartExecution API asynchronously
+// api document: https://help.aliyun.com/api/fnf/startexecution.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartExecutionWithChan(request *StartExecutionRequest) (<-chan *StartExecutionResponse, <-chan error) {
+	responseChan := make(chan *StartExecutionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StartExecution(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StartExecutionWithCallback invokes the fnf.StartExecution API asynchronously
+// api document: https://help.aliyun.com/api/fnf/startexecution.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartExecutionWithCallback(request *StartExecutionRequest, callback func(response *StartExecutionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StartExecutionResponse
+		var err error
+		defer close(result)
+		response, err = client.StartExecution(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StartExecutionRequest is the request struct for api StartExecution
+type StartExecutionRequest struct {
+	*requests.RpcRequest
+	Input         string `position:"Body" name:"Input"`
+	ExecutionName string `position:"Query" name:"ExecutionName"`
+	RequestId     string `position:"Query" name:"RequestId"`
+	FlowName      string `position:"Query" name:"FlowName"`
+}
+
+// StartExecutionResponse is the response struct for api StartExecution
+type StartExecutionResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId" xml:"RequestId"`
+	Name           string `json:"Name" xml:"Name"`
+	FlowName       string `json:"FlowName" xml:"FlowName"`
+	FlowDefinition string `json:"FlowDefinition" xml:"FlowDefinition"`
+	Input          string `json:"Input" xml:"Input"`
+	Output         string `json:"Output" xml:"Output"`
+	Status         string `json:"Status" xml:"Status"`
+	StartedTime    string `json:"StartedTime" xml:"StartedTime"`
+	StoppedTime    string `json:"StoppedTime" xml:"StoppedTime"`
+}
+
+// CreateStartExecutionRequest creates a request to invoke StartExecution API
+func CreateStartExecutionRequest() (request *StartExecutionRequest) {
+	request = &StartExecutionRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "StartExecution", "fnf", "openAPI")
+	return
+}
+
+// CreateStartExecutionResponse creates a response to parse from StartExecution response
+func CreateStartExecutionResponse() (response *StartExecutionResponse) {
+	response = &StartExecutionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/fnf/stop_execution.go

@@ -0,0 +1,115 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// StopExecution invokes the fnf.StopExecution API synchronously
+// api document: https://help.aliyun.com/api/fnf/stopexecution.html
+func (client *Client) StopExecution(request *StopExecutionRequest) (response *StopExecutionResponse, err error) {
+	response = CreateStopExecutionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StopExecutionWithChan invokes the fnf.StopExecution API asynchronously
+// api document: https://help.aliyun.com/api/fnf/stopexecution.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopExecutionWithChan(request *StopExecutionRequest) (<-chan *StopExecutionResponse, <-chan error) {
+	responseChan := make(chan *StopExecutionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StopExecution(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StopExecutionWithCallback invokes the fnf.StopExecution API asynchronously
+// api document: https://help.aliyun.com/api/fnf/stopexecution.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopExecutionWithCallback(request *StopExecutionRequest, callback func(response *StopExecutionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StopExecutionResponse
+		var err error
+		defer close(result)
+		response, err = client.StopExecution(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StopExecutionRequest is the request struct for api StopExecution
+type StopExecutionRequest struct {
+	*requests.RpcRequest
+	ExecutionName string `position:"Query" name:"ExecutionName"`
+	RequestId     string `position:"Query" name:"RequestId"`
+	Cause         string `position:"Query" name:"Cause"`
+	FlowName      string `position:"Query" name:"FlowName"`
+	Error         string `position:"Query" name:"Error"`
+}
+
+// StopExecutionResponse is the response struct for api StopExecution
+type StopExecutionResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId" xml:"RequestId"`
+	Name           string `json:"Name" xml:"Name"`
+	FlowName       string `json:"FlowName" xml:"FlowName"`
+	FlowDefinition string `json:"FlowDefinition" xml:"FlowDefinition"`
+	Input          string `json:"Input" xml:"Input"`
+	Output         string `json:"Output" xml:"Output"`
+	Status         string `json:"Status" xml:"Status"`
+	StartedTime    string `json:"StartedTime" xml:"StartedTime"`
+	StoppedTime    string `json:"StoppedTime" xml:"StoppedTime"`
+}
+
+// CreateStopExecutionRequest creates a request to invoke StopExecution API
+func CreateStopExecutionRequest() (request *StopExecutionRequest) {
+	request = &StopExecutionRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "StopExecution", "fnf", "openAPI")
+	return
+}
+
+// CreateStopExecutionResponse creates a response to parse from StopExecution response
+func CreateStopExecutionResponse() (response *StopExecutionResponse) {
+	response = &StopExecutionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 21 - 0
services/fnf/struct_events.go

@@ -0,0 +1,21 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Events is a nested struct in fnf response
+type Events struct {
+	EventsItem []EventsItem `json:"EventsItem" xml:"EventsItem"`
+}

+ 26 - 0
services/fnf/struct_events_item.go

@@ -0,0 +1,26 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EventsItem is a nested struct in fnf response
+type EventsItem struct {
+	StepName        string `json:"StepName" xml:"StepName"`
+	Type            string `json:"Type" xml:"Type"`
+	EventId         int64  `json:"EventId" xml:"EventId"`
+	ScheduleEventId int64  `json:"ScheduleEventId" xml:"ScheduleEventId"`
+	EventDetail     string `json:"EventDetail" xml:"EventDetail"`
+	Time            string `json:"Time" xml:"Time"`
+}

+ 21 - 0
services/fnf/struct_executions.go

@@ -0,0 +1,21 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Executions is a nested struct in fnf response
+type Executions struct {
+	ExecutionsItem []ExecutionsItem `json:"ExecutionsItem" xml:"ExecutionsItem"`
+}

+ 28 - 0
services/fnf/struct_executions_item.go

@@ -0,0 +1,28 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ExecutionsItem is a nested struct in fnf response
+type ExecutionsItem struct {
+	Name           string `json:"Name" xml:"Name"`
+	FlowName       string `json:"FlowName" xml:"FlowName"`
+	FlowDefinition string `json:"FlowDefinition" xml:"FlowDefinition"`
+	Input          string `json:"Input" xml:"Input"`
+	Output         string `json:"Output" xml:"Output"`
+	Status         string `json:"Status" xml:"Status"`
+	StartedTime    string `json:"StartedTime" xml:"StartedTime"`
+	StoppedTime    string `json:"StoppedTime" xml:"StoppedTime"`
+}

+ 21 - 0
services/fnf/struct_flows.go

@@ -0,0 +1,21 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Flows is a nested struct in fnf response
+type Flows struct {
+	FlowsItem []FlowsItem `json:"FlowsItem" xml:"FlowsItem"`
+}

+ 28 - 0
services/fnf/struct_flows_item.go

@@ -0,0 +1,28 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FlowsItem is a nested struct in fnf response
+type FlowsItem struct {
+	Name             string `json:"Name" xml:"Name"`
+	Description      string `json:"Description" xml:"Description"`
+	Definition       string `json:"Definition" xml:"Definition"`
+	Id               string `json:"Id" xml:"Id"`
+	Type             string `json:"Type" xml:"Type"`
+	RoleArn          string `json:"RoleArn" xml:"RoleArn"`
+	CreatedTime      string `json:"CreatedTime" xml:"CreatedTime"`
+	LastModifiedTime string `json:"LastModifiedTime" xml:"LastModifiedTime"`
+}

+ 116 - 0
services/fnf/update_flow.go

@@ -0,0 +1,116 @@
+package fnf
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UpdateFlow invokes the fnf.UpdateFlow API synchronously
+// api document: https://help.aliyun.com/api/fnf/updateflow.html
+func (client *Client) UpdateFlow(request *UpdateFlowRequest) (response *UpdateFlowResponse, err error) {
+	response = CreateUpdateFlowResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UpdateFlowWithChan invokes the fnf.UpdateFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/updateflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateFlowWithChan(request *UpdateFlowRequest) (<-chan *UpdateFlowResponse, <-chan error) {
+	responseChan := make(chan *UpdateFlowResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UpdateFlow(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UpdateFlowWithCallback invokes the fnf.UpdateFlow API asynchronously
+// api document: https://help.aliyun.com/api/fnf/updateflow.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateFlowWithCallback(request *UpdateFlowRequest, callback func(response *UpdateFlowResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UpdateFlowResponse
+		var err error
+		defer close(result)
+		response, err = client.UpdateFlow(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UpdateFlowRequest is the request struct for api UpdateFlow
+type UpdateFlowRequest struct {
+	*requests.RpcRequest
+	RequestId   string `position:"Query" name:"RequestId"`
+	RoleArn     string `position:"Body" name:"RoleArn"`
+	Name        string `position:"Body" name:"Name"`
+	Description string `position:"Body" name:"Description"`
+	Definition  string `position:"Body" name:"Definition"`
+	Type        string `position:"Body" name:"Type"`
+}
+
+// UpdateFlowResponse is the response struct for api UpdateFlow
+type UpdateFlowResponse struct {
+	*responses.BaseResponse
+	RequestId        string `json:"RequestId" xml:"RequestId"`
+	Name             string `json:"Name" xml:"Name"`
+	Description      string `json:"Description" xml:"Description"`
+	Definition       string `json:"Definition" xml:"Definition"`
+	Id               string `json:"Id" xml:"Id"`
+	Type             string `json:"Type" xml:"Type"`
+	RoleArn          string `json:"RoleArn" xml:"RoleArn"`
+	CreatedTime      string `json:"CreatedTime" xml:"CreatedTime"`
+	LastModifiedTime string `json:"LastModifiedTime" xml:"LastModifiedTime"`
+}
+
+// CreateUpdateFlowRequest creates a request to invoke UpdateFlow API
+func CreateUpdateFlowRequest() (request *UpdateFlowRequest) {
+	request = &UpdateFlowRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("fnf", "2019-03-15", "UpdateFlow", "fnf", "openAPI")
+	return
+}
+
+// CreateUpdateFlowResponse creates a response to parse from UpdateFlow response
+func CreateUpdateFlowResponse() (response *UpdateFlowResponse) {
+	response = &UpdateFlowResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}