规则在Python中声明,并通过IDE代码完成简化 。下面的屏幕显示了检查信用逻辑的5条规则 。
上面的apply_customizations过程模拟了使用IDE在logic/declare_logic.sh中声明逻辑的过程 。
可以查看运行中的逻辑:
(1)在管理应用程序中,注销(右上角),并以管理员(admin)身份登录 。
(2)使用管理应用程序为客户1添加订单和项目(见附录) 。
观察控制台日志中触发的规则,如下面的屏幕截图所示 。
逻辑提供了对过程逻辑的显著改进,如下所述 。
A.复杂性扩展下面的截图显示了逻辑声明和插入项目(Item)的日志记录 。每行表示一个规则触发,并显示该行的完整状态 。
注意,这是一个多表事务,如缩进所示 。这是因为-就像电子表格-规则自动链,包括跨表 。

文章插图
B.代码简洁40倍5个类似电子表格的规则可以表示与200行代码相同的逻辑,如下所示 。这在系统的后端减少了40倍代码 。
C.自动再利用以上的逻辑(可能是为Place order设计的)自动应用于所有事务:删除订单、更改项目、将订单转移给新客户等 。这减少了代码,并提高了质量(没有遗漏的极端情况) 。
D.自动优化通过削减和消除昂贵的聚合查询,可以最小化SQL开销 。这些可能导致数量级的影响 。
E.规则透明规则是一种可执行的设计 。需要注意的是,它们完全映射到自然语言设计(如注释所示),可供业务用户阅读 。
可以选择使用Behave TDD方法来定义测试 , 并且规则报告Rules Report将显示为每个测试执行的规则 。
3.使用规则和Python进行迭代类似于电子表格的规则不仅简洁了40倍的代码,而且还有效地简化了维护 。举个例子:
购买10件或以上的碳中和产品,给予10%的折扣 。
下面的apply_iteration过程模拟迭代:
- 通过Product.CarbonNeutral获取一个新的数据库 。
- 发出ApiLogicServer rebuild-from-database命令 , 重建项目(数据库模型、API),同时保留上面所做的自定义设置 。
- 获取修改后的ui/admin/admin.yaml , 在管理应用程序中显示这个新列 。
- 获得修改后的逻辑:在logic/declare_logic.py中,将model . item . amount公式的2行替换为以下内容(下一个截图显示了使用断点执行的修订逻辑):
def derive_amount(row: models.Item, old_row: models.Item, logic_row: LogicRow): amount = row.Quantity * row.UnitPrice if row.Product.CarbonNeutral and row.Quantity >= 10: amount = amount * Decimal(0.9) # breakpoint here return amount Rule.formula(derive=models.Item.Amount, calling=derive_amount)要应用这个迭代,在项目的终端窗口中:(1)停止服务器(红色停止按钮,或Shift-F5 -参见附录)
(2)应用迭代
# mac, linuxsh apply_iteration.sh#windows./apply_iteration.ps1(3)设置断点,如下图所示 。(4)测试:启动服务器,以管理员身份登录 。
(5)使用管理应用程序通过添加12个绿色项目来更新订单 。
在断点处,可以使用标准调试器服务来调试逻辑(检查项目属性、步骤等) 。

文章插图
这个简单的例子说明了迭代的一些重要方面,将在以下的小节中描述 。
3.1.维护自动化除了编写文档之外,开发人员最讨厌的任务之一就是维护代码 。这是因为这与编写代码无关 , 而是需要理解和破译别人编写的代码,这样就可能添加4或5行代码 , 这些代码有望被调用并正确运行 。
规则改变了这一点,因为它们基于系统发现的依赖关系对它们的执行(和修改)进行自我排序 。因此要更改逻辑,只需“在桶中放入一个新规则” , 数据库系统将确保以适当的顺序调用它,并在所有应用的用例中重复使用 。维护速度更快 , 质量更高 。
3.2使用Python扩展在这种情况下,需要进行一些if/else测试,添加少量Python非常方便 。即使对于Python新手来说,使用“Python作为4GL”也非常简单 。
当然,拥有Python及其许多库的全部面向对象功能,因此不存在自动化惩罚限制 。
3.3调试:IDE和日志记录上面的屏幕截图说明了调试逻辑是人们所期望的:使用IDE的调试器 。这种“基于标准”的方法适用于其他开发活动,例如源代码管理和基于容器的部署 。
推荐阅读
- 如何查男朋友有几个微信
- 微信能如何申请退款,苹果手机微信美团怎么申请退款
- 如何用电脑同时登陆两个微信号
- 微信怎么查和一个人的转账记录,微信上怎么查和一个人的转账记录
- 乳酸菌是不是原核生物,乳酸菌是不是自养微生物
- 高压锅炖羊肉的家常做法,微压力锅清炖羊肉家常做法
- 逆水寒手游微瑕和正常装备区别详解:微瑕装备可以修复吗?
- 微信附近的直播怎么看私信,微信附近的直播和人怎么关闭
- 微信投票能如何操作,微信投票如何快速拿1000票
- 微信验证消息能如何看全,为什么微信互删后验证消息也消失了
