此次开发在***会议项目之后进行的优化。主要内容:
1、 对在这次开发中发现的问题进行解决。
2、 对流程引擎进行重构。
3、 扩展部分流程引擎的功能。
4、 进行结构调整。
5、 单元测试。测试驱动。
调整总体结构
目前结构主要的问题在于,流程内核、应用服务器的服务,业务逻辑都一个动态库中,代码杂糅在一起,不利于后面的维护,重用,以及开发。
现在要做的事情是把它分成三层:
1、 Flow Engine Core 流程内核层
主要的功能是建立一个流程模型,包括:
1) 解析脚本,生成流程。
2) 实现流程的运转。
3) 提供一个扩展机制,以便扩展出多种服务,多种对象。
把流程内核单独剥离出来,形成一个动态链接库。这样,相当于建立了一个流程模型,不单IVR可以使用,其他的流程处理也可以使用。
这是第一层。
2、 AS Service 应用服务器服务层
应用服务器服务层通过流程内核层的服务扩展机制,建立应用服务器相关服务实体,比如:呼叫,拆线,放音,收号等。
还包括特定的对象,如用户对象,会议对象。但是记录用户对象和会议对象的对应关系。这个对象关系在业务逻辑层进行记录。
这一层可能对业务逻辑层封装一些复合服务,比如追呼,强插,强拆等。
3、 Business Logic 业务逻辑层
业务逻辑层的主要功能是处理不同业务的逻辑。以电话会议业务为例:
这一层通过电话号码和会议号和和应用服务器服务层进行交互,保存用户和会议的对应关系,以及会议属性(是否录音,追呼,),记录会场信息,和页面进行交互等。
这里也可以扩展一些会议业务所特有的服务,比如,追呼,三个号码,轮呼等。
node,执行环境,service三者的关系目前不是很好。这里也要调整。
扩展流程功能
扩展的功能包括:
1) 实现流程的“节外生枝”——即在主流程里调用一个子流程。
2) 同步分裂,与汇聚流程
3) 同步分裂,或汇聚流程
代码重构
对代码进行重构。有些接口设计比较差,这里进行一下优化。在优化之前,倒是可以学习一下《设计模式》以及《重构》,顺便温习一下《代码大全》,借鉴一些好的思路。
测试驱动开发
尝试测试驱动开发,为流程引擎代码构建一个可靠的测试环境。这里使用Google Test单元测试框架。
解决这次开发中的技术债务
将这次开发中一些临时的方案用新的方案来进行代替。