微内核流程引擎(IVR导航)的设计与实现(一)——在一次尝试后的优化

此次开发在***会议项目之后进行的优化。主要内容:

1、 对在这次开发中发现的问题进行解决。

2、 对流程引擎进行重构。

3、 扩展部分流程引擎的功能。

4、 进行结构调整。

5、 单元测试。测试驱动。

调整总体结构

目前结构主要的问题在于,流程内核、应用服务器的服务,业务逻辑都一个动态库中,代码杂糅在一起,不利于后面的维护,重用,以及开发。

现在要做的事情是把它分成三层:

wps_clip_image-200

1、 Flow Engine Core 流程内核层

主要的功能是建立一个流程模型,包括:

1) 解析脚本,生成流程。

2) 实现流程的运转。

3) 提供一个扩展机制,以便扩展出多种服务,多种对象。

把流程内核单独剥离出来,形成一个动态链接库。这样,相当于建立了一个流程模型,不单IVR可以使用,其他的流程处理也可以使用。

这是第一层。

2、 AS Service 应用服务器服务层

应用服务器服务层通过流程内核层的服务扩展机制,建立应用服务器相关服务实体,比如:呼叫,拆线,放音,收号等。

还包括特定的对象,如用户对象,会议对象。但是记录用户对象和会议对象的对应关系。这个对象关系在业务逻辑层进行记录。

这一层可能对业务逻辑层封装一些复合服务,比如追呼,强插,强拆等。

3、 Business Logic 业务逻辑层

业务逻辑层的主要功能是处理不同业务的逻辑。以电话会议业务为例:

这一层通过电话号码和会议号和和应用服务器服务层进行交互,保存用户和会议的对应关系,以及会议属性(是否录音,追呼,),记录会场信息,和页面进行交互等。

这里也可以扩展一些会议业务所特有的服务,比如,追呼,三个号码,轮呼等。

node,执行环境,service三者的关系目前不是很好。这里也要调整。

扩展流程功能

扩展的功能包括:

1) 实现流程的“节外生枝”——即在主流程里调用一个子流程。

2) 同步分裂,与汇聚流程

image4

3) 同步分裂,或汇聚流程

image5

代码重构

对代码进行重构。有些接口设计比较差,这里进行一下优化。在优化之前,倒是可以学习一下《设计模式》以及《重构》,顺便温习一下《代码大全》,借鉴一些好的思路。

测试驱动开发

尝试测试驱动开发,为流程引擎代码构建一个可靠的测试环境。这里使用Google Test单元测试框架。

解决这次开发中的技术债务

将这次开发中一些临时的方案用新的方案来进行代替。

你可能感兴趣的:(优化)