信息系统架构设计-以服务为中心的企业整合实践
生命周期
- 业务分析
- 服务建模
- 架构设计
- 系统开发
案例背景
某航空公司的信息系统已有好几十年的历史。该航空公司的主要业务系统构建于20世纪七八十年代,以IBM的主机系统为主。
近年来,该公司已经在几个主要的核心系统之间构建了用于信息集成的信息Hub(Information Hub),其他应用间也有不少点到点的集成。尽管这些企业集成技术在一定程度上增进了系统间的信息共享,但是面对如此异构的系统,技术人员依然觉得企业集成困难重重:
- 因为大部分核心应用构建在主机之上,所以Information Hub是基于主机技术开发,很难被开放系统使用。
- Information Hub对Event支持不强,被集成的系统间的事件以点到点流转为主,被集成系统间耦合性强。
- 牵扯到多个系统间的业务协作以硬编码为主,将业务活动自动化的成本高,周期长,被开发的业务活动模块重用性差。
为了解决这些企业集成中的问题,该公司决定以Ramp Control系统为例探索一条以服务为中心的企业集成道路。
本文将以Ramp Control系统中的Ramp Coordination流程为例,说明如何用以服务为中心的企业集成技术一步步解决该公司IT技术人员面临的企业集成问题。
业务分析
在航空业中,Ramp Coordination是指飞机从降落到起飞过程中所需要进行的各种业务活动的协调过程。通常,每个航班都有一个人负责Ramp Coordination,这人通常称为Ramp Coordinator。
由Ramp Coordinator协调的业务活动有:
- 检查机位环境是否安全
- 卸货
- 装货
- 补充燃料是否方便和安全
实际上,Ramp Coordination的流程因航班类型的不同,机型的不同有很大的差异。
上述流程主要针对降落后不久就起飞的航班,这种类型的航班称为short turn around航班。
还有其他类型的两种航班:
- Arrival Only航班指降落后需要隔夜才起飞的。
- Departure Only航班是指每天一早第一班飞机。
==这些航班的流程,大部分业务活动是相似的。==这三种航班根据长途/短途,国内/国外等因素还可以进一步细分。每种细分的航班类型的Ramp Coordination流程都是略有不同。
很明显,如此多的流程之间共享着一个业务活动的集合,如此多种类型的流程都是这些业务活动的不同组装方式。以服务为中心的企业集成中流程服务就是通过将这些流程间共享的业务活动抽象为可重用的服务,并通过流程服务提供的流程编排的能力将它们组成各种大同小异的流程类型,来降低流程集成成本,加快流程集成开发效率的。
以服务为中心的企业集成,通过服务建模过程发现这些可重用的服务,并通过流程模型将这些服务组装在一起。
服务建模
使用两种方法:
- 组件业务建模(Component Business Model)
- 面向服务的建模和架构(Service-Oriented Model and Architecture)
建立以下模型:
- 组件模型
- 服务模型
- 流程模型
服务模型是服务建模的主要结果。Ramp Coordination相关的服务模型和Ramp Coordination流程相关的有两个业务组件:
- Ramp Control负责Ramp Control相关各种业务活动的组件
- Flight Management负责航班相关信息的管理,包括航班日程,乘客信息等
以上两个业务组件分别输出如下服务:
- Retrieve Flight BO:由Flight Management输出,主要用于提取和航班相关的数据信息
- Ramp Coordination:由Ramp Control输出,主要用于Ramp Coordination流程的编排
- Check Spot:由Ramp Control输出,用于检测机位安全信息
- Check Unloading:由Ramp Control输出,用于检查卸货状况
- Check Loading:由Ramp Control输出,用于检查装货状况
- Check Push Back:由Ramp Control输出,用于检查关门动作
服务建模确定了系统相关的服务输出后,还需要确定服务在当前环境下的实现方式。
- Retrieve Flight BO被实现为信息服务
- Ramp Coordination被实现为流程服务,通过BPEL4WS(Business Process Execution Language for Web Services)方式实现。
- 其他4个服务都是Staff Service(人工服务)
需要注意的是,因为环境的不同和随着系统的演化,我们可能会改变服务的实现方式,如Check Push Back现在通过Staff Service即人工服务实现。将来随着自动化程度的增强,Check Push Back完全可能通过自动化的系统实现。到那时,只需重新实现这个服务,而无需改变整个流程。这是服务可替换性的一个典型实例。
IT环境分析
在构建Ramp Control系统之前,该航空公司已经有大量的信息系统。作为架构设计的重要步骤对现有IT环境调研,描绘了和Ramp Control相关的IT系统的状况,包括周围应用和应用提供的接口,这些应用和Ramp Control交互的类型和数据格式。简化的IT环境视图,描绘了Ramp Coordination流程和周围系统交互的状况。目前Ramp Coordination流程需要4中类型的外围应用交互:
- 从乘务人员管理系统提取航班乘务员的信息
- 从订票系统中提取乘客信息
- 从机务人员管理系统中提取机务人员信息
- 接收来自航班调度系统的航班到达事件
通过主机应用中的信息集中为粗粒度的业务对象,并通过信息服务输出,为该公司的核心系统提供了更加通用的连接能力,同时为IT系统的平滑演进提供了必要的条件。
架构设计
根据需求和设计阶段的业务模型和现有IT环境调研结果Ramp Coordination的架构设计如下所示:
本案例中的主要结构元素以及它们之间的工作关系如下:
- 信息服务。Federation Service是Ramp Coordination流程中需要从已有系统重提取3类信息(乘务人员+机务人员+订票信息),在Service建模阶段这3类信息被聚合为Flight BO(Business Object)。Retrieve Flight BO被实现为一个EJB,外部访问通过RMI/IIOP绑定访问这个服务。在Retrieve Flight BO内部,Flight BO以SDO来表示
- 企业服务总线中的事件服务。Event Service是在检查机务环境安全(Check Spot)前,Ramp Coordiator需要被通知航班已经到达。这个业务事件由航班调度系统激发,Fight Arrival是典型事件发现服务(Event Detect Service),它通过MQ将事件传递给Message Broker,通过JMS的Pub/Sub,这个事件被分发给Check Spot。这里的Event Service是ESB的重要组成部分。通过ESB上通用事件服务,现有Information Hub的缺陷得到了克服。应用程序间的事件集成不再需要点到点的方式,而是通过ESB的事件服务完成订阅发布,应用程序间的耦合性得到了极大的缓解。
- 流程服务。
- 企业服务总线中的传输服务。RCMS是即将新建的系统,用于提供Ramp Control的功能。
相关文章:

信息系统架构设计-以服务为中心的企业整合实践
生命周期 业务分析服务建模架构设计系统开发 案例背景 某航空公司的信息系统已有好几十年的历史。该航空公司的主要业务系统构建于20世纪七八十年代,以IBM的主机系统为主。 近年来,该公司已经在几个主要的核心系统之间构建了用于信息集成的信息Hub(I…...

mysql知识点梳理
mysql知识点梳理 一、InnoDB引擎中的索引策略,了解过吗?二、一条 sql 执行过长的时间,你如何优化,从哪些方面入手?三、索引有哪几种类型?四、SQL 约束有哪几种呢?五、drop、delete、truncate的区…...
版本排序,(如果 版本 是 1,1a,1.1a, 2, 2c , 1c , 1.2a, 3 , 5b , 5)进行排序
如果 版本 是 1,1a,1.1a, 2, 2c , 1c , 1.2a, 3 , 5b , 5 对上面的进行排序 利用 VersionComparator 导入依赖 <dependency><groupId>cn.hutool</groupId…...

Google视觉机器人超级汇总:从RT、RT-2到AutoRT、SARA-RT、RT-Trajectory
前言 随着对视觉语言机器人研究的深入,发现Google的工作很值得深挖,比如RT-2 想到很多工作都是站在Google的肩上做产品和应用,Google真是科技进步的核心推动力,做了大量大模型的基础设施,服 故有了本文…...

python笔记(9)Dictionary(字典)
目录 创建字典 取值 修改字典 删除 内置函数和方法 创建字典 字典键值和value用:隔开,键值是不可变的,而且必须是唯一的,值可以变,可以是任意类型 dict {key1 : value1, key2 : value2 } 1)不允许同…...
蓝桥杯嵌入式总结
用到外部时钟:UART,ADC,RTC 用到中断:UART,TIM LED_KEY: 将高低电平写入对应引脚 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET); 读取对应引脚的电平状态 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) UART: 发送: int fputc(int …...

渗透测试:数据库UDF提权(linux)
目录 开头: 1.UDF提权简介: 1.1共享库文件(UDF文件)指定目录: 版本特征: 操作系统版本: 2.靶场UDF提权复现 提权前提 1.要有一个高权限的MySQL的账号 编辑 2.MySQL的权限配置secure_file_priv为空 3.必须有存放UDF文件的…...

java算法day45 | 动态规划part07 ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数
70. 爬楼梯 (进阶) 题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 输入描述:输入…...

HuggingFace踩坑记录-连不上,根本连不上
学习 transformers 的第一步,往往是几句简单的代码 from transformers import pipelineclassifier pipeline("sentiment-analysis") classifier("We are very happy to show you the 🤗 Transformers library.") ""&quo…...
面试题:Spring Boot Starter的功能与使用场景
Spring Boot Starter 是 Spring Boot 框架为了简化项目的初始化和配置工作而设计的一种模块化依赖管理方式。它主要具有以下几个关键功能和使用场景: 功能: 1. 依赖管理每个 Starter 都是一组相关的依赖项集合,这些依赖项都是为了实现特定功能…...

上位机图像处理和嵌入式模块部署(qmacvisual之n点标定)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 工业场景中,很多时候图像是用来做测量的。虽然我们很希望载台是平的,摄像头是正对着拍摄物体的,但是运行时间长…...

Francek Chen 的128天创作纪念日
目录 Francek Chen 的128天创作纪念日机缘收获日常成就憧憬 Francek Chen 的128天创作纪念日 Francek Chen 的个人主页 机缘 不知不觉的加入CSDN已有两年时间了,最初我第一次接触CSDN技术社区是在2022年4月的时候,通过学长给我们推荐了几个IT社区平台&a…...
PyTorch之Torch Script的简单使用
一、参考资料 TorchScript 简介 Torch Script Loading a TorchScript Model in C TorchScript 解读(一):初识 TorchScript libtorch教程(一)开发环境搭建:VSlibtorch和Qtlibtorch 二、Torch Script模型格…...

vscode 连接远程服务器 服务器无法上网 离线配置 .vscode-server
离线配置 vscode 连接远程服务器 .vscode-server 1. .vscode-server下载 使用vscode连接远程服务器时会自动下载配置.vscode-server文件夹,如果远程服务器无法联网,则需要手动下载 1)网址:https://update.code.visualstudio.com…...

arm开发板移植工具mkfs.ext4
文章目录 一、前言二、手动安装e2fsprogs1、下载源码包2、解压源码3、配置4、编译5、安装 三、移植四、验证五、总结 一、前言 在buildroot菜单中,可以通过勾选e2fsprogs工具来安装mkfs.ext4工具: Target packages -> Filesystem and flash utilit…...

某盾滑块拼图验证码增强版
介绍 提示:文章仅供交流学习,严禁用于非法用途,如有不当可联系本人删除 最近某盾新推出了,滑块拼图验证码,如下图所示,这篇文章介绍怎么识别滑块距离相关。 参数attrs 通过GET请求获取的参数attrs, 决…...
这个世界万物存在只有一种关系:博弈
$上证指数(SH000001)$ 我能给各位最大的帮助可能就是第一个从红警游戏引入了情绪周期视角的概念,而这个概念可以帮助很多人理解市场成为一种可能性,如果不理解可以重新回归游戏进行反复体验,你体验的足够多,思考的足够多ÿ…...
c#让不同的工厂生产不同的“鸭肉”
任务目标 实现对周黑鸭工厂的产品生产统一管理,主要产品包括鸭脖和鸭翅。武汉工厂能生生产鸭脖和鸭翅,南京工厂只能生产鸭翅,长沙工厂只能生产鸭脖。 分析任务 我们需要有武汉工厂、南京工厂、长沙工厂的类,类中需要实现生产鸭…...

大数据分析与内存计算——Spark安装以及Hadoop操作——注意事项
一、Spark安装 1.相关链接 Spark安装和编程实践(Spark3.4.0)_厦大数据库实验室博客 (xmu.edu.cn) 2.安装Spark(Local模式) 按照文章中的步骤安装即可 遇到问题:xshell以及xftp不能使用 解决办法: 在…...

论文阅读RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection
文章目录 RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection问题笛卡尔坐标结构图Meta-Kernel Convolution RangeDet: In Defense of Range View for LiDAR-based 3D Object Detection 论文:https://arxiv.org/pdf/2103.10039.pdf 代码&…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...