zoukankan      html  css  js  c++  java
  • 信息系统开发平台OpenExpressApp - 内置支持的模块类型

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

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

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

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

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

    列表模块 List

    描述

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

    界面

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

    代码片段

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

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

    列表模块 泊靠样式

    说明

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

    界面

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

    代码片段

        [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
    <stringstring> propertyMaps = new Dictionary<stringstring>();
                    propertyMaps.Add(
    "Name""Name");
                    propertyMaps.Add(
    "Code""Code");
                    propertyMaps.Add(
    "Unit""Unit");
                    propertyMaps.Add(
    "BqDbId""BqDbId");
                    pad.View.AttachBehavior(
    new SelectViewBehavior(view, propertyMaps));
                }

            }
        }

    单据模块 Bill

    描述

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

    界面

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

    代码片段

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

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

    查询模块 Query

    描述

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

    界面

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

    代码片段

        [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>
        {}
    说明

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

    弹出模块 Popup

    描述

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

    界面

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

    代码片段

        [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(800600)
                },
                    
    nullnew 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)
            {...
    }

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

  • 相关阅读:
    关于C_Sharp集中处理异常
    关于Java连接SQL Sever数据库
    MongoDB 的主键 _id 为什么不是自增数字
    svn 命令行基本操作
    如何删除 Git 仓库中的历史提交记录
    .git 文件太大时怎样处理
    Git 提交到多个远程仓库
    Git SSH keygen 生成与配置
    Git 远端回滚
    Git 合并或修改线上 commit
  • 原文地址:https://www.cnblogs.com/zhoujg/p/1601599.html
Copyright © 2011-2022 走看看