English|中文
如果你是第一次了解 Nature , 建议你从头到尾阅读这些 Demo。 每个章节都包含一些不同的 Nature 要点,以说明如何用 Nature 独有的方式来解决问题。本示例在windows环境进行演示,如何启动 Nature 项目请参考:项目准备
这个Demo涉及的场景比较多,如订单,支付,库房,配送以及签收等。这不是一个具有生产力的示例,但却简练的勾勒出系统的骨架以及她所具有的强大的支撑及扩展能力。
| 章节 | 内容摘要 | Nature 要点 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 接收订单 | 大致讲解一下Nature的使用方式,介绍Nature的一个重要的能力:有些业务只需要配置一下不需要代码就能自动完成。 | Meta
, master, target-state, 自动执行器,状态数据与非状态数据,关系,事务ID,追溯,幂等 |
| 订单账 | 将外部逻辑编织到 Nature 中的能力。体现 Nature 的主导性和规范性。 | localRust 执行器,数据一致性,自上而下的控制与自下而上的选择。消灭代码中的控制器 |
| 支付订单 | 我们只写了很少的业务代码,就实现了支持多次支付的复杂场景,Nature 会在幕后提供很多保障,如数据一致性,并发冲突等问题。 | 系统上下文,自适应并发冲突,状态数据控制。状态选择控制流程,数据追溯 |
| 出库 | 如何与涉及到人工和(或)机械设备的慢系统打交道 | 与遗留资产对接,回调,http执行器,提交状态数据。 |
| 配送 | 这里展示了和外系统协作的方法 | 参数化输入 |
| 签收 | 这里描述了Nature 对时间敏感性任务的处理 | 延迟转换 |
| 附录-多个库房 | | 上下文选择控制流程 |
可以把 Nature 看做一个流式计算框架,但你不需要为技术框架和专业技术团队而头痛,这个也许不是性能最好的,但我想是生产力非常高的一个。
下面给出一个成绩统计的例子:
| 章节 | 内容摘要 | Nature 要点 |
| ------------------------------------------------------------ | ---------------------------------- | ---------------------------------------------------------- |
| 全员成绩单->个人成绩 | 将多个成绩单按人进行拆分 | builtin-executor: dimensionSplit,后置过滤器 |
| 求出每个人所有科目的总分 | 利用状态数据完成个人所有科目的统计 | para
作为选择条件,useupstreamid,builtin-executor: sum |
| 章节 | 内容摘要 | Nature 要点 | | ------------------------------------------------------------ | ------------------------------------ | ----------------------------------------- | | 订单->标记数据的时间范围 | 引入一种更高效的数据统计方法 | cachesaved, builtin-executor: timerange | | 订单统计维度拆分 | 为了提升性能,可以一次生成多个目标。 | MetaType::Multi | | 求出班级总分的top | | |
服务于流程审批
多个部门复用
尽量避免编程
安全提交审核(可通过发放token来解决,Nature 需要验证)
模式:
必须两人同意才通过
两个人中的任何一人同意就可通过