有Serverless 工作流的Java SDK 使用示例吗?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

有Serverless 工作流的Java SDK 使用示例吗?

2020-03-27 11:20:31 406 1

有Serverless 工作流的Java SDK 使用示例吗?

取消 提交回答
全部回答(1)
  • 小天使爱美
    2020-03-27 11:21:06

    本文介绍使用 Java SDK 的详细流程,包括环境要求、安装依赖和快速使用三部分。

    环境要求 要使用 Alibaba Cloud SDK for Java,您需要一个云账号以及一对 Access Key ID 和 Access Key Secret。 请在阿里云控制台中的AccessKey 管理页面上创建和查看您的 AccessKey,或者联系您的系统管理员。 要使用 Alibaba Cloud SDK for Java 访问某个产品的 API,您需要事先在阿里云控制台中开通这个产品。 Alibaba Cloud SDK for Java 需要 1.6 以上的 JDK。 安装依赖 无论您要使用哪个产品的开发工具包,都必须安装 aliyun-java-sdk-core。例如,对 Serverless 工作流 SDK 的调用,您需要安装aliyun-java-sdk-core 和 aliyun-java-sdk-fnf。

    通过 Maven 来管理项目依赖(推荐)

    如果您使用 Apache Maven 来管理 Java 项目,只需在项目的 pom.xml 文件加入相应的依赖项即可。

    com.aliyun aliyun-java-sdk-core [4.3.2,5.0.0) com.aliyun aliyun-java-sdk-fnf [1.0.0,5.0.0) 如果 Maven 没有从中央存储库下载 JAR 包,则需要将此依赖项添加到pom.xml文件中,否则将报告 NoClassDefFoundError 异常。

    com.google.code.gson gson 2.8.5
    快速使用 下文将以创建一个流程,发起一次执行并获取执行详情为例展示如何使用 Java SDK 调用 Serverless 工作流服务。

    调用 Alibaba Cloud SDK for Java 的 3 个主要步骤:

    创建 DefaultAcsClient 实例并初始化。 创建 API 请求并设置参数。 发起请求并处理应答或异常。 注意 下文仅提供 Serverless 工作流产品的使用流程,如果您在使用过程中遇到调试等问题或希望使用高级功能(连接池、HTTPS、代理、日志)等功能,请参见 README-CN。 请求方式

    package com.test;

    import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.fnf.model.v20190315.*;

    class FnFOperations { static String flowName = "xxx"; static String execName = "xxx"; static String flowDesc = "xxx"; static String flowDef = "xxx"; static String roleArn = "xxx"; static String flowType = "xxx";

    static CreateFlowResponse createFlow(IAcsClient fnfClient) throws ClientException {
        CreateFlowRequest request = new CreateFlowRequest();
        request.setName(flowName);
        request.setDefinition(flowDef);
        request.setType(flowType);
        request.setDescription(flowDesc);
        request.setRoleArn(roleArn);
        return fnfClient.getAcsResponse(request);
    }
    
    static StartExecutionResponse startExecution(IAcsClient fnfClient) throws ClientException {
        StartExecutionRequest request = new StartExecutionRequest();
        request.setFlowName(flowName);
        request.setExecutionName(execName);
        return fnfClient.getAcsResponse(request);
    }
    
    static DescribeExecutionResponse describeExecution(IAcsClient fnfClient) throws ClientException {
        DescribeExecutionRequest request = new DescribeExecutionRequest();
        request.setFlowName(flowName);
        request.setExecutionName(execName);
        return fnfClient.getAcsResponse(request);
    }
    
    static GetExecutionHistoryResponse getExecutionHistory(IAcsClient fnfClient) throws ClientException {
        GetExecutionHistoryRequest request = new GetExecutionHistoryRequest();
        request.setFlowName(flowName);
        request.setExecutionName(execName);
        return fnfClient.getAcsResponse(request);
    }
    

    }
    创建客户端并利用上述函数发起一系列调用

    说明 如果您需要不加改造进行调试的话,请将下述 public 类与上述“请求方式”代码块置于同一个文件中,避免在 import 时报错。 public class Main { public static void main(String[] args) { // Create DefaultAcsClient DefaultProfile profile = DefaultProfile.getProfile( " ", // 地域ID " ", // RAM 账号的AccessKey ID " "); // RAM 账号Access Key Secret IAcsClient client = new DefaultAcsClient(profile);

        try {
            // Create Flow
            CreateFlowResponse creatFlowResponse = FnFOperations.createFlow(client);
            System.out.println(creatFlowResponse);
            // Start Execution
            StartExecutionResponse startExeResp = FnFOperations.startExecution(client);
            System.out.println(startExeResp);
            // Describe Execution
            DescribeExecutionResponse descExeResp = FnFOperations.describeExecution(client);
            System.out.println(descExeResp);
        } catch (ClientException e) {
            e.printStackTrace();
        }
    
        try {
            GetExecutionHistoryResponse resp = FnFOperations.getExecutionHistory(client);
            for (GetExecutionHistoryResponse.EventsItem event:resp.getEvents()) {
                System.out.printf("event %s status: %s%n", event.getStepName(), event.getType());
            }
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
    

    }

    0 0
相关问答

40

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 144734浏览量 回答数 40

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 226164浏览量 回答数 162

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 337018浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 142461浏览量 回答数 13

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295561浏览量 回答数 110

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147244浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 646805浏览量 回答数 18

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146045浏览量 回答数 31

82

回答

OSS入门教程

belle.zhoux 2014-07-07 17:14:27 151465浏览量 回答数 82

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 475699浏览量 回答数 24
0
文章
3151
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载