信息系统开发平台openexpressapp 1.0发布

来源:互联网 发布:c语言字符串拷贝 编辑:程序博客网 时间:2024/05/11 00:27

openexpressapp已在微软codeplex网站发布1.0版本,这个版本包括框架所有代码,以及一个简单示例代码,感兴趣的可以随时关注,平台将不断完善。

介绍

OpenExpressApp没有创新性的技术,而是将现有技术和产品中有价值的部分引入到一起,它要做的是整合别人已经实践的方法来提高我们自身的开发能力,以求快速、高质量的开发信息系统产品。不同于以往为特定开发角色提供独立的开发工具和框架,它基于业务模型驱动开发指导思想,为业务分析人员、软件设计和开发人员提供的一种集成的开发平台,提供报表、流程、元数据等基础引擎,具有业务建模、领域建模和应用建模等模型,并提供权限、报表等多个通用应用模块。为了支持软件开发,还提供基于敏捷思想的软件项目管理工具、快速原型工具和测试支持。

主要内容

  • OpenExpressApp框架。目前主要做此内容,已开始在项目中应用。现阶段实现主要是基于C/S(WPF)分布式,参考了ExpressAppFramework(XAF 应用框架),使用了CSLA作为分布式业务对象框架,Composite WPF作为UI框架,还使用了其他一些代码(如LiteORM、Flee等)。支持B/S、C/S、Mobile
  • OpenMetaEdit(参考MetaEdit+)
  • OpenReport(参考润乾报表
  • OpenWorkflow(使用微软的WF
  • OpenStudio(基于OpenExpressApp开发,参考Mendix、Novulo
  • OpenTool(基于OpenExpressApp开发)

现状

目前处于第一阶段,提供类似ExpressAppFramework的开发框架,实现C/S(WPF)基础框架,供软件开发人员使用,现有框架已在实际项目中应用。

 


借鉴ExpressApp的AutoUI和扩展的思想,这里的UI层也是通过模型自动生成。
以下为现在的代码组织。OpenExpressApp为框架代码,GIX4开头的为项目组应用框架时写的类库和扩展Command等代码。目前只支持WPF,还不支持B/S。


现状模型只是实现了通过类的属性来实现,还未实现模型编辑器。例如下面在类上定义属性可以自动在主界面生成导航项,双击后可以打开模块,模块界面也是自动生成。现在界面都只是根据模板生成,还不支持通过设计器来设计界面。

以下是一个通过在代码中WPFListViewCommand继承下来的一个命令,在命令上写上属性内容后,就可以在界面自动生成按钮,这样开发人员可以更多关注业务逻辑,而不用关注界面的变化了。


在公司也研究和做过一些框架,但是基本上每次都是重新开发,这对公司和个人来说都是很大的浪费,所以我深知一个平台的开发需要规划并不断的持续改进。而一个平台的开发由一个人来做是很难的,所以现在Open出来,希望对此平台有共同方向的朋友一起参与,多提意见,共同打造一个属于我们自己的开发平台,不求技术多么精湛,只求能够切实解决我们的问题。

示例

以下通过一个简单订单示例来演示如何使用OpenExpressApp框架来快速开发应用程序,示例代码见SVN目录【Example】。

准备工作

  1. 安装.Net35 SP1
  2. 安装CodeSmith5,以便通过模板自动生成类库框架
  3. 下载OpenExpressApp框架代码(发布1.0版本程序集中没有包括CodeSmith模板文件)

生成类库程序集

  1. 新建类库项目
    取名为“OrderLibrary”,引用【Lib】目录下程序集:Csla.dll、OpenExpressApp.MetaModel.dll
  2. 添加订单根对象(可以暂时理解为订单主表):Order
    双击【Lib/CodeGen】目录下的“EditableRoot.cst”,弹出生成代码界面,在业务对象类名属性【BOClass】中输入:Order,在命名空间【Namespace】属性中输入:OrderLibrary,点击【Generate】按钮,生成代码后点击上面右边工具栏的保存为"Order.cs"。
  3. 生成订单明细项子对象OrderItem
    按同样步骤点击“EditableChild.cst”,生成OrderItem子对象
  4. 按照CSLA类库模板更改订单和订单明细类,更改后的代码见示例代码。如果你自己有不同的业务,则自己对业务对象进行相应设计实现,增加自己的属性、方法和规则。后期会详细介绍如何写这些类库,以及类库上面的属性标识分别代表什么含义。(注:第一阶段是需要我们开发人员自己去写这些类库的,后期这些重复工作会由建模工具来处理。)
  5. 编译生成程序集”OrderLibrary.dll
    (注:生成类库,也可通过【OpenExpressApp/CodeGen/】下的CodeSmithCodeGen.csproj项目来生成)

生成数据库

  1. 执行【Example】下的DBSQL.txt文件,生成数据库
    (注:生成数据库也可以通过工具DBCreator.exe来生成)

修改配置文件

  1. 将【Lib】下的”OpenExpressApp.Host.WPF.exe.config"中的数据库连接字符串为自己实际的数据库环境下的参数
      <connectionStrings>
        
    <!--更改为自己的数据库连接方式 -->
        
    <add name="BusinessDBName" connectionString="Data Source=./SQLExpress;Initial Catalog=OpenExpressApp;User ID=sa;Password=as"         
             providerName
    ="System.Data.SqlClient" />
      
    </connectionStrings>

部署

  1. 把”OrderLibrary.dll“拷贝到【Lib/Library】目录下:框架会自动去这个目录下查找系统的业务对象并生成界面

(注:【Lib】目录下的配置文件默认为单机版本,这里示例尽量简单一些,所以这里只讲解如何配置为单机版本,以后会专门讲解如何进行单机、局域网和广域网的部署。)

运行

运行“OpenExpressApp.Host.WPF.exe”即可打开主界面。在左边模板导航列表会自动出现我们建立的订单模块,双击后会在右边打开,订单模块已经具备了业务对象的基本操作。现在界面非常一般,希望以后有人能帮忙美化一下:)

(注:如果需要扩充功能按钮的话,需要再自己扩充Command。Command是OpenExpressApp的主要功能之一,以后会专门讲解)