昨天跟老大一起理了一下计费的流程,也参考了小君君画的UI,大概的步骤就是这样的: <!----><!----><!----><!---->
1
输入预结号,系统根据航线、业务类型、货类和合同,返回需要计算的费用。
2
选择需要计算的费用,如堆存费
3
系统读取合同中计算的规则,主要是确定计费要素的规则,生成规则库(
RuleBase
)。根据规则和预结号读取事实,用户可以修改需要计算的事实。
4
用户确认事实后,系统生成一个事实库(
FactBase
)
5
用户确认计费,系统根据规则库和事实库计算。
这算是个简单的用例风格的流程,发现有个流程思路更顺了(估计被打,学了这么多年软件工程怎么突然说这么一句)。
FactBase是个伟大的发明,它其中包含了一个HashMap,存储了用于此次计算的所有事实,每个事实是一组事实项组成的,正如每个规则条件表达式是由一堆规则表达式项构成的。
<!----><!---->这些事实项可能是属于一个事实列表(同一类事实在一个列表中)。建立FactBase的作用是
<!----><!----><!----><!---->将所有此次计算需要的事实一次性取出来,然后放到一个类里,这样可以避免反复的查询数据库。
像下面这个列表显示的那样:
<!----><!----><!----><!---->
规则:
0<
整船配载量
<5000
|
6<
堆存天数
<13
|
费率
=3.5
|
集港工具
=
汽车
|
事实:
and
集港工具
=
汽车
每条规则去匹配一个事实。事实项列表如下例:
<!----><!----><!----><!---->
StockpilingRecordItem
堆位
|
堆存量
|
堆存天数
|
01
|
100
|
10
|
01
|
50
|
8
|
01
|
50
|
9
|
01
|
100
|
13
|
01
|
100
|
15
|
集港工具
{
汽车,火车
}
由于客户会有以下需求,只计算某个时间段或某个堆位的堆存费,或者只计算某种集港工具的堆存费。那么在过程中的第4步
用户确认事实就非常重要了,计算机自动根据规则搜集需要计算的数据,然后客户可以再进一步的筛选。同时该步骤也可以用来验证需要的事实的完整性。如果将
FactBase持久化,即可记录此次计算的完整依据。
因此,FactBase的出现是非常有必要的。
昨天下午的晚饭前,用十几行代码实现了一个版本,然后被我删除了,因为那时我还不确定要有FactBase,只是TDD让我有某种预感。
说说TDD,它总是让我有一种进化的感觉,每次重构都变得那么自然,建立对象,分配职责,都变得那么水到渠成,不知道是因为那些建模原则已经形成习惯,还是TDD的神奇力量让我自然的就完成了对象的设计。好吧,或许是DDD的思想在potential影响我。
今天,将是一场大战,我要实现FactBase,这也将连带实现RuleExpressionItemFactory和RuleExpressionBuilder。
杰伦的《稻香》在一次点中了我的穴道,好好的去奋斗,去努力,“不要这么容易就轻易的放弃 ”。
嗯,有杰伦的日子,不怕孤单~~
分享到:
相关推荐
港口堆存费管理系统源码+项目说明+数据库.zip港口堆存费管理系统源码+项目说明+数据库.zip港口堆存费管理系统源码+项目说明+数据库.zip港口堆存费管理系统源码+项目说明+数据库.zip港口堆存费管理系统源码+项目说明+...
3. **港口堆存费管理**:系统的核心功能可能包括计算堆存费用(基于货物的类型、重量、停留时间等因素),跟踪货物状态,生成账单,以及与港口操作系统的集成,以便实时更新存储情况。 4. **数据库设计**:系统可能...
例如,当计算并收取堆存费后,需要同时更新存储记录的状态和客户账户余额,这是一个原子操作,必须保证其完整性,即使在过程中出现错误也能进行回滚。 五、安全性与权限控制 系统应具备用户登录验证功能,不同的...
数据库在堆存费管理系统中扮演着至关重要的角色,因为它存储了港口的所有交易记录、货物信息和费用计算依据。 在Go语言中,实现这样的系统通常会涉及到以下几个关键知识点: 1. **网络编程**:Go语言提供了强大的`...
该项目为基于Vue框架开发的港口堆存费数据库设计与系统...该系统源自大连某海运货代公司的实际案例,专注于港口堆存费(滞港费)的计算、结算和贸易术语条件管理,旨在提升港口堆存费管理的效率和业务流程的规范性。
这是一个基于Go语言后端开发和Vue.js前端框架构建的港口堆存费管理系统项目源码,包含数据库相关的全套资源。这个项目对于学习者来说,尤其适合那些正在进行期末课程设计、课程大作业或者毕业设计的学生,提供了丰富...
港口堆存费管理系统: 堆存费也被称为滞港费,滞港费是由目的港港区收取的,一般货物到港都有一定的免费堆放时间,例如14天,如果有特殊原因需多堆放几天,还可通过目的港货代或收货人向港区申请延期,具体的滞港费...
该项目为基于Vue框架构建的港口堆存费管理系统源码,包含90个文件,其中包含39个Go源文件、14个Vue组件文件、10个SQL脚本文件、6个JavaScript文件、4个PNG图片文件、3个Markdown文档、2个Git忽略文件、2个JSON文件、...
- **装运港堆存费用计算: - 根据贸易术语条件(CIF/CFR),确定在装运港由卖方付的情况下,是否需要支付滞港费。 - 当天无需支付滞港费。 - **卸货港堆存费用计算: - 根据贸易术语条件(CIF/CFR),确定在...
大量数据的手工操作也会是数据操作错误增加,而且还使得相关的工作更加冗长、繁锁,为了使这些数据为使用者起到更多的作用,为管理人员提供依据与分析,建立起了自己的数据库系统,由计算机管理代替手工操作,进行...
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、...
宝利煤矿原煤长期堆存控制措施的知识点如下: 1. 煤矿原煤自燃发火机理分析:研究煤的自燃特性,理解自燃发生的过程...通过这种多方面的努力,可以最大程度地降低原煤自燃发火的风险,保障煤矿的安全生产和经济效益。
8. 遗传算法应用:论文采用了遗传算法解决堆存优化问题,这是一种高效搜索全局最优解的计算方法。 9. 模型验证:通过不同规模的案例分析,证明了优化模型和算法的实用性和准确性。 综上所述,这篇论文深入研究了集...
基隆港和新加坡港按箱次计费,而神户港和釜山港则将此项费用包含在装卸费或堆存费中。 六、拖头使用费 拖头服务是在码头与集装箱堆场间运输集装箱时产生的费用。基隆港是按单位费率乘以拖运次数计算。神户港、釜山...
在此基础上,研究者借助Fluxsim仿真软件模拟了三种堆存策略在特定翻箱规则下的运作情况。仿真结果表明,不同的堆存策略在不同的环境和条件下会有不同的表现。而研究者进一步通过模糊评价理论对这些仿真数据进行分析...
分析了当前矸石山、现存燃烧矸石山和曾经燃烧过的矸石山座数统计结果存在巨大差别的原因,提出应放弃凭经验来确定的思维,通过考察典型地区的矸石山状况,采用实地调查与分区块方法,并考虑煤矸石的综合利用情况,估算...
海上风电设备的码头装卸方式和堆存方式 海上风电作为清洁能源领域的重要分支,随着全球能源结构转型和环保需求的增加,近年来得到了快速发展。海上风电设备的安装和维护工作大量依赖于海上风电场附近港口的码头装卸...
在自然堆存条件下的煤矸石受降雨喷淋、雨水浸渍等作用,其化学组分有可能溶出并进入土壤及水体造成污染。对在自然条件下堆存的煤矸石常规组分、灰成分组分、有害微量元素组分(镉、铜、镍、铅、锌、铬、氟、砷、汞)随...
- **货运站服务费**:涉及货物的拼装、拆箱、封箱、标记、堆存等操作,费用根据服务内容和时间长短计算。 3. **集散运输费(支线运费)** - **水路支线运费**:由干线船公司统一经营或支线船公司单独计收,用于...