在管理订阅时,手动处理续订过程的组织对组织来说是令人生畏的。 如果您忘记了您的续约?它肯定会影响您的组织,从而导致服务中断和经济处罚。
您可能已经听说过几个实例,组织忘记了其域名的续订,导致停电使它们造成数百万美元。
自动订阅续订过程是克服此类情况的唯一方法。可以利用像Orkes指挥这样的编排引擎来自动化您的订阅工作流程。 Orkes导体是建立Netflix导体的应用程序构建平台。
在此博客中,让我们看一下如何构建示例订阅申请,以使用导体和Java Spring Boot 2进行每月订阅。
每月订阅工作流程:解释
假设您的每月订阅工作流的业务逻辑如下:
- 触发一个包括试用期的订阅工作流。试验期包括发送欢迎邮件和等待期,直到审判结束为止。
- 一旦审判结束,它就会启动应重复每个计费期的计费过程。
- 在指定的计费期限的末尾,工作流程结束并通知用户。
- 用户应该能够在试用期或计费期间的任何时候取消订阅。
- 一种在试验开始,计费开始时以及订阅完成/取消时通知用户的一种方法。
让我们可视化工作流程:
运行工作流程时需要提供以下输入参数。
- userId
- userEmail
- Billingamount
- billingperiod
让我们看看工作流程如何进展:
- 工作流程从fork-join任务开始,该任务使您可以并行运行指定的任务列表。
在此示例中,我们有两个叉子。第一个叉子处理订阅流,包括试验和实际订阅过程。如果用户取消,则第二个叉子等待信号。叉子可以完成并结束工作流程。
- 在第一个叉子中,当用户订阅时,试验期开始。一封电子邮件发送给用户有关试验的开始。这是使用worker task (SIMPLE task)实现的,您可以在其中配置电子邮件主题和电子邮件内容。电子邮件ID和用户名将从工作流输入中调用。
{
"name": "send-subscription-demo-email",
"taskReferenceName": "send_welcome_email",
"inputParameters": {
"emailSubject": "Welcome to the subscription!",
"emailContent": "Some email content welcoming user to subscription",
"userEmail": "${workflow.input.userEmail}",
"userId": "${workflow.input.userId}"
},
"type": "SIMPLE",
},
- 随后是wait任务,可以根据您的试用期进行配置为等待。在此示例中,我们将其配置为等待直到10秒。
- 等待时间结束后,订阅开始,并使用上面定义的相同任务定义发送有关此的电子邮件。
- 然后订阅开始并循环直到使用do-while任务完成。
现在,如果用户取消订阅该怎么办?
如果用户取消,则第二个叉子等待信号。要通过信号,我们在此示例中利用了Webhook。 webhook配置了以下参数:
- 在字段下工作流以接收Webhook事件,我们选择了每月订阅工作流程。
- 导体对大多数提供商都提供了离心的支持。由于我们使用curl命令将信号发送到Webhook,因此我们选择了源平台作为 custom 。 。
- webhook配置为期望一个名为 subscriptionFlow 的标头,其值 subscription-flow-header-header-unique-nique-value 。
- 最初保存Webhook时,URL将是未经验证的,当第一个事件来自配置标头值的Webhook时,将验证URL。
在此示例中,我们已经在操场上创建了一个webhook。
在 wait_for_webhook 工作流定义中的任务中,输入匹配定义为:
"inputParameters": {
"matches": {
"$['event']['userId']": "${workflow.input.userId}"
}
},
因此,使用卷曲的样本Webhook调用如下:
curl -H "Content-Type:application/json" -H "Accept:application/json" -H 'subscriptionflow: subscription-flow-header-unique-value' -X POST 'https://play.orkes.io/webhook/ba70ba33-1a19-449e-98c2-d4581fcd9aad' -d '{"event": {"userId" : "user-id-1"}}'
它包括标题键和值(与Webhook中配置的相同),Webhook URL和输入参数',它们应该与您提供的工作流输入相同。 P>
您可以使用我们在操场上创建的Webhook来运行此示例。如果您使用另一个自定义Webhook,请确保在调用时替换Webhook URL。在您的春季启动项目中,在application.properties下,您需要更新Webhook URL。
运行Spring Boot应用程序
用于定义此应用程序的代码可在github上找到:https://github.com/conductor-sdk/orkes-java-springboot2-subscription-example
本地运行此应用程序:
- 克隆系统上本地的Spring Boot项目。
- 用访问密钥替换application.properties文件。查看本指南有关generate access keys from Playground的指南。
orkes.access.key=your_key_id
orkes.access.secret=your_key_secret
orkes.conductor.server.url=https://play.orkes.io/api.
您还需要提供permissions for the application to access the workflow and tasks。
注意:如果您在本地运行导体,请用导体服务器URL替换orkes.conductor.server.url。
使用以下命令从根项目文件夹中运行Spring Boot应用程序:
mvn spring-boot:run
此应用程序具有在SubscriptionApiController.java中暴露的控制器,并具有以下API方法:
- /starterubscription :调用时,它将触发处理订阅的工作流程。
- /cancelsubscription :调用后,它将webhook api称为导体,以表明订阅已经结束。
在操场上运行订阅工作流程
现在您了解了订阅工作流程。由于您已经配置并运行了Spring Boot应用程序,因此现在运行工作流程!
- 从操场上,单击左菜单中的Run Workflow。
- 选择工作流 monthly_subscription_workflow_with_trial ,提供输入参数,然后运行工作流程。
{
"userId": "",
"userEmail": "",
"billingPeriods": "",
"billingAmount": ""
}
如果用户未取消:
,那么成功的执行方式是这样的。如果用户取消订阅(通过Webhook收到信号),则执行方式如下:
加起来
我们构建了一个可视化的流,该流量可以有效地管理订阅,甚至包括处理试用期! ð¥
尝试从头开始构建应用程序,reach out to us for any queries。
同时,通过Orkes Playground探索其他指挥功能,这是一个免费的专用开发人员沙箱,供您实时尝试导体。
如果您喜欢与指挥构建应用程序,请不要忘记给我们的Netflix Conductor仓库中的明星。