从《时序计算通用模型接口 OpenMI开发技术及应用》一书中的第一章的对接口要求描述,我想到InfoSphere streams的流数据处理模式刚好可以满足这种模型/数据之间对接的需求。

   

  如上图1-2和1-4所示的模型连接情景,可将之以InfoSphere Streams中的设计模式处理。从需求的角度来说,如书中1.2.4所述,OpenMI定义的标准接口具有三方面的功能(需求).(i)模型定义:允许其他连接组件找到这个模型模拟量值(quantities)交换的数据及模拟量所在的位置;(ii)配置:为了特定目标连接两个模型时可定义所交换的内容(iii)运行时操作:使得模型在运行时能接收或提供数据。第一个需求中我理解为从平台构建模型并将模型纳入运行维护范围的需求,如InfoSphere中构建Operator一般;第二个需求要求定制模型间交换的内容,这就相当于InfoSphere中的Operator之间的数据连接,可以定制其数据类型、数据连接的走向(数据两端是哪两个operator);第三个需求我理解为模型间可以运行时交换数据,并可与人进行一定程度的交互,在InfoSphere中就体现为流数据应用在SPS中运行的状态,操作者可以从SPS中控制整个SPA的运行状态以及运行方式。

  讨论完功能需求相似的程度,接下来就是设计模式的问题:

  首先就是标准化的问题,如SPL一般,我们设计数据类型,将模型(包括其计算内核【可能由不同语言和不同人开发编写】、作为adapter的中间件【负责将计算内核的接口重新包装为平台接口】)看作是SPL中的operator,模型间的联系看作是operator之间的输入输出端口【包括将计算内核的数据转化为平台数据格式的模块】,这些都需要提供标准接口才能做到类似SPS的管理系统的集中管理和分析以及它们之间的通信。

  这样一来,对于构建各个模型间的协同关系并使其共同工作的设计难度会有所下降,甚至可以支持如InfoSphere中Streams Studio的图形化设计和图形化topology反馈和运行状况监控,应该也满足项目的需求。开发人员所需要做的就是“自己定制operator“(【可以用已有的类似SPL的语言进行简单的定制,也可以使用别的语言实现内核,并如同InfoSphere支持的C++编写原生Operator一样进行开发和包装】)或是使用我们设计的Toolkit里的标准Operator【即已经包装好的模型】进行模型构建、连接。

  而在总体的平台监控上我们亦可以借鉴SPS的工作方式,和其模块设计方式,监控方式等。

  发现这个水利工程其实很多应用需求和流数据的情景很相像,如需要历史数据分析时我们还可以引入Window的概念等。

  其实也不知道这样的想法的可行性如何,毕竟InfoSphere Streams是IBM的大牛们进过几年的开发才有的产品。

--------------------------------------------------------------------------------------------------------------

  请务必保留本文出处 http://www.cnblogs.com/lanyun0520/p/5254393.html

联系InfoSphere Streams和OpenMI时对水利模型联系的设计模式的一些考虑的更多相关文章

  1. servlet的生命周期与运行时的线程模型

    第 14 章 生命周期 注意 讲一下servlet的生命周期与运行时的线程模型,对了解servlet的运行原理有所帮助,这样才能避免一些有冲突的设计. 如果你不满足以下任一条件,请继续阅读,否则请跳过 ...

  2. iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签

    一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...

  3. vs2013在使用ef6时,创建模型向导过程中,四种模型方式缺少2种

    下载eftool,并安装 https://download.microsoft.com/download/2/C/F/2CF7AFAB-4068-4DAB-88C6-CEFD770FAECD/EFTo ...

  4. Spring MVC 返回视图时添加的模型数据------POJO

    POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称. 使用POJO名称是为了避免和 EJB混淆起来, 而且简 ...

  5. 运行SPL Streams debugger(sdb)的两种方法

    You can use the SPL Streams Debugger in InfoSphere® Streams Studio to help you debug your SPL applic ...

  6. One SQL to Rule Them All – an Efficient and Syntactically Idiomatic Approach to Management of Streams and Tables(中英双语)

    文章标题 One SQL to Rule Them All – an Efficient and Syntactically Idiomatic Approach to Management of S ...

  7. Streams Studio配置Build options

    Defining build options You can change the build options of the internal builder for building an SPL ...

  8. Java 9 揭秘(17. Reactive Streams)

    Tips 做一个终身学习的人. 在本章中,主要介绍以下内容: 什么是流(stream) 响应式流(Reactive Streams)的倡议是什么,以及规范和Java API 响应式流在JDK 中的AP ...

  9. 简介Kafka Streams

    本文从以下几个方面介绍Kafka Streams: 一. Kafka Streams 背景 二. Kafka Streams 架构 三. Kafka Streams 并行模型 四. Kafka Str ...

随机推荐

  1. MSMQ是什么?

    MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位 ...

  2. Android开发环境的搭建之(五)DDMS的测试

    启动DDMS(Dalvik Debug Monitor Service) 测试Voice通话功能 左图Device选择MyPhone[Emulator- 5554],右图选择Emulator Cont ...

  3. oracle操作语句

    Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名); create index index_userid on tbl_detail(userid);如何找 ...

  4. Fedora 开启 ssh

    Fedora 17 已经安装好openssh server了 不用再装 不过默认无开启 首先su root1.开启ssh服务# systemctl start sshd.service 2.随系统一起 ...

  5. php获取当前日期-7天

    // 将目前的时间戳值放入一数组内$strdate = '2014-02-03';$desDate = strtotime($strdate);//var_dump($desDate); $times ...

  6. codevs 1913 数字梯形问题 费用流

    题目链接 给你一个数字梯形, 最上面一层m个数字, 然后m+1,......m+n-1个. n是层数. 在每个位置, 可以向左下或右下走.然后让你从最顶端的m个数字开始, 走出m条路径, 使得路过的数 ...

  7. 给ecshop后台增加管理功能页面

    给ecshop后台增加管理功能页面 比如我们增加一个统计报表叫做 物流费用统计报表 放在后台“报表统计”栏目中 具体操作步骤: 第一步,我们要添加一个菜单到后台,然后设置语言项,最后设置权限,这样,后 ...

  8. 实现在ios文件读写

    文件都是用来读写数据的,可是哪里都会有潜规则,ios里面读写数据的潜规则你知不知道,你知道不知道!!! 你有没有觉得NSUserDefaults和NSBundle,plist这些玩意阴魂不散,有时候搞 ...

  9. Ognl中根元素与非根元素的关系

    Ognl中根元素与非根元素的关系 根元素:可以理解为全局变量 非根元素:局部变量 从两者获取其属性的方式看: Object obj = Ognl.parseExpression(“[1]”); [1] ...

  10. HNU 12850 Garage

    长为H的格子里面放n个长为h的格子 最多会有n+1个空隙 要使每一个空隙长度都小于h (H-h*n)/(n+1)<h n>(H/h-1)/2 #include<bits/stdc++ ...