云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

对象存储_腾讯云论坛_新用户

小七 141 0

我最近参与了一个项目,这个项目让我有机会了解一点SAP Cloud Platform Neo上的工作流,也让我有机会直接进入SAP Cloud Platform,ABAP Environment(又名Steampunk)。我在这个项目上的任务是集成一个运行在Steampunk上的应用程序和运行在SCP Neo上的工作流。首先,我不得不说,云服务器如何,再次与ABAP合作感觉很好?说实话,我非常欢迎改变。接下来,我发现了一些非常好的工作流资源,这些资源确实帮助了我完成了整个过程。我发现开发人员中心的教程非常有助于我开始在Neo上设置工作流。Christian的僵尸博客非常有帮助,因为它展示了如何进行ABAP集成的on-prem版本。正如大多数人所知,Steampunk环境是on-prem ABAP系统的受限版本,您只能使用白名单对象。另外,Neo工作流API的文档非常好,非常有用。在这个博客中,我想与社区分享我的学习经验,大数据好吗,并展示如何利用Steampunk中ABAP类的工作流。

在我们查看ABAP代码之前,让我们看看我对工作流定义本身做了什么。在对我的SCP试用帐户进行初始工作流设置之后,我在中创建了一个工作流项目SAP Web IDE全栈IDE称为ApproveProductWFProj。此工作流非常简单,因为它基本上有一个名为"Approve Product"的用户任务。请注意,我正在将定义中的业务键设置为上下文值。这样我以后就可以通过此业务键值查询实例了。

我定义了一个表单它用作测试用户界面,最终用户可以"批准"或"拒绝"产品。它仅显示两个字段,如产品ID、说明和批准者用户ID.

在用户任务批准完成后(由最终用户或以编程方式),工作流将触发一个名为"设置状态"的脚本任务。我希望能够从"Approve Product"用户任务中捕获用户的决策,因此我在这里捕获该决策并在实例上下文中填充相应的变量。这样,我将始终能够通过API从ABAP中提取该决策。

最后,我还有一个非常简单的电子邮件任务,向收件人发送电子邮件,通知其状态为"已批准"或"已拒绝"。假设您已经在SCP帐户上正确配置了工作流邮件服务。

因此,现在我已经拥有了工作流所需的所有组件,并已成功将其部署到SCP Neo。现在我需要能够创建我的工作流实例以及与Steampunk中的实例的交互。让我们看看ABAP代码。

首先,当我第一次开始编写代码时,我很快意识到我将无法使用我多年来一直使用的现有示例。我习惯使用的接口,如\u HTTP\u CLIENT在Steampunk中没有白名单。幸运的是,我发现了一些新的白名单类/接口,可以用于HTTP连接。问题解决了?请注意,在撰写本文时,这些新的HTTP连接api仅在Steampunk环境中受支持。因此,我在这里所做的基本上是用ABAP方法包装许多SCP Neo Workflow API端点,试图从我的应用程序的其余部分消除处理请求/响应的复杂性。我没有为API的所有端点创建包装器,只是为我的应用程序真正需要的东西。因此,这绝不是一个完整的API实现。此外,此API类假定您拥有对工作流定义/实例执行这些操作所需的所有授权。所需授权记录在Neo工作流API的API文档中。

所有这些包装器方法都利用一个通用的名为EXECUTE\u WORKFLOW\u REQUEST的私有方法,它是执行所有工作的方法。注意新的HTTP连接API CL\u HTTP\u DESTINATION\u PROVIDER和CL\u WEB\u HTTP\u CLIENT\u MANAGER的使用。

我们现在可以在我们的应用程序中使用这个工作流API类。为此,我创建了类ZCL\u SCP\u WORKFLOW\u TEST来演示如何调用API方法。在一个高效的应用程序中,您可能不会将所有这些API调用堆积在一个执行中,但出于我们这里的目的,淘客助手下载,我只想演示如何在一个执行中调用所有这些API。所以不要理解我们正在删除所有实例,创建新实例,同时更新/完成这些实例的事实。

首先我们需要创建一个API类的实例,传递工作流运行时URL,SCP用户和密码。

下一节代码说明如何调用API,按状态获取工作流定义、定义模型和工作流定义的工作流实例,例如获取所有正在运行的实例。

下一节代码说明如何按状态删除工作流定义的实例,运行,完成,农业物联网,或错误。

下一节介绍如何创建工作流定义的工作流实例并设置其上下文。重要的是将有效的SCP用户id作为"approverUserId"传递给"recipientEmail",否则工作流将无法正常工作。

最后,最后一段代码展示了如何与工作流实例交互。首先,调用API以按业务键获取实例详细信息,从中我们可以获取工作流实例上下文并读取其值。然后,我们还可以更新工作流实例上下文。最后,我们可以获得工作流任务实例的详细信息,并对其进行更新。