为了实现完整的NP业务,在接口协议中共定义“NP业务申请流程”、“NP业务生效流程”、“NP业务取消流程”、“NP业务注销流程”、“NP业务审计流程”、“欠费处理流程”等6大类的业务流程。而在每一个大类中,基于正常的或者可能出现异常的情况,还定义出了若干的子流程。
在CSMS接口协议业务流程中,两个主要元素就是“消息”和“定时器”。下面就以成功的NP业务申请流程为例说明CSMS接口协议中的流程设计思路,以及消息和定时器的定义方法(图2)。
图2成功的NP业务申请流程
从图2可以看到,携入方SOA首先需要将用户的申请信息发送给CSMS,CSMS响应后转发给携出方SOA,SOA验证通过后,将响应结果返回CSMS,并由CSMS告知携入SOA申请成功。
在流程图中,每一条消息(申请请求、申请响应、申请结果告知)都对应一种消息结构,用于传递相应的信息。例如,在申请响应消息中,就包含了“消息ID”、“请求消息ID”、“消息命令码”、“业务类型”、“NP号码”、“NP流程ID”、“返回代码”、“拒绝消息”等参数字段。每个参数的用法、长度、数据类型在协议中也都进行了严格的定义。比如“消息ID”是由发送方维护的流水号,用于唯一标识的消息,采用l6位的定长字符串的方式来存储和传递。
除了消息,另一种对流程影响非常大的元素就是定时器。可以说,定时器严格的限定了NP业务节点的行为方式。在图2中,Tl-1定时器是申请请求与申请响应之间最大间隔的定时器,此定时器要求CSMS在收到申请请求消息后,必须在T1-1超时之前发送申请响应消息;而携入方一旦在T1-1的时间内没有正确地收到申请响应消息,将会进行重发和告警。
4 协议高可靠性的设计
为了提高CSMS接口协议的可靠性,在设计过程中引入了以下三种机制:
·ACK快速反馈机制;
·完善的错误定义和后处理机制;
·心跳检测机制。
首先,在CSMS接口协议中,定义了一种特殊的消息,称为ACK消息。在业务节点接收到任何一条NP消息后,将首先返回一条ACK消息。ACK消息不携带任何应用层面上的信息,仅仅是告知发送方我已经接收到了你方发来的消息。有了ACK消息,发送方就能立刻确认对方是否已经正确地接收到了消息,而不是在等待对方超时仍然没有返回响应消息时才发现上一条消息对方并没有正确接收到。通过使用ACK机制,无疑是提高了协议的可靠性。
其次,在CSMS接口协议中,定义了50多种错误消息代码,并且根据实际应用情况,还有可能继续扩充。这些错误消息代码的定义,最大程度上细化了NP业务中可能出现的异常情况,而细化的结果就是针对每一种错误情况都定义了完备的后处理机制。例如当消息发送方收到的ACK消息中携带“500”(接收方服务器异常)错误代码,则发送方应在五分钟后使用新的MessageID号重发此消息。
最后,CSMS接口协议中还定义了心跳检测机制,CSMS会定期通过网络层的消息(例如PINg消息)检测对端的健康状态。一旦发现与对端之间的网络出现问题,则暂停发送消息,避免在网络故障时出现大量重发消息的堆积。