← 返回文章列表

oa-backend-framework项目架构设计 - 起步

分类:计算机/架构/oa-backend-framework项目架构设计

我们的OA系统是泛微的Ecology 9。OA在走流程审批时,经常需要在到达或离开某个流程节点时,将流程中的数据保存到某个位置,或执行其他的业务操作。如果操作很复杂,就需要用代码来实现。OA提供了机制,让我们能写Java代码,部署到OA系统中,然后在流程的指定时机,调用我们的代码。

泛微给了我们这样一个开发框架:一个Java项目,依赖Maven库com.github.liuzhenghui:weaver-ecology-core:9.00.2102.17,这个库提供了Ecology 9的类结构,能编译,但不能本地运行。这个项目主要用来写流程动作和Web API。我们需要按规定在本地写好Java类,编译成class文件,上传到OA服务器中的指定目录,重启OA,然后执行它进行测试。如果要修改,则必须重复上述过程。

这个开发框架存在以下主要问题:

  1. 调试困难:不能本地运行,只能在服务器上运行,调试只能靠打印日志。
  2. 部署困难:只能逐个上传class文件,不能打包部署。多人、长期各自上传,使得class文件的版本难以控制。更新class文件后,要重启OA才能生效,重启时间很长。这种模式,使得我们不敢多写类,大量的代码挤在一个类中。
  3. 缺少封装:业务代码必须直面OA的底层机制,必须手动处理OA的元数据、权限等机制细节,缺少机制文档的情况下很容易出错。每个业务都要重复做这样的处理。
  4. 缺少事务控制:多个步骤中间出错时,会导致数据不一致。
  5. 缺少开发规范:只提供了与OA交互的基础机制,没有给出合理的程序结构,使得业务代码的组织相当混乱。

近期,我被调入公司新成立的信息部门,负责整个公司内部信息化的技术工作。同时,一个中等规模的独立业务系统需求被提到我们部门,与OA系统强相关。因此,我决定从这里入手,正式开始着手解决已经越来越明显的软件架构问题。

我将发起一个新的软件项目oa-backend-framework,从零开始对其进行架构设计,解决上述问题,积累架构经验,并用这个需求进行实战检验。

为什么不在上述开发框架上修改?已经尝试过了,但该框架与我的设计相差很大,修改势必带来很多冲突,导致两头都做不好。

OA系统本身就有成熟的架构和规范,为什么不遵循之?① 该架构是面向OA系统本身的问题域的,与我们的问题域并不相同;② 我们缺乏足够的文档信息和支持,对其架构和规范知之甚少;③ 基于已经了解到的信息,我们认为,即使遵循之,也无法完全解决上述问题,反而会带来新的麻烦。