UML软件工程组织

 

 


ClearQuest 的后台数据库分析
 
来自:人月神话 csdn
 

CQ相对于其它缺陷跟踪工具而言之所以强大就在于其提供的快速二次开发能力。从表单设计,到基于状态转换的流程机制,到数据项的分角色和用户组授权,到灵活的自定义查询和自定义报表。同时支持多数据库,整个一个设计良好的快速开发平台,虽然不是很好的体现了面向对象的一些特征,但绝对算得上一个优秀的架构,我所看到的CQ应用基本都是仅仅使用了CQ这个空框架,其它都是二次开发人员自己定义的变更对象和自定义查询了。所以要分析CQ第一步就是要搞清楚其数据库设计。

首先可以通过ClearQuest Maintenance Tool创建一个Schema Repository.这个就是后期CQ设计和正式使用要用到的数据库。创建好后会自动生成很多数据库表。从大的类型分基本分为数据对象相关,状态相关,权限相关,查询相关几大类表。

后续的表单设计完全以数据实体对象为驱动,表单表m_formdef一般会关联m_entitydef表,对于一个数据对象可以设计维护类表单和查询类表单。因此多个表单可以对应同一个数据实体对象。

m_entitydef表就是数据实体表,这你们的每一行数据都对应数据库中的一个真实的数据表。而m_fielddef是数据项信息,每个数据项都对应到表中的数据字段。通过这两个表提供的Schema信息基本就可以自动完成表的创建。m_fielddef支持的类型除了字符,日期和数字外重点还增加了MULTILINE_STRING和REFERENCE两种数据类型,第一种表示数据是一个关联的下拉列表选择项(这个数据存储在listdef和list_member表中),第二种代表该数据项是关联到另外一个数据实体的。对于m_fielddef表中的每一个数据项可以定义独立的权限控制脚本,同时可以定义相关的值改变触发的事件。相关的脚本都可以通过BASIC或PERL脚本来实现。后续系统会自动解析。

状态转换矩阵是系统的另外一个重点内容,主要实现了系统表单的流程处理和权限控制,这块CQ设计的简单易用。首先是m_statedef来定义一个数据实体对象可以有哪些状态,每个状态的名称和缺省触发的活动.另外一个重点就是状态转换矩阵,状态转换矩阵的重点就在当前的某一个状态下执行哪个活动可以转换到一个什么样的目标状态,所以这里面包括了源状态,执行活动,目标状态三个重要内容。所以这里的数据处理为:

  1. 定义一个数据对象状态:存储到m_statedef表
  2. 定义一个数据对象活动:存储到m_actiondef表
  3. 定义一个状态下可以执行哪些Action,存储到m_state_legal_action
  4. 配置状态转换矩阵:存储到m_actiondef表

有了这个数据后后续根据以上数据进行分析处理 

  1. 到了某个状态后我能够执行哪些Action(m_state_legal_action)
  2. 我执行Action后转到哪个状态(m_actiondef)
  3. 当前状态下每个字段的可用情况(m_field_status_def)
  4. 当前活动权限控制(m_actiondef_usergroups)

在我原来写的快速开发平台对象建模中提交到过对象和对象之间既可以是关联关系,也可以是依赖和引用关系。通过关系关系多个子对象可以形成一个完整的主对象,如订单对象和定单明细对象间应该是关联关系,共同构成完整的订单对象。这点在CQ中暂时没有发现体现的地方。另外状态转换机制虽然易用,但于标准的工作流功能相比仍然欠缺很多内容。

ClearQuest要分两篇文章来写,这篇基本分析清楚了对象建模,数据建模和流程建模的相关主要内容。下一篇重点分析表单建模和业务权限建模的内容。通过CQ的学习可以很好的扩展和完善自己对快速开发平台的的一些思路。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号