需求:
1. 提供一个输入面板, 供用户输入参数, 参数及参数之间有如下特点:
- 参数有类似C++的Structure结构, 即参数可分组
- 参数存在默认值, 类型,名称, 并且某些参数可以显示,某些参数不需要显示
- 参数之间存在约束关系,比如参数一的值为A的时候,参数二显示值为B, 同时参数三对用户隐藏
- 参数存在复杂的逻辑关系,比如参数一为A, 参数二为B,自动计算出参数三的值为A*B+B
- 当面板中出现多个参数时,需要有良好的机制,将些参数分到不同的组中,不同组的参数,依然需要实现上述四种需求。
2. 计算通过参数的输入, 并通过数据源(或者XML,或者Excel,甚至是数据库)和公式计算出结果,同时序列化到文件。
3. 上述的参数的个数,参数和参数之间的关系,以及公式, 都能灵活变动。 并且随着产品模块增加,参数会增加和减少, 需要较好的方案实现可扩展性。
设计思路:
1. 采用Eclipse RCP + XML + javaScript 方案
2. 借助XML良好的组织层次关系, 将参数或者参数集合表现出来. 如xml的节点嵌套, 并列, 多个属性值, 可以支撑需求1, 2, 3
3. 由于配置好之后的参数,要形成一个可扩展的逻辑运算模块, 这里xml不再适合(xml适合数据表示,和简单逻辑, 复杂逻辑描述很不方便),因此,这里的方案是采用JavaScript脚本表示,鉴于Jdk1.6对js支持非常好,因此这里将采用该方案.
4. 这里按照处理不同,可以分为两种模块: 由xml生成界面可以分离成一个木块, 由js处理数据参数可以分为第二个模块. 这样做的目的是,如果下次遇到配置工具,需要由xml生成界面,则第一个模块可重用, 若遇到java调用Js的新需求,第二个模块可重用.
5. 待续.