oracle10g:Oracle + PHP:从原型到产品的最短距离

="t18">
  个有关 PHP/Oracle 开发模型如何在 Myers Internet 缩短应用生命周期案例研究
  
  对于主要由应收款业务模型驱动公司而言其核心业务功能的是输入、跟踪和记录订单在这方面比较出色公司可以伸缩它们机构并提高它们利润而不会碰到基础架构限制当订单处理很麻烦、轻易出错或不致时公司将直接成本和降低生产效率而蒙受经济上损失
  
  在我公司 Myers Internet核心业务事项围绕着建立客户基础为 Myers 提供持续服务并帮助它在客户问题出现时解决问题公司正使用许多区别系统来处理订单输入和实施周期各个方面这些系统既不是彼此集成也不具备确保每份订单都得到正确记帐机制
  
  Myers 订单跟踪系统 (MOTS)
  就像其它许多机构Myers 从个小型公司成长为个中型公司同时在它整个成长期间始终保留了相同过程和系统大多数这些过程在建立时所有事务处理都通过电子邮件、纸质记录和实地拜访来人工地完成5 或 6 年前Myers 个工程师利用 Allaire Cold Fusion 和个 Microsoft SQL Server 数据库组装了个系统来跟踪订单实施这个系统称为 MOTS (Myers 订单跟踪系统)它答应销售和帐目治理部门输入订单然后由支持、工程、设计、信息系统和会计部门实施这些订单虽然这个系统是向前迈进重要但它仍然留有许多人工步骤并且没有和任何其它业务系统集成在
  
  大概在同时间还创建了个系统在这个系统中客户和销售代表可以在线订购 Myers 网站WebSite产品这个系统可以创建新 Web 站点并计算提供 Web 站点安装和重复性费用总和然后它发送电子邮件给各个部门各个部门可以将订单输入到 MOTS 中并在帐目治理系统中创建记帐信息
  
  体系结构障碍
  这种类型体系结构饱受几种系统问题的苦在 Myers较明显问题的包括启动订单跟踪所需人工数据输入以及作为这种人工过程结果而产生个问题是公司中订单输入、订单跟踪和记帐系统的间脱节、订单丢失、信息遗漏和其导致
  
  另个仅偶而出现问题是 MOTS 系统本身有内在缺陷由于编写 MOTS 方式可以输入没有部门分配信息或者丢失了部门分配信息订单当这种情况发生时订单最终将在系统中丢失当订单丢失时准确、及时记帐就更难实现了
  
  随着业务成长体系结构中缺陷变得越来越明显并且随着客户和订单数量增加丢失和输入订单出现频率越来越高从而给公司收入带来了难于估量影响此外人工输入数据数量导致了延迟和处理效率低下
  
  由于在实施机构内对收入影响加大和效率降低很明显必须要有个替换系统来将切联系起来并提高效率和降低旧系统图示如下
  
 Oracle + PHP:从原型到产品<img src='/icons/54561de.gif' />最短距离(图<img src='/icons/54561yi.gif' />)

  
图 1:旧系统体系结构

  该图显示了需要人工数据输入所有区域由于这些系统都不是集成所以数据丢失或失真可能性非常大全局需求马上变得明显起来
  
  订单系统需要直接和实施跟踪系统联系起来
  
  该系统需要安全保护来防止订单在未经处理的前脱离系统
  
  需要保持精确性以确保准确记帐和正确订单实施
  
  系统需要使内部成本最小化所以要达到那个目需要快速地创建系统但系统必须拥有完整功能
  
  虽然个好订单输入和跟踪系统可以帮助降低成本但它本身并不创造收入
  
  深入结构
  在开始模式设计的前需要解决些基本体系结构问题个底层技术需求是系统必须可配置且无需额外编码本质上这意味着需要把工作流嵌入到数据库中而不是用解释/处理代码来进行硬编码第 2数据库需要包含足够信息以便能够表现订单输入界面主要(和可更改)方面以及实施处理
  
  在努力解决上述问题过程中该系统逐渐适合于两个部分 — 订单输入和订单跟踪并在两者的间提供了明确定义联系订单输入系统需要知道如何用准确产品代码、折扣和定价条款来表示订单订单实施系统需要知道如何跟踪各种类型任务、相关作业和各个部门以处理和记录每份订单最后需要定期和可猜测地把订单转化成实施作业
下图显示了目前存在新系统结构
  
 Oracle + PHP:从原型到产品<img src='/icons/54561de.gif' />最短距离(图 2)

  
图 2:新系统体系结构

  该图显示了通向新订单系统所有信息路径订单系统位于后端门户治理站点所有数据输入都仅次性完成并且只需要每个小组在处理各个阶段验证数据通过引入从订单系统到帐目治理系统自动数据传输至关重要数据传输个主要领域也变为自动化
  
  依靠 PHP
  在纯技术层面上早期决定使用 PHP 作为主要开发语言和 Oracle 作为系统数据信息库这有几个主要原因首先Myers 现有后端门户几乎完全是用 PHP 根据个现有 Oracle 数据库编写这消除了个产生不兼容性潜在来源这还意味着要创建这个新系统Myers 可以利用自身能力这些能力创建了现有后端门户
  
  第 2实验测试显示和其它开发语言相比PHP 提供了个比较高性能水平 PHP 是作为个动态加载资料库驻留在 Apache 服务器内部所以每次和系统连接都无需额外启动时间此外PHP 优化改善(通过 Zend 项目)意味着在代码内部执行般操作不会明显变慢最后为 PHP 编写 OCI 接口模块是用 C 代码编译和优化这使得访问 Oracle 数据库非常高效
  
  第 3我们了解到 PHP 代码将其自身嵌入到了 Html 环境中所以对于设计人员和编程人员而言创建协作用户接口功能代码变得更加自然虽然最后这个特性其它服务器端脚本语言也具备但 Myers 发现 PHP 更不可能带来开发人员和设计人员的间冲突此外PHP 语法和提供代码库意味着它可以做它需要做所有事情
  
  最后将所有代码嵌入到 HTML 代码中个好处是仅需要对标准文本文件进行修改控制就可以控制源代码我们用 CVS 作为它标准修改控制系统 PHP 代码不定要用某种方式进行编译所以创建系统次“编译”仅涉及到从信息库中检索文本源代码文件然后把它们放到 web 服务器上这意味着我们可以使用 CVS 中控制机制为它测试和生产环境发布增量 bug 补丁而无需创建复杂编译系统
  
  设计模式来支持可重新配置性
  下面基本模式示意图显示了订单系统是如何构建两种主要模式都分为原型表和事务表无论何时当业务情况发生变化时原型表都答应重新配置系统而无需重新编码事务表包含实际客户订单订单详情和作业详情
  
 Oracle + PHP:从原型到产品<img src='/icons/54561de.gif' />最短距离(图 3)

  
图 3:基本模式示意图

  
 Oracle + PHP:从原型到产品<img src='/icons/54561de.gif' />最短距离(图 4)

  
图 4:基本模式示意图

  这些模式示意图看起来很复杂当然它们确很复杂不过假如把它们分开使得只出现原型表(以 _def 结束表)那么该体系结构基本结构就变得很清楚了订单由行组组成这些行组包括具体信息、订单行或两者订单行可以随意地创建作业作业由个任务序列组成并且包含几条具体信息必需要为各种任务输入这些具体信息任务出现在区别队列中这些队列可以由区别部门特定用户进行访问
  
  为了检验系统策略是分阶段将订单系统原型化系统要检验部分是它单独从订单原型表中创建份清楚订单能力旦完成了最初模式定义订单生成器就是原形化系统个可视部分
  
  为构建和配置这个系统而组成小组除含受这个系统影响最大各个部门经理的外还包括 3个开发人员开发人员分工分别为:构建配置功能、显示功能和事务处理功能在整个最初构建周期内部门经理提供了有关界面(这些界面使用户能够输入和处理数据)类型有价值反馈
  
  利用 PHP 绘制用户界面
  要原型化订单是基本 Web 站点订单在 webwiz.myersernet.com/ 上提供得到订单是由个开发人员用 PHP 在 3天时间内创建假如订单原型定义 — 依靠只在数据库和浏览器的间层 PHP 代码就能够完全定义订单输入外观和行为那么在数据库设计中需要定程度折衷为此诸如订单行组的类结构必须支持两个用途:(1) 在输入表单上提供可视化区分以使类似产品组可以绘制在起 (2) 从功能上对类似商品分组比如说打了定折扣商品个选项列表从中可以作出唯选择
  
   PHP 是开发语言所以原型组建相当快速从而可以快速地完成模式所需修改并且为表单生成器重新编码(后)此外模式是考虑了绘制用户界面而设计所以当在原型构建过程中出现新可视化需求时可以轻易地进行模式修改和改编
生成表单外观和下图相似:
  
 Oracle + PHP:从原型到产品<img src='/icons/54561de.gif' />最短距离(图 5)

  
图 5:订单生成

  创建个功能完全系统
  在提供订单的后需要使它变得功能完全首先系统需要保存在订单中输入用于事务处理订单数据第 2填写订单人需要能够根据正在进行中订单数据来填写
Tags:  oracledecode oracle存储过程 oracle数据库 oracle10g

延伸阅读

最新评论

发表评论