信息系统开发平台OpenExpressApp - 内置支持的模块类型

  信息系统组成层次可以按照下图所示层次进行划分:系统-子系统-主模块-辅助模块/对象。在OEA中的模块就是组合系统一个较为独立的功能块,例如入库单为主模块,选择产品为主模块的辅助模块。本篇主要讲解OEA对模块的内置支持。

2009111211235667.jpg

OEA中模块目前支持模块类型主要有以下几种:

ContractedBlock.gif     public enum ModuleType
    {
         List,     
// 列表类窗体,例如材料字典
        Bill,       // 单据类窗体 ,例如入库单
        Query,   // 查询类窗体 ,例如项目查询
        Popup,  // 弹出类二级窗体 ,例如选择产品
    }

系统对每类模块都实现了一个模板Templete,每个模块模板其实就是每类模块的一个具体实现单元,代码位置如下:

2009110216191850.jpg

下面我将单独对每个模块进行简单的介绍。

列表模块 List

描述

列表模块是处理字典类对象的管理模块,包含基本的添加、删除、刷新和保存等功能。

界面

这类模块相对来处理的业务比较简单,界面样式就是一个工具条和一个列表控件。

2009111213322110.jpg

代码片段

    [Serializable]
    [Table]
    [DefaultObject(Catalog 
= "基础字典"ModuleType=ModuleType.List), Label("单位转换系数")]
    
public class UnitFactor : GBusinessBase<UnitFactor>
    {dot.gif}
说明

保存是将本地修改的多条记录进行批量保存。

列表模块 泊靠样式

说明

泊靠列表样式列表是泊靠在主模块周围的一个列表模块,双击时可以辅助主模块添加数据

界面

在主模块下方显示,双击列表可以给附加View视图控件添加一条记录,点击【选择】时可以一次添加多条记录

2009111214203445.jpg

代码片段

    [Command( " SelectBQItem " , ToolbarType  =  ToolbarType.Child, TargetObjectType  =   typeof (PBSBQItem), Label  =   " 选择清单 " , ToolTip  =   " 选择清单 " )]
    
public   class  SelectBQItemCommand : WPFListViewCommand
    {
        public   override   void  Execute(ListObjectView view)
        {
            
if  ( ! view.PadDict.ContainsKey( typeof (BQItem)))
            {
                ListForm pad 
=  OpenApplication.CreateViewListPad(view,  typeof (BQItem))  as  ListForm;
                Dictionary
< string string >  propertyMaps  =   new  Dictionary < string string > ();
                propertyMaps.Add(
" Name " " Name " );
                propertyMaps.Add(
" Code " " Code " );
                propertyMaps.Add(
" Unit " " Unit " );
                propertyMaps.Add(
" BqDbId " " BqDbId " );
                pad.View.AttachBehavior(
new  SelectViewBehavior(view, propertyMaps));
            }

        }
    }

单据模块 Bill

描述

单据模块是管理软件中最常用模块之一,例如入库单等就是单据类中很典型的模块。

界面

界面样式一般为左边单据列表,点击列表后在右边显示详细信息。详细信息上部分为主表信息,下面为子表信息,子表信息又可以嵌套子表信息。

2009111213370417.jpg

代码片段

    [Serializable]
    [Table]
    [DefaultObject(Catalog 
= "模板管理"), Label("合同模板")]  // DefaultObject默认为Bill样式
    public class ContractSubjectType : GBusinessBase<ContractSubjectType>
    {dot.gif}
说明

  单据实行单条记录保存,首先从服务器获取列表,然后点击左边列表某一记录后获取当条记录的所有信息,在右边更改后点击保存只保存当条信息。当记录更改,并切换左边列表选择项时,系统自动执行保存修改的记录。

查询模块 Query

描述

查询模块也是管理软件中最常用模块之一,主要用来对系统单据模块中产生的数据进行查找分析。

界面

左边为查询面板,可以为查询面板或者导航面板,或者两者都有。如果有查询面板,则需要点击【查询】按钮触发获取数据,如果为导航面板,则点击导航控件时触发获取数据。一个查询模块可以查询一个或者多个内容。

2009111213383866.jpg2009111214040257.jpg

代码片段

    [Serializable]
    [DefaultObject(Catalog 
= "指标管理"ModuleType = ModuleType.Query), Label("技术经济指标")]
    [NavigateQueryType(
typeof(ProjectIndicatorNavigateCriteria), Header = "选择项目PBS")]
    [NotAllowEdit, NotAllowNew, NotAllowRemove]
    
public class ProjectIndicatorQueryObject: BaseQueryObject
    {
        
protected override void AddBusinessObjects()
        {
            AddBusinessObject(
typeof(ProjectPBSProperty));
            AddBusinessObject(
typeof(ContractProperty), ViewType.DetailView);
            AddBusinessObject(
typeof(ProjectCostIndicator));
            AddBusinessObject(
typeof(ProjectIndicatorEntity));
            AddBusinessObject(
typeof(ProjectIndicatorMeasure));
            AddBusinessObject(
typeof(ProjectIndicatorResource));
            AddBusinessObject(
typeof(ProjectIndicatorResourceIsCentral));
            AddBusinessObject(
typeof(ProjectIndicatorRatio));
            AddBusinessObject(
typeof(ProjectIndicatorOther));

        }
    }
   [Serializable]
    [BusinessObject, Label(
"工程属性")]
    [NotAllowEdit, NotAllowNew, NotAllowRemove]
    
public partial class ProjectPBSProperty : GBusinessBase<ProjectPBSProperty>
    {dot.gif}
说明

如果同时查询多个独立的内容时,要求每个内容的查询面板一样。查询后,每个内容单独页签显示,每个页签显示可以为列表样式和详细信息样式,默认为列表样式。

弹出模块 Popup

描述

弹出模块一般为辅助主模块完成功能,如选择类功能。

界面

界面分为上下两部分,上面为列表控件,下面为工具条,工具条一般有【确定】和【取消】按钮。

2009111213440125.jpg

代码片段

    [Command( " SelectPBSCommand " , ToolbarType  =  ToolbarType.Child, TargetObjectType  =   typeof (ProjectPBS), Label  =   " 选择PBS " , ToolTip  =   " 选择PBS " )]
    
public   class  SelectPBSCommand : WPFListViewCommand
    {
        public   override   void  Execute(ListObjectView view)
        {
            var form 
= OpenApplication.CreatePopupForm( typeof (PBS), (view.Parent.Data  as  GIX4.Library.Project).PBSTypeId);
            
bool ?  result  =  GApplication.ShowDialog(form,  new  DialogOptions()     // 弹出弹出窗体
            {
                AllowResize 
=   true ,
                DialogTitle 
=   " 选择PBS " ,
                DialogSize 
=   new  Size( 800 600 )
            },
                
null new   string [] { CommandNames.SelectAll }
            );

            
if  (result  ==   true )
            {...
}
        }
    }

说明

支持多选

创建模块OpenApplication

OpenApplication是支持用户创建模块的类,其中包含多个静态方法。

     public   class  OpenApplication
    {
        public   static   object  CreateModuleForm(BusinessObjectInfo boInfo)
        {
            Debug.Assert(boInfo.IsDefaultObject, 
" 只有默认对象才允许调用CreateModuleForm " );
            
// 根据类型通过模板生成UI
             object  f  =   null ;
            
switch  (boInfo.DefaultObjectAttribute.ModuleType)
            {
                
case  ModuleType.List:
                    f 
=   new  ListForm(boInfo.BOType);
                    
break ;
                
case  ModuleType.Query:
                    f 
=   new  QueryForm(boInfo.BOType);
                    
break ;
                
default :
                    f 
=   new  ListDetailForm(boInfo.BOType);
                    
break ;
            }
            
return  f;
        }

    // 根据类型通过模板生成UI
         public   static   object  CreateListForm(Type boType,  params  Object[] getListParam)
        {
            return new  ListForm(boType, getListParam) ;
        }

        // 根据类型通过模板生成UI
        public   static   object  CreatePopupForm(Type boType,  params  Object[] getListParam)
        {
            return new  PopupForm(boType, getListParam) ;
        }

        
public   static   object  CreateApplicationListPad(Type boType,  params  Object[] getListParam)
        {...
}

 

更多内容:productView-pdf_46x35.gif 开源信息系统开发平台之OpenExpressApp框架.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值