SDT从这里出发

2024-03-15 18:10
文章标签 出发 sdt

本文主要是介绍SDT从这里出发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从这里开始

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接口 <script src="public_sys-resources/ExpandCollapse.js" type="text/javascript"></script>

          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。

  • 状态图

状态图 <script src="../public_sys-resources/ExpandCollapse.js" type="text/javascript"></script>

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

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

  • 活动图

          活动图 <script src="../public_sys-resources/ExpandCollapse.js" type="text/javascript"></script>

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

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

 说明:

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

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

  • 状态
  • 接口实现方法
  • 接口调用方法
  • 事件类
  • 接口
  • 事件包

这篇关于SDT从这里出发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812826

相关文章

从需求场景下出发实操Clickhouse

背景 本着以实时数仓为目标调研了几款OLAP引擎,像Clickhouse、Kylin、Druid等,在粗略了解其架构后,并且在接受各个大厂Clickhouse实践、高性能测试报告、最近业界发展势头凶猛的熏陶与PUA情况下,不得已选择了Clickhouse,当然自己也做过一些测试,本篇将介绍clickhouse的一些原理、实践方案(可能还未实现、可能并不是最佳)与遇到的一些问题,总之只是希望能

Day24 第11站 出发 c++!

1> 思维导图 2> 提示并输入一个字符串,统计该字符串中字母个数、数字个数、空格个数、其他字符的个数 string s1;cout << "请输入一个字符串" << endl;getline(cin,s1);int len = s1.length();char buf[128]="";strcpy(buf,s1.data());int i=0;int a=0;int b=0;i

从代码出发,一次性理解 JS 事件流

你好,我是沐爸,欢迎点赞、收藏、评论和关注。个人知乎 掌握 JavaScript 事件流可以深入理解事件在Web页面上的传播方式,这对于开发交互式和动态网页至关重要。理解事件流可以帮助你更有效地控制事件的行为,避免不必要的事件冲突,以及实现更精细的事件监听和处理逻辑。 今天分享下什么是事件流?事件流的三个阶段?如何控制事件流?如何阻止事件传播?如何阻止默认行为?什么是事件委托? 一、事件流

【报告分享】从新出发-全球美妆个护趋势-英敏特(附下载)

摘要:随着消费者生活方式的变迁,品牌更加精准的定位和营销,已经让我们的美妆行业步入了更加创新,细分,强调功能性,互动性以及个性化的时代。尤其是国内的格局,不论是知名品牌或是国内外新兴的品牌崛起,都让我们的消费者体验了前所未有的“新潮”、“新风向”。 来源:英敏特 ​ 如需查看完整报告和报告下载或了解更多,公众号:行业报告智库 今日报告分享

从KMP原理原理出发解决问题

网上已经很多对具体过程的解释 我就不再赘述 这里 我只说一下 我对KMP算法的理解 ps:刚开始 也是想了好久 但是始终不得其解 后来 看了算法导论 然后想了想 就明白了 KMP算法原理 前提:next数组构造成功 如果匹配到pos位置匹配失败 那么在模式串中的匹配位置回跳到patten[0…pos-1]这个串的公共前后缀的下一个位置 这样就节省了匹配前缀的时间 KMP优化思想就在这里

算法工程师 | 如何快速 了解,掌握一个算法!脚踏实地,迎着星辰,向前出发 ~

本文是一些碎碎念 希望对正在迈向 算法工程师道路的你 有所裨益 一般来说,代码 中会有很多 算法实现的细节,但论文可能并没有体现,所以能够尝试自己 仔细阅读论文,手动复现代码,基本上来说对 这个 算法 你有了全面的理解,和把握。 通过算法设计的一些特性,你会知道这个算法适用于什么样子的场景,这个算法所擅长和不擅长的事情。 就像如何训练微调优化一个大模型,这些工程上的细节,其实

软件方案评审与模块优化:从FOC模块出发的电控平台建设

一、背景 洞悉模块发展趋势,定制行业应用特点,明确优化方向与阶段性目标 随着科技进步的飞速发展,模块化设计已成为众多行业产品开发的核心理念。无论是软件系统、硬件组件,还是复杂系统中的功能模块,都需要对其发展趋势、应用特点及优化方向进行深入了解和精确把握。本文将针对各类模块的特点、应用需求,以及其优化路径进行深入探讨,并结合当前阶段和未来发展规划,明确优化的目标、必要性、可行性、资源占用以及开发

思考输入变量与输出变量之间的关系---从线性回归出发

2018/11/09 长久以来,我都不知道最小二乘法我在多少本书上看到过了。 不管是算法书也好,统计数也好,机器学习的书也好,全是这个概念。结果呢,说实话,我还是不明白这个算法的意义, 当然哈,不是说这个算法是怎么样的流程我不明白,我是说,为什么这个算法被认为这么重要,这一点我不太明白。 这里就先不说这个事情了。 01 概述 本篇文章用线性回归中,导出一些特征的引子。这些东西呢,从线性回归的角度

从人的本能出发谈游戏设计

【采集-狩猎】 资源获取不可预知; 资源永远处于相对匮乏的状态。 【稀缺性】 我们并不是只要面前有一堆金币,不断捡金币 我们还需要一个“资源缺乏的环境”,一个让“金币”稀缺的环境 【攻击】 1.获取他人的资源 2.抵御他人的进攻(以保护自己的资源) 3.提升社会地位和权力等级(以占有更多资源) 4.打消竞争者的攻击念头(以避免发生实际的战斗,而使自己

周鸿祎谈产品设计 要从这3点出发

1. 痛点 2. 刚需 3. 高频 设计体验的话要以‘简单’ 详情参考“周鸿祎:互联网好产品六字法则 刚需、痛点、高频”