区分系统与业务的工程划分方法

区分系统与业务的工程划分方法

如何划分一个系统的源程序工程?这里提出一个基于系统和业务的工程划分模型,这个模型的特点是要区分出哪些是系统工程、哪些是业务工程

本文只着重于客户端页面层,弄清楚页面层后服务端的工程结构应不难想象。为便于书写,我们设计了一个场景:呼叫中心系统里跑档案和呼叫两个业务。

界面层

我们来看看界面层内部有哪些源程序工程,以及它们之间的依赖关系,如下:

上面的cc-ui-corecc-ui是两个系统工程file-ui是关于档案的业务工程ic-ui是关于呼叫的业务工程。这些工程之间的依赖关系如图中箭头方向所示。

该工程模型具有如下特点:

  • 一个系统有系统和业务两类工程。
  • 每个系统分ui-coreui两个系统工程,其中,ui-core工程被业务工程所依赖,而ui工程依赖其它各业务工程。
  • 业务工程之间不发生依赖关系。一个业务页面不依赖于另一个业务的页面,但同类业务的页面之间可(单向)依赖。
  • 各工程之间不存在双向或循环依赖。

下面我们看看该模型解决了哪个问题。

系统会话

用户登录后系统就确定了当前用户的工作环境信息,我们称之为系统会话。例如用户登录进某呼叫中心后,系统会话就保存了该用户的呼叫中心ID。当用户为客户办理业务时,系统会话就充当了办理业务的工作环境。仍以呼叫中心为例,业务记录里的呼叫中心ID字段应无必要也不允许在业务界面里输入。

因此,我们把系统会话放在cc-ui-core工程里,并让各业务工程通过依赖能访问到系统会话对象。

页面集成

至少有两种集成的情景。

  • 菜单及工具条。例如,点击菜单后打开某个业务页面。这要求菜单依赖业务页面。
  • 跨业务页面。例如,呼叫中心系统里有一个显示当天建档数和办理呼叫人次的页面。此时我们应独立开发这个页面。

我们把这些集成页面放在cc-ui工程里开发,该工程既能通过依赖cc-ui-core获取到系统会话,又能通过依赖各业务工程加载对应的页面。

数据集成

上面说到,两个业务工程之间不依赖。但页面需求灵活多变,例如,我们需要在呼叫页面里打开客户档案,如何打开呢?

打开另一个页面就需要知道该新页面的一些信息,但由于我们不允许两个业务工程存在依赖关系,因此遇此需求时我们可通过ui-core进行中转。例如,假设打开一个页面需要获取到其class才行,并且我们又不希望通过反射来获取,此时我们可通过接口和依赖注入来完成,如下:

  • cc-ui-core工程里建一个接口:
public interface Provider {
    Class<?> filePageClass();
}
  • cc-ui工程里实现该接口。由于cc-ui依赖所有的业务工程,因此可轻易获取到所需信息。
  • ic-ui工程由于依赖ui-core工程,因此可通过依赖注入得到该接口,并进而调用该接口的方法来获取到所需信息。

总结

我们提出的工程模型可用这样一句话来概括,即业务在系统里跑。系统一方面负责加载业务页面,另一方面又通过传递系统会话辅助业务页面的开发。

时间: 2024-07-31 02:12:10

区分系统与业务的工程划分方法的相关文章

如何解决KEIL 5 编译KEIL4的带有RTX系统的工程解决方法

1.笔者个人对KEIL5与KEIL4的比较 相较于KEIL 5 的"华丽",笔者还是喜欢KEIL4的"内敛",主要也还是习惯了,懒得换了.因为工作的  原        因,最 新的芯片上KEIL4没有支持,有人可能提出可以去下载芯片支持包加载进去,我相信这个肯定可以,估计  已经有很多网友这么做了,但是我想,新的实物总要求接触,固步自封不是一种好的习惯. 下面简单介绍两者的差异: KEIL4你不用担心,芯片的问题,因为大部分的芯片,但你装载软件的时候,就好自动的加

速达ERP系统应用技巧---(002)结外币业务的账务处理方法

捷力达专家特总结外币业务的账务处理方法,具体操作流程如下:1.设置币种资料,并输入期初汇率2.在会计科目中,选择需进行外币核算的会计科目3.在记账凭证中,点击"外币"按钮,按实际业务录入凭证 4.月未通过"期未调汇"模块,依次输入期未汇率及汇兑损益科目 如果您想进一步了解,请致电0532-83845676/83832586,捷力达专家将竭诚为您服务! 微信平台:qdjielida1,同步传送,敬请关注! 企业名片                 微信公众号    

atitit.短信&#160;验证码&#160;&#160;破解&#160;&#160;v3&#160;p34&#160;&#160;识别&#160;绕过&#160;系统方案规划----业务相关方案&#160;手机验证码&#160;&#160;.doc

atitit.短信 验证码  破解  v3 p34  识别 绕过 系统方案规划----业务相关方案 手机验证码  .doc 1. 手机短信验证码 vs 图片验证码 安全性(破解成本)确实要高一些1 1.1. 破解基本原则有两种,一种是绕过验证码.一种是拦截1 2. 手机 短信 验证码的 破解 拦截 方式分类2 2.1. 按照源头破解拦截分为源头拦截,中间拦截,,终端拦截...2 2.2. 按照是否软硬件可分类为 纯软件方案与软硬件结合方案2 3. 具体的方法如下2 3.1. 后台服务器漏洞绕过法

Android中区分系统程序和安装程序

在google上输入以上的关键字+ android,可以搜到的代码 List<PackageInfo> packs = getPackageManager().getInstalledPackages(0); 虽然,有些代码号称可以过滤掉系统自身的应用程序,但是只要细看代码就会发现,好像里面的那个布尔变量没有起到什么过滤的作用. 方法一:通过获取的安装包(包括安装的与系统自身的应用程序),对其android.content.pm.PackageInfo的packageName 进行过滤, 但是

如何使用android系统隐藏hide的类和方法

如何使用android系统隐藏hide的类和方法 欢迎访问 wxtlife.com 在应用开发过程中,可能会需要使用到系统的方法,比如:SystemProperties 以及系统隐藏hide的方法和类,比如:Android 4.2中的 Surface.screenshot(x,y)方法是隐藏的, Android 4.3后面上面的那个方法变成了SurfaceControl.screenshot(x,y) 并且SurfaceControl这个类也变成了隐藏的了.那么要直接在eclipse或者andr

电商 秒杀系统 设计思路和实现方法

电商 秒杀系统 设计思路和实现方法 2017年05月26日 00:06:35 阅读数:3662 1 秒杀业务分析 正常电子商务流程 (1)查询商品:(2)创建订单:(3)扣减库存:(4)更新订单:(5)付款:(6)卖家发货 秒杀业务的特性 (1)低廉价格:(2)大幅推广:(3)瞬时售空:(4)一般是定时上架:(5)时间短.瞬时并发量高: 2 秒杀技术挑战 假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有: 对现有网站业务造

NTP同步时钟系统的实现及局域网授时方法

NTP同步时钟系统的实现及局域网授时方法分析如下:             实现NTP同步时钟系统需要局域网成员:NTP时钟服务器,NTP同步主时钟,NTP同步从时钟. NTP时钟系统实现的方法说明,让我们来举个例子吧.如某机场是某省的重要航空交通枢纽,是一个现代化的大型机场.机场内有电子钟94个,同时建设有离港系统.航显系统.广播系统.指挥调度系统.安检信息系统.楼宇自控系统.安防监控系统.停车场管理系统.呼叫中心系统等多个信息系统,这些系统通过接口互相连接协同工作,时间的一致性非常重要.通过

Windows系统下Python与NumPy安装方法

Windows系统下Python与NumPy安装方法 Windows下Python的某些第三方包安装步骤实在是太麻烦了(这里主要以NumPy为例,目前只有遇到安装它的时候出现了很多问题),晚上花了好几个小时才把NumPy科学计算包安装好,在这里描述下安装过程,避免大家走没有必要的弯路. 1,安装Python 首先,运行下载的MSI安装包,选择安装组件时,确保勾上了所有的组件. 特别要注意选上pip和Add python.exe to Path,然后多次点击Next即可完成安装. Python解释

Cocos2d-X 3.1.1创建工程的方法

由于cocos2d-x的更新,最新版本的创建工程方法又发生了变化,以下是cocos2d-x3.1.1在命令行下创建工程的方法. 首先下载 cocos2d-x3.1.1 ,python 2.7.(x)(最好是2.7的版本). 将 pyton安装目录 和 \cocos2d-x-3.1.1\tools\cocos2d-console\bin   配置到环境变量,不会的同学可以自己去百度怎么配置环境变量. 配置完成后,在命令输入cmd 进入 \cocos2d-x-3.1.1 目录下 然后输入: coco