SDT从这里出发

来源:互联网 发布:国家社科基金网 数据库 编辑:程序博客网 时间:2024/04/30 18:36

从这里开始

SDT(Service Development Tool)是一个基于SNE(Service Network Environment)平台、定位于电信业务开发全流程的开发工具,具有业务建模、业务开发、代码生成和编译调试等功能。它采用图文并排的编码方式,支持图形化调试功能,极大地提高了人们开发电信业务的效率。

基本概念介绍

  • Service

 

          Service是一个可管理的功能单元,能够提供服务或调用其它远程服务。

          Service的形态有以下两种:

 

              Platform Services:基础平台提供的公共服务和功能领域的服务。

              Application Services:领域平台之上的最终业务应用。

 

          Service创建了Session并管理Session的生命周期,一个Service可以创建多个Session。Service在SDT中是以Service类的方式体现,整个业务中必须有一个主Service。Service可以从接口和远程接口多继承,只能从Class单继承。

Service固定有一个RunProc方法,作为远程调用消息的统一处理入口,如下图所示。

 

                   Service图元

         

一个工程有且必须只有一个主Service,SNE在加载业务时会创建主Service对象。“service view”下的Service为主Service,“service view”的Package下的Service 为辅Service。

  • Session

          Session是负责处理具体事务的分布式对象(如处理智能呼叫)。Session由Service负责创建,其生命周期由Service管理。

          Session被创建后即可独立处理事务。Session可以包含其它的Session,例如在多方呼叫中存在的主会场Session和子对话Session。

          Session在SDT中以Session类的方式体现,整个业务中可有0~N个Session。

          Session可以从接口和远程接口多继承,只能从Class单继承。

          Session固定有一个RunProc方法,作为远程调用消息的统一处理入口,如下图所示。

 

                    Session图元

          

 

  • SessionProxy

          Session代理和本地类的区别在于,Session代理可以继承IDL接口并可采用多种方式实现继承的接口。

          Session代理把Service/Session的某些公用功能分离出来,让Session代理对象帮助实现这些分离出来的功能。因此该类型实例必  须由Service/Session创建,一般只在Service/Session实例中使用。

          SessionProxy图元如下图所示。
                 SessionProxy图元
            
SessionProxy与其他类型的关系

类型

继承

关联

聚集

本地类

本地接口

外部预定义类

Service/Session

不可

不可

远程接口

不可

代理

不可

不可

  • IDL接口

IDL接口

          IDL(Interface Definition Language)是用来描述服务调用端和服务实现端之间的调用约定的接口语言,如详细描述了调用操作的参数个数、参数类型及参数顺序等。

IDL编译器会根据IDL定义生成客户端Stub和服务端Skeleton。

  • Stub相当于服务实现端的一个代理,通过它把请求发送到服务实现端。
  • Skeleton把调用端的请求转发到具体的接口实现逻辑。

          通过IDL接口,业务开发人员就可以像使用本地调用那样调用远端服务。

          目前SDT中仅实现了JAVA代码的映射。

         下面是一个IDL定义的简单例子。

module calculator{  interface icalSession    {   long add(in long x,in long y);   long sub(in long x,in long y);   long mul(in long x,in long y);   long div(in long x,in long y);       };    interface icalService    {       icalSession creatsession(in string ID,in string passwd);    };};   
其中:
  1. module calculator:定义模块,此模块的名称为calculator。
  2. interface icalSession:定义接口,此接口的名称为icalSession。
  3. long add(in long x,in long y):定义接口方法,该方法返回一个long值。
  4. long sub(in long x,in long y):定义接口方法,该方法返回一个long值。
  5. long mul(in long x,in long y):定义接口方法,该方法返回一个long值。
  6. long div(in long x,in long y):定义接口方法,该方法返回一个long值。
  7. interface icalService:定义接口,此接口的名称为icalService。
  8. icalSession creatsession(in string ID,in string passwd):定义接口方法,该方法返回icalSession接口。

 

  • 类图

          类图的默认名是“main”。用户可以根据自己的需要灵活使用类图。

 

          用户在类图中定义Package、Class和Interface之间的关系。包里还可定义新的Package、Class、Interfac、类继承接口。

          用户在类图中定义Package、Service、Session和SessionProxy之间的关系。包里还可定义新的Package、Service、Session和SessionProxy。

  • 状态图

状态图

          状态图强调的是事件驱动对象的动作,由状态、迁移、事件组成。状态图包含状态及状态之间的关系,按状态组织,用于描述指定对象的状态行为。

          状态图相当于是加了IDL调用和处理的活动图。SDT的状态图与UML(Unified Model Language)的状态图有一定差异,Service Call图元用于IDL调用,Normal State图元用于等待IDL调用并根据调用接口进行状态迁移,Reusable State图元是复合状态图元,可以调用子状态机。

  • 活动图

          活动图

活动图演示了系统中的功能流,可以在业务模型中显示业务工作流,在收集需求时显示某一使用案例中的事件流。在活动图中定义了工作流的开始部分、结束部分、工作流中发生的活动以及这些活动的发生顺序等。

活动图是对普通方法的一种实现方式。活动图相当于是图形化的JAVA代码,与UML的活动图差别较大,与流程图更加类似,这样设计的目的是为了方便生成代码。活动图中不能调用IDL接口,也不能等待其它业务的IDL请求。

 说明:

活动图与状态图的区别在于:

  1. 状态图强调在事件的驱动下,对象状态的迁移。活动图强调系统中的处理流程,它与状态图的主要区别就是它不能处理事件。
  2. 状态图不可以使用script方式来代替,而活动图则可以使用script方式来代替。

  • 状态
  • 接口实现方法
  • 接口调用方法
  • 事件类
  • 接口
  • 事件包
原创粉丝点击