Pyt*_*ast 5 python django workflow django-rest-framework
我正在构建一个支持多种贷款产品的业务应用程序.
例如:房屋贷款,汽车贷款,个人贷款,电子商务贷款.
涉及的主要步骤是:
业务流程的一个示例是:
客户登机,登记他的手机号码,用OTP验证
填写他的个人信息(验证它)
提供贷款金额
检查贷款可信度
分配资金(在XYZ验证后)
提供银行账户详情
验证银行帐户(仅在您获得abc信息后)
做eKYC
支出
现在,我正在使用Django REST Framework构建Web API.但是,有一个问题.
在我们的另一个产品中,流程可能不同.Step 4并且 Step 6可以互换,但Step 7需要在同一个位置完成.基本上,我应该有灵活性来重新调整活动(节点).
截至目前,编写的API(虽然是模块化的)仅适用于一种产品.如何使用DRF作为工作流方法?或使用DRF顶部的任何库来管理流程.
我们有一个类似的用例,并使用了一个流库,它可以根据条件驱动流捕获整个工作流。
您可以查看Viewflow: https: //github.com/viewflow/viewflow
基本上,这就像设置一个流程并利用条件来引导和重定向到不同的机制。他们简单的快速入门页面告诉您如何实现它:http://docs.viewflow.io/viewflow_quickstart.html
我刚刚在您的案例中尝试了一些示例流程:
class CustomerProcessFlow(Flow):
process_class = CustomerProcess
start = (
flow.Start(
views.CustomerOnBoardView # Let's say this is your customer onboard view
fields=["customer_name", "customer_address", "customer_phone"]
).Permission(
auto_create=True
).Next(this.validate_customer)
)
validate_customer = (
flow.View(
views.ValidateCustomerDataView # Validation for customer data,
fields=["approved"]
).Permission(
auto_create=True
).Next(this.loan_amount)
)
loan_amount = (
flow.View(
views.LoanView # Provide Loan
fields=["loan_amount"]
).Permission(
auto_create=True
).Next(this.check_customer_association)
)
check_customer_association = (
flow.If(lambda customer_association: ! customer.type.normal)
.Then(this.step_4_6)
.Else(this.step_6_4)
)
step_4_6 = (
flow.Handler ( this.check_load_credibility_data )
.Next( this.provide_bank_details_data )
)
step_6_4 = (
flow.Handler( this.provide_bank_details_data )
.Next(this.check_load_credibility)
)
this.check_load_credibility = (
flow.Handler( this.check_load_credibility_data )
.Next( this.end )
)
this.provide_bank_details_data = (
flow.Handler( this.provide_bank_details_data )
.Next(this.end)
)
end = flow.End()
def check_load_credibility_data(self, customer):
# Load credibility
def provide_bank_details_data(self, customer):
# Bank Details
Run Code Online (Sandbox Code Playgroud)
可以在这里看到一个例子
| 归档时间: |
|
| 查看次数: |
417 次 |
| 最近记录: |