云网站服务器_国内数据云存储_移动云数据库服务器主机-搜集站云

免备案CDN_如何连接服务器_试用

小七 141 0

免备案CDN_如何连接服务器_试用

我以前写过SAP云平台(SCP)工作流服务,包括一个名为"发现SCP工作流"的10部分系列,这个系列可能比你想读的要多,但是嘿

工作流服务有一个API这一事实应该不会让任何人感到惊讶。事实上,它的良好设计,返利系统,是由代表性状态转移(REST)的原则和良好的文件通知可能会令人惊喜的一些。(我非常喜欢REST作为一种集成方法—请参阅忘记SOAP—从2004年开始使用ICF构建真正的web服务,了解一些背景知识)。

在使用工作流服务创建一系列博客文章时,为了准备下周举行的ASUG网络研讨会(4月4日星期三–请参阅BITI:Introduction to SAP Cloud Platform Workflow for how to sign up),我发现自己反复创建了多个工作流定义实例,超出了我的需要,并希望有一种方便的方式来整理东西。你可以使用相当优秀的Workflow Monitor应用程序来终止实例,但是你一次只能终止一个实例,并且每个实例都会被提示进行确认(总的来说这是一件好事)。

所以我决定通过使用Workflow API来清理冗余运行的工作流实例来了解更多关于Workflow API的知识,特别是通过设置他们的状态为"取消",使他们从视野中消失。(是的,我还在努力研究这个词的奇怪拼写,大数据的发展,但我正在尝试接受这个外国英语版本,这似乎是这些部分的标准)。

API文档中我需要的相关部分在这里,描述了/v1/workflow instances/{workflowInstanceId}资源上的补丁方法,对于这样的负载:

我想知道我是否可以编写一个简单的脚本来帮助我清理我正在使用的工作流定义的实例("unappdrecommendation"一个,与Discovering SCP workflow series的主题相关)。顺便说一下,云服务器好还是,我正在通过googleapps平台上的另一个脚本创建多个工作流定义实例,与我的啤酒签入相关,这是发现SCP工作流系列的主题。

我一直在研究CSRF令牌在发现SCP工作流(实例启动)中的细微差别,并在命令行上找到了一个最佳点,即著名的curl(用于HTTP等的瑞士军刀命令行工具)。当然,这个命令行是在云端的,以我个人的云Shell的形式,这是由Google云平台提供的(在周一早晨的Thinks:cloud Native中阅读更多关于我对Google云Shell的想法和使用的信息)。

所以我写了一个Shell脚本,特别是一个bash风格的脚本,实现了这个目的。在深入讨论之前,我想给大家讲一个小故事。

我心目中的英雄之一是Randal Schwartz,他对我如何在90年代成功地从SAP ecosphere分支并首先通过出色的*语言Perl发现开源负有部分责任。他在各种杂志上写专栏,每一篇都描述和解释他写的Perl脚本。我曾经用午餐时间吃三明治和喝杯茶,倒在这些专栏上,学习他如何编写Perl,通过潜移默化,我自己学习Perl。谢谢,兰德尔。

*是的,你可能会有不同的想法,但如果必要的话,我会在黑暗的角落里和你战斗!

有鉴于此,我将以兰德尔专栏的风格呈现这篇短文,以纪念他。不过,在我开始之前有一些警告——这个脚本的呈现方式是"疣和所有"的风格,好像我刚做了一批稍不均匀的威尔士蛋糕,你来到我家,我邀请你到厨房喝杯茶,吃一块蛋糕。台面上还是乱七八糟的,地板上还有一些面粉,但它们绝对可以吃,和茶一起吃味道也不错。

首先,这是完整的剧本。

在第一行的释邦和第三到第四行的一些评论之后,我们从第6-12行中的一些常规变量开始,我们将在整个脚本中使用这些变量:

我已经硬编码了与我的个人SCP试用版相关的用户名(这是我的pre-SAP ID,因为我有所有相关的工作流定义)。COOKIES变量指向一个特定于用户的文件,我将要求curl存储响应中返回的COOKIES,并在后续请求中使用它们。这是为了解决使用CSRF令牌时所需的上下文。通过INSTANCEDATA变量,我使用了一个名为实例.dat将请求的输出存储到工作流API以检索工作流定义的运行实例列表。TOKENDATA指向第三个文件,用于捕获curl请求的头输出,以获取CSRF令牌。调用此脚本时,命令行上需要提供一个参数,即工作流定义的ID。这个ID在DEFINITIONID变量中被捕获(通过$1)。工作流API模式意味着有一个"根"URL,并且每个API工具都是相对于该根的。这个根是特定于我的用户ID的,保存在WFS\u API\u root变量中(出于某种原因,我决定在这个名称中使用下划线)。当对要取消的单个工作流实例调用PATCH时,我们会发送一个有效负载。此有效负载的类型为application/json,并存储在STATUSPAYLOAD变量中以供以后使用。

第15行只需检查是否确实提供了工作流定义ID,如果没有,则中止。它不进行任何检查以查看该定义是否真的存在,我们很快就会发现。