通用实现模型(精选11篇)
通用实现模型 篇1
我们开发了一套电费管理信息系统,这个系统要将辖区内近十万只不同级别的电表及用电单位和用电个人的基本信息统一管理,并按照用户的类型进行定期或者不定期地抄表、收缴电费等。此系统中包括抄表信息统计、电费欠费信息统计、用户缴费信息统计、用电量分类汇总、收缴电费分类汇总等各种报表45个,并在日后的实际工作中有可能增加。在此系统的开发过程中,我们使用Delphi 2005作为开发工具,使用FastReport报表组件开发报表模块,并按照用户的要求,采用SQL Server 2000作为后台数据库系统。我们在此系统中采用了这个通用报表模块模型。
1 报表设计及报表数据填充
由于本系统中各个报表采用统一的处理流程,每个报表在要输出的数据列的数量及内容都有差别,需要采用交叉报表来实现。报表的设计过程大体如下:
(1)在Delphi开发环境中,在窗体设计模式,向报表打印界面的窗体上增加TfrxReport、TfrxCxObject、TfrxXLSExport三个控件的实例,其中TfrxXLSExport用于将报表导出为Excel文件。
(2)双击TfrxReport的实例打开报表设计器,向报表中添加“报表抬头”及“主数据”两个Band。
(3)在“报表抬头”中添加一个“文本对象”,用于显示报表标题。
(4)在“主数据”Band中添加一个“交叉表对象”,如图1所示。
(5)设计完毕之后需要将报表模板保存为fr3文件。
返回报表打印界面的窗体设计界面,对TfrxReport的实例添加OnBeforePrint事件的相应函数,并添加代码如下:
2 模型相关界面实现
图2是报表管理的界面,此界面集中管理所有的报表,其中左侧树状视图分类列出了当前用户拥有权限的报表,右侧显示用户在左侧选择的报表的标题以及报表说明,分别对应S_Report数据表中ReportName和ReportDescription字段的值。用户在选择报表并点击“确定”按钮之后,将进入报表打印界面,如图2所示。
报表打印界面根据S_Report中当前报表对应的记录,生成SQL语句并提交数据库执行进行查询,将数据库返回的数据显示在界面上。同时界面的上方有一排按钮,用户可以对报表进行各种修改,其中包括“项目选择”和“数据选择”。分别点击这两个按钮之后弹出“项目选择”界面和“数据选择”界面。
项目选择界面如图4所示,这里左侧列出了当前报表候选字段列表(对应S_Report表中的FieldsName和FieldsAlias的值),右侧是用户已经选择的字段列表(对应SqlFields字段的值)。通过此界面用户可以选择要在报表中输出的字段列表。用户操作的结果将保存着S_Report表中。
数据选择界面如图5所示。数据选择操作允许用户对数据进行筛选,只在报表中输出符合某些条件的记录。此界面中,用户可以对当前报表候选字段列表中任意字段的数据进行过滤,只需要在界面上方的“字段”下拉列表选择要过滤的字段,在“关系”下拉列表中选择比较关系(大于、小于、等于等),在“值”下拉列表中选择或者输入比较目标,然后点击“添加”按钮,即可添加一个过滤条件,多个过滤条件之间是“与”或者“或”的关系。系统根据用户操作产生的过滤条件组合生成一条SQL过滤语句,此语句将作为S_Report中SqlWhere字段的值保存下来。
通过报表打印界面,用户还可以进行纸张类型设置、打印方向设置、更改列宽等操作,用户的操作都将保存在数据库中,下次打印报表的时候会使用已经保存的信息进行报表输出,避免用户每次打印报表时都需要重新设置的重复劳动。设置好之后系统将根据用户设定的条件重新获取数据,之后就可以进行打印输出了。
3 结语
本文简要介绍了FastReport报表组件,设计并实现了一个通用报表模块模型,并将此模型应用于本文作者开发的电费管理信息系统中。在实际开发的过程中,我们认为FastReport功能十分强大,使用起来十分灵活、方便。我们的通用报表模块模型,能够满足不同系统不同用户的需求,允许系统开发者或者系统管理员在不更改系统源代码的前提下对系统中的报表进行增加或者修改,并允许最终用户在打印输出时控制报表的数据和输出格式,十分灵活。此模型不依赖具体的应用,具有通用性,可以应用于其他的管理信息系统。
参考文献
[1]韩雨,董丽丽.基于FastReport图片报表的设计与实现[J].电脑知识与技术,2008(34)
[2]杜恒杰.基于FastReport的高校学生管理系统报表的设计与实现[J].科技信息,2008(35)
[3]周一,王世耕,黄忠全等.基于FastReport的通用报表系统的设计与实现[J].计算机应用与软件,2008,25(2)
通用实现模型 篇2
通用型雷达高度计回波模型及其应用
雷达高度计回波模型是设计、检验高度计跟踪算法的`基础,是高度计设计的关键性环节.为改进原BROWN模型局限性,从一般情况出发,建立了一面向脉宽限制式雷达高度计的通用型回波模型并介绍了其相关的应用.该模型无论是准确度还是应用范围都比BROWN模型优越得多,可以满足不同环境条件、工作方式的要求,对于高度计跟踪算法的设计、分析与检验具有重要意义.
作 者:王志森 姜景山 作者单位:中国科学院空间中心,微波遥感部,北京海淀区8701信箱,北京,100080刊 名:航空学报 ISTIC EI PKU英文刊名:ACTA AERONAUTICA ET ASTRONAUTICA SINICA年,卷(期):24(1)分类号:V243关键词:高度计 回波模型 通用型
通用实现模型 篇3
关键词:兼容性;通用性:客户端;安全
0引言
数字版权管理技术(DRaM:Digital Rights Management)是用于管理用户对数字内容(digital content)的使用方式,实现保护数字内容免遭未经授权的使用或复制的方法的整体机制。在2001年1月,美国麻省理工学院在(Technology Review)杂志上将DRM技术评选为改变未来世界的10大创新技术之一。目前DRM的应用研究中,美国的InterTrust是最早进行DRM技术研究和开发的公司。而其它公司如微软、Adobe,RealNetworks等也都提出了较为成熟的投入实际应用的方案。
目前应用的DRM系统从本质上说都属于独立的系统,因为它们都是由各著名软硬件制造商针对自己的某个平台或某个应用而设计的,因而它们之间不能互相兼容,数字信息产品只限于在某个特定环境平台下使用,使得用户不能灵活地合法使用其数字信息产品。
面对这个问题。国际标准组织通过制定统一的数字权限语言如ODRL来实现对数字使用权限的统—描述。但是需要指出的是,ODRL并不能完全解决DRM系统通用性问题,因为面对不同的类型的文件以及同一文件的不同应用软硬件环境,支持ODRL语言的DRM系统仍不具备通用性。为了解决这个问题,本文提出了一种新型的通用数字权限管理客户端模型,它可以解决DRM系统的客户端通用性问题,主要的思路是通过对数字信息使用的监控来实现数字权限的管理。
1数字版权管理技术
1.1DRM系统的架构
目前大多数DRM系统都采用如图1所示的系统架构设计。
从图1中可以看出,DRM系统有四个参与者,分别是:消费者;数字内容提供者:主要是由数字内容的版权所有者组成,他们希望通过DRM系统来保护他们版权;分发者:主要是由网络服务商组成,他们提供不同的数字内容分发渠道。如网上零售和网上影院等,通过这些渠道将数字内容提供者所提供的数字内容分发至消费者;净室:主要是解决涉及到资金处理过程中的事务,如:它负责向消费者收取费用,并将费用按协议分给数字内容提供商和分发者,并在确认消费者已支付费用的情况下,向消费者发放数字使用许可证书。
上述的DRM系统的主要工作过程是,首先由数字内容提供者将其提供的数字内容进行编码和加密后打包,然后提供给分发者,由分发者向消费者提供数字内容的相关信息。当消费者决定购买该数字信息产品后,他通过向净室提出请求并向它支付相关费用;净室在得到消费者支付的费用后,将费用分发至数字内容提供者和分发者,并将数字内容使用许可证发送到消费者;消费者即可凭借许可证合法使用对应的数字信息内容。
1.2DRM系统的关键技术
DRM系统的关键技术一共有以下几种:
(1)DRM信任模型
DRM系统中的信任模型与一般的安全信任模型不同,它不是简单地针对几个参与方进行身份认证和交互的信息加密。DRaM的信任模型必须要保证当消费者获得加密的信息产品和许可证书之后,可以按照证书要求的方式来使用数字信息,因此它的信任模型不仅仅只是对用户身份的认证和数字信息的加密,还必须要实现监控用户对数字信息的合法使用。通常DRM系统是通过硬件技术(可信计算技术)结合软件技术(加密与监控)实现。
(2)加密技术
DRM系统中的加密技术主要有:对称和非对称加密技术。对于数字信息一般采用对称加密技术,以提高数字信息的加密与解密速度;而针对个人身份认证,数字证书等方面一般采用非对称加密技术以确认各参与方的身份。除此之外,还有数字签名和数字论证等加密技术。
(3)应用环境标识与区分
由于DRaM系统对用户使用数字内容的方式有严格的限制,为了监控和防止数字内容被非法使用,数字内容的应用环境标识与区分就显得很重要,只有使用许可证确认的应用环境,数字内容的使用才能得到有效的监控。数字内容的应用环境标识与区分—般采用信任计算技术:采集应用环境特定的参数,生成应用环境标识并在每次使用数字内容时进行识别。
(4)数字水印
数字水印技术是在数字内容内插入数字的相关内容信息以及一些特殊目的的数据,这些数据与数字内容合成—体。用户难以察觉。在DIVl系统中内容提供者使用数字水印技术在提供的数字内容中插入数字内容的相关信息以及版权说明,还有使用许可说明等。
2通用型的数字权限管理客户端模型
由上文所述可知,当前DRM系统不能通用的主要原因并不是在于数字内容的提供与分发,以及许可证发放、收费流程等方面。因为DIeM系统主要的几个参与方都是利用网络进行的,所以这种架构不会造成系统通用性问题。
目前DIeM系统不能通用的主要原因在于消费者客户端。DRM系统的信任模型必须要保证消费者在得到数字内容后,按许可证的要求合法使用数字内容,因此DRM系统需要用户安装专用的客户端,系统通过客户端来监控用户对数字内容的使用。而现有DIVl系统的客户端都是某个公司针对某个应用软件如:Window media pJ,dy,Adobe reader等开发的插件,或者是针对某个类型的文件而开发出来的专用客户端,如索尼的MP3客户端,电子书客户端等。显然这种类型的客户端不仅限制了客户,同时也限制了系统的通用性,使得用户不得不在同一台设备上安装多个DRM系统,这给用户带来了不便,也造成潜在的系统冲突。为了解决通用性问题,本文利用ODP~L语言为基础进行数字权限描述,通过在消费者设备上建立统一的DRM监控进程来完成通用的DRM客户端,达到通用DRM系统的目的。
2.1通用型数字权限管理客户端模型架构
由上文所述,本文的通用型数字权限管理客户端模型如图2所示。
从图2中可以看出,通用型数字权限管理客户端模型主要由三个部分组成:DRM客户端控制进程——该进程主要的功能是对数字内容按许可证进行解码,注册数字内容信息;数字内容注册表——该数据结构主要用于注册数字内容的许可证内容以及其它相关信息;DIeM临时文件容器——主要存放控制进程生成解码后的数字内容临时文件。
通用型数字权限管理客户端模型的工作流程由以下几个步骤组成:
(1)用户将获得的数字内容和许可证提交到客户端控制进程,控制进程通过对数字内容以及许可证的校验,确认许可证
以及数字内容的合法性之后,将数字内容的相关信息和许可证存放到数字内容注册表。
(2)当用户使用数字内容时,向控制进程发出请求,控制进程首先利用注册表信息,进行应用环境识别和用户使用权限确认,然后根据许可证,对数字内容解码,将解码后的数字内容放入DRM临时文件容器。
(3)DRM客户端控制进程利用用户环境中默认的应用软件(或由用户指定)打开临时文件容器内的数字内容。用户可以开始使用数字内容,同时DRM客户端控制进程监控用户按许可证规定的方式使用文件。
2.2控制进程的监控功能实现
在DRM系统中,监控用户使用数字内容的功能十分重要,因为用户可能在打开数字内容时,采用复制等手段危害数字内容的版权。本文设计的数字权限管理客户端模型为了实现通用性,不能采用针对某个软件的插件等方式来监控用户,我们采用监控DRMll临时文件容器的方法实现对用户的监控。其主要实现模块由二个部分组成:
(1)文件系统监控模块
文件系统监控模块用于监控当前系统中打开DRM临时文件容器中的文件所对应的进程。下面以Windows XP系统平台为例加以说明。模块通过Windows内核API函数Nt-QuerySystemlnformation函数返回SYSTEM_HANDLE结构的数组,获得所有句柄,包括:文件句柄。Motex句柄,事件句柄等等。对于Window XP文件对象来说,其旬柄类型值是28,凭此可以获取当前正在打开的文件句柄,代码片断如图3所示。文件系统监控模块由文件句柄即可获得当前打开DRM临时文件容器的应用进程,从而通过对应用进程的监控,保证用户按许可证的要求使用数字内容。
(2)用户使用文件方式控制模块
用户使用文件方式监控模块的主要功能是控制用户按许可证的方式使用数字内容。它的功能实现建立在文件系统监控模块的基础之上:利用Windows钩子程序,在获知使用DRM数字内容的进程情况下,可以很容易地实现该进程对数字内容的使用控制。如禁止另存、复制、文件共享等危害数字内容版权的使用方式;同时也可以对用户使用数字内容的具体细节参数进行统计,并将其存入DRM注册表中。
3应用举例
本文以使用影音文件为例,说明本客户端模型的工作过程。
Avi文件可由Windows自带的播放器打开之外。还可以由RealPlay。影音风景等其它应用工具打开播放。采用本DRM客户端模型,用户首先在获取加密的数字内容和许可证之后,向客户端提交许可证和数字内容进行校验注册,客户端将许可证和数字内容相关信息写入注册表。当用户使用数字内容后,客户端即可根据许可证将数字内容解密后放入DRaM临时文件容器。同时调用系统默认工具(如Windows media play),也可以由用户选择打开工具。
当用户使用本数字内容时,客户端控制进程即在系统内根据注册的数字内容名监控所有打开和使用当前数字内容的进程,并控制它们对数字内容的使用方式,从而保证用户按许可证的要求使用数字内容。
4结束语
通用实现模型 篇4
随着Internet网络技术的飞速发展, B/S体系结构因其分布性强、操作方便, 可扩展性好, 被大量应用于各种管理软件, 是当今主流的发展方向。随之而来的B/S结构Web信息系统的安全问题越来越受到人们的重视, 健壮有效的安全管理机制是合法地使用信息, 防止非法获得信息或破坏信息的基本保障。
应用级的安全访问控制策略主要有以下三种:自主访问控制 (DAC) 、强制访问控制 (MAC) 和基于角色的访问控制 (RBAC) [1]。
(1) 自主访问控制 (DAC) :允许主体将其拥有的访问客体的权限授予给其他的主体, 并可自主的收回授权。这种访问控制策略安全级别低, 主体的权限过大, 可能会导致一系列安全问题[2]。
(2) 强制访问控制 (MAC) :系统将主体和客体分级, 当主体访问客体时, 系统对两者的级别进行比较以确定主体是否可以访问客体。MAC规则非常严格, 应用领域比较窄, 一般只用于军事或政府等具有明显等级观念的行业或领域[3]。
(3) 基于角色的访问控制 (RBAC) :是目前最为流行的访问控制策略, 它在用户和权限之间引入“角色”的概念, 使得授权管理变得灵活、简单。
本文针对第三种访问控制策略, 在基于角色的访问控制 (RBAC) 基础上进行通用、动态权限管理模型的设计与实现。
1 模型设计
本文所述的权限管理模型如图1 所示。
图1 所示的权限管理模型中机构部门下面包含人员、账号组、角色。人员与账号关联, 人员只有拥有了账号才能登录系统办理业务, 一个人员可能关联多个账号, 但一个账号只能属于一个具体人员, 人员和账号之间是1 对多的关系。办理业务时记录的是操作人员的账号信息而不是人员信息。
为了更好的管理账号, 模型中把功能类似的账号归结到账号组。一个账号可以属于多个账号组, 一个账号组可以包含多个账号, 账号和账号组之间是多对多的关系。
在账号、账号组和权限之间引入了角色的概念[4], 权限不直接赋予账号或账号组, 而是给每一个账号或账号组分配合适的角色, 为每一个角色分配特定的权限, 账号、账号组与角色对应, 而角色与权限对应, 角色作为一个桥梁, 沟通于账号和权限之间。账号或账号组只有通过角色才能享有该角色所对应的权限, 从而访问相应的权限资源。一个账号或账号组可以被赋予多个角色, 一个角色也可以被赋予多个账号或账号组, 角色与账号、账号组之间是多对多的关系;一旦账号属于了某个账号组, 那么该账号间接的继承了该账号组所拥有的角色。同样, 一个角色可以拥有多项权限, 一个权限可以分配给多个角色, 角色和权限之间是多对多的关系。
模型中权限资源包括菜单权限、动作权限和数据权限。菜单权限指系统拥有的功能模块操作菜单;动作权限指某个页面上的具体操作按钮;数据权限指页面上显示的业务数据。
除此之外, 角色之间、权限之间、角色和权限之间可以定义一些关系, 比如继承等层次性关系。也可以按需要定义各种约束条件, 比如定义两个角色为互斥角色 (即这两个角色不能分配给同一个账号或账号组) 。
上述权限管理模型通过对角色的授权来控制用户对系统资源的访问, 实现了用户与系统权限的逻辑分离, 极大的方便了权限管理[5,6]。例如, 如果一个用户的职位发生了变化, 只要将该用户在该职位拥有的账号从当前的角色中去掉, 加入代表新职务或新任务的角色即可, 角色/权限之间的变化比角色/账号关系之间的变化相对要慢得多[7]。
2 系统设计
2.1 权限管理模型的数据库设计
本模型中采用oracle数据库, 主要涉及机构表、人员表、账号表、账号组表、角色表、权限资源表、数据权限表、账号-账号组关联表、账号-角色关联表、账号组-角色关联表、角色-权限关联表。
(1) 机构表 (Organization) 记录机构的基本信息, 表中机构类型字段记录该机构性质是机构还是部门。
(2) 人员表 (Person) 记录人员的基本信息, 表中有organization_id记录该人员所属的机构。
(3) 账号表 (Account) 记录账号的基本信息, 表中有person_id记录该账号属于哪个具体的人员。
(4) 账号组表 (Account Group) 记录账号组的基本信息。
(5) 角色表 (Role) 记录系统中的角色信息, 根据实际情况, 划分角色。
(6) 权限资源表 (Authority Resource) 记录菜单权限、动作权限、数据权限的基本信息。由于权限之间存在等级关系, 在权限资源表中增加了parent_id字段指向一个权限的父权限, 权限和父权限之间是多对一的关联关系。表中增加了权限类型区分菜单权限、动作权限和数据权限。
(7) 数据规则表 (Data Rule) 记录数据权限的规则信息, 比如数据权限操作的表名、过滤数据where条件等。表中有parent_id字段指向权限资源表中与之对应的数据权限基本信息。
(8) 账号-账号组关联表 (Account_Group) 、账号-角色关联表 (Account_Role) 、账号组-角色关联表 ( Group_Role ) 、 角色- 权限关联表 ( Role_Authority) 分别记录账号与账号组、账号与角色、账号组与角色和角色与权限之间的关联关系。
2.2 功能模块的设计
本模型主要涉及六大模块:
(1) 机构管理模块:完成机构信息的添加、删除、修改。
(2) 人员管理模块:完成人员信息的添加、删除、修改。在添加人员时可以为该人员分配账号。
(3) 账号管理模块:完成账号的添加、删除、修改、为账号分配角色、为账号分配账号组。在添加账号时必须为该账号指定对应的人员。
(4) 账号组管理模块:完成账号组的添加、删除、修改、为账号组分配账号、为账号组分配角色。一旦为账号组分配了角色, 那么账号组包含的账号都继承了这些角色。
(5) 角色管理模块:主要完成角色的添加、删除、修改、为角色分配权限资源。角色包含的账号、账号组可以访问角色所分配的权限资源。
(6) 权限资源管理模块:主要完成菜单权限、动作权限和数据权限的添加、删除、修改。本模型中, 权限是分层次的, 通常以权限资源树的形式存在。初始的权限资源树包括权限根节点、菜单权限、动作权限、数据权限, 这四个节点只能被编辑不能删除, 权限根节点是菜单权限、动作权限、数据权限的父节点, 以后添加的所有权限资源只能作为菜单权限、动作权限和数据权限的子节点。菜单权限、动作权限添加、编辑页面相同, 如图2 所示。
如图2 所示的菜单、动作权限添加页面, 上级资源根据权限资源树中当前选择的节点自动填充;资源编码是由上级资源编码+“.”+当前输入的编码组成分段式的资源编码, 这种格式的编码可以快速判断该权限资源所处的层级;排序号表示该权限资源在权限资源树中显示的顺序;URL表示该权限资源对应的url访问地址, 通常菜单资源才需要填写此属性, 动作资源不需要填写。
数据权限添加页面与菜单权限、动作权限不同, 数据权限添加页面上半部分是数据权限的基本信息区, 下半部分是数据权限规则信息编辑区。如图3所示。
图3 所示数据权限添加页面, 数据权限规则是指sql语句中的where条件, where条件有的复杂有的简单, 所以数据权限规则信息编辑区控件是动态生成的。实体下拉列表框列出了所有hibernate中配置的与数据库表相对应的实体名称;从实体下拉列表框中选择一个实体名称, 属性下拉列表框中列出了该实体包含的所有属性信息, 这些属性信息与数据库表中的字段对应;属性下拉列表框右边是运算符列表框, 包括>、>=、=、<=、<、like等运算符;运算符列表框右边是属性值编辑框, 填写参与数据规则运算的属性值信息;属性值编辑框右边是属性类型框, 属性类型框是只读的, 当属性列表框中选择了一个属性后, 属性所属的类型 (String、Date、Long等) 自动出现在属性类型框中, 确定属性类型是为了方便进行数据规则的计算和属性值的填写;属性类型框右边是关联关系列表框, 包括or、and两种, 用于连接下一个条件的关联关系;点击“加条件”按钮, 规则信息编辑区动态生成一行条件编辑控件;点击“加组”按钮, 页面自动生成组编辑区域, 即图3 中黑线框包括的区域。组内的条件系统自动的用括号括起来。组内还可以继续加组、加条件, 从而形成复杂的数据权限规则。数据权限规则编辑完成后, 点击图3 中的“测试”按钮, 系统根据选择的实体及设置的条件组成hql语句运行, 如果组成的hql语句没有语法错误, 系统能够执行则返回“测试成功”;如果hql语句系统无法执行, 则返回“测试失败”。对于测试成功的数据规则点击页面中的“保存”按钮, 保存数据权限。数据权限分两张表保存, 一张是权限资源表用于保存数据权限的基本信息;一张是数据规则表用来保存数据权限的规则信息, 包括该数据权限涉及的实体中文名、英文名、过滤数据的where条件。过滤数据的where条件格式为:实体名.属性名+计算规则, 图3 中数据权限表记录的where条件:
account.create_time>to_date ('2010-10-10') and (account.name like ' 刘%' or account.update_time<=to_date ('2015-08-20') ) and account.version =1
在过滤数据的where条件中记录实体名.属性名目的是为了方便把数据权限添加到业务查询语句中。通常业务查询语句中为表起别名, 把数据权限中的过滤数据where条件拼接到业务查询语句中, 用业务查询语句中的别名替换数据权限中的实体名轻松实现数据权限与业务查询语句的融合。
3 权限控制技术实现
本模型在Java平台上借助于Hibernate来实现。设计数据库, 在系统中生成持久化类和数据库表之间的映射。
登录系统时根据当前登录账号所属的角色、账号组 (账号可能不是直接属于某个角色, 而是通过属于某些账号组间接属于账号组所属的角色) 获取一级菜单权限、动作权限和数据权限保存在session中。
菜单权限:从session中获取一级菜单权限, 动态生成主页面。点击主页面中的一级菜单进入模块内部操作时, 根据一级菜单ID、角色、账号组获取指定一级菜单下具有访问权限的所有子菜单, 形成具有访问权限的子菜单树。如果登录账号拥有操作某一功能的权限, 该功能菜单就在子菜单树中显示。否则, 该功能菜单不会在子菜单树中显示, 用户也就不能操作没有权限的功能, 从而动态的完成菜单模块级别的权限控制。
动作权限:通过自定义标签来实现。点击子菜单树中的子菜单, 由子菜单的URL进行页面跳转, 根据子菜单ID和session中保存的动作权限由自定义标签动态生成页面上的功能按钮。如果登录账号有此菜单模块下某一功能按钮的操作权限, 则此功能按钮就显示在页面上供用户操作;如果没有某一功能按钮的操作权限, 则此功能按钮就不显示在页面上, 用户也就无法进行该操作, 从而动态的完成页面动作按钮级别的权限控制。
数据权限:通过Hibernate的拦截器来实现。点击子菜单树中的子菜单, 由子菜单的URL进行页面跳转, 根据子菜单ID和session中保存的数据权限, 利用Hibernate的拦截器技术拦截查询当前页面数据的sql, 为sql添加数据权限中的where条件生成页面上的数据信息。用户只能看到自己权限范围内的数据, 从而动态的完成数据级别的权限控制。
对于数据权限的实现比较复杂, 如果直接在每个模块的查询语句中添加, 一方面代码编写工作量太大, 维护性差;另一方面每个模块涉及的查询语句复杂多样, 有的模块使用hql语言编写, 有的模块使用sql语言编写, 用一套添加数据权限的代码无法实现。本模型中使用Hibernate拦截器为各模块的查询语句添加数据权限。定义Hibernate Query Interceptor类继承hibernate的Empty Interceptor, 在Hibernate QueryInterceptor类中重写public String on Prepare Statement (String sql) 方法。此方法的参数sql是hibernate解析后的可以被数据库直接执行的sql语句, 无论在模块中使用的是hql语言还是sql语言, 这里都被hibernate解析成统一格式的sql语句。本模型在on Prepare Statement方法中获取session中保存的数据权限, 如果数据权限中包含的表名与sql中的表名相同, 则获取sql中该表名的别名, 用别名替换数据权限中where条件的实体名, 把数据权限添加到sql中。替换时如果原sql包含where条件, 则直接把数据权限中的where条件添加到原sql中第一个where条件之前, 如果添加到where条件后面需要判断原sql中是否有order排序、group分组等;如果原sql中不包含where条件, 则利用正则表达式分离出原sql中的order排序、group分组把数据权限中的where条件加入sql并拼接上原来的order排序、group分组。注意原sql可能是嵌套的复杂查询语句, 上述判断要逐层进行判断拼接数据权限。On PrepareStatement返回添加了数据权限的新sql语句交给系统执行, 从而达到进行数据权限控制的目的。
4 结语
RBAC是目前公认的解决大型企业统一资源访问控制的有效方法[8]。本文针对B/S结构Web系统特点, 设计了一种基于RBAC的通用、动态权限管理模型。RBAC模型的许多实现方案中权限控制粒度是到页面级别的, 而本文设计的模型权限控制粒度到页面上的功能按钮级别和数据权限级别, 克服了传统的RBAC权限控制的粒度过大, 难以精确地区分不同角色的权限、不方便使用的缺点。本模型中为账号分配角色而不是为实际人员分配角色。为了便于对同类账号进行管理提出了账号组的概念, 有了账号组可以快速的为组内的多个账号分配角色或撤销角色, 进而获取角色具有的权限。模型中的账号、账号组、角色、权限可以根据实际的需要动态的添加和删除, 具有较强的灵活性和动态性。
参考文献
[1]甘剑.基于角色的访问机制的研究及应用[D].中南大学, 2010.
[2]刘晓玲, 郭龙.基于RBAC的用户权限管理的研究与实现[J].电脑知识与技术, 2013, 3 (07) :1487-1490.
[3]杨阳.基于角色的访问控制改进模型研究与应用[D].西安科技大学, 2014.
[4]韩金松.基于角色权限的投票测评系统的设计与实现[J].软件, 2013, 34 (9) :47-48.
[5]赵凯, 汪卫平.数字化校园中基于角色的权限控制[J].软件, 2014, 35 (11) :22-24.
[6]王宇飞.基于Acegi的通用权限框架的设计与实现[J].软件, 2013, 34 (7) :46-50.
通用实现模型 篇5
一、加强集体备课,实现群体优势和个性特长完美结合
狠抓集体备课,可以做到有计划、有准备、有内容、有高效。根据新课程的要求,对新课程的每一个模块,进行认真分析研讨。分析学生学习过程中可能会存在哪些问题,哪些章节和单元是重点,哪些章节和单元是难点,总体课时如何分配,教学进度如何控制,实验操作内容如何安排实施,各周内容如何安排等。然后根据教学内容,通用技术教师们再进行集体讨论,确定每周具体的上课内容和实验操作任务。
通用技术因与其它各科有不同之处,我们着重考虑从以下几个方面进行备课:
1.备教材一要对教材整体把握,二是从新课程的知识与技能、过程与方法、情感态度与价值观三个方面确定对应的教学目标,三是对教材的重点、难点进行相应的分析;四是针对教学内容确定实验内容。
2.备学生了解每一个班级的优生和落后生的知识接受能力,根据不同学生的学情安排教学内容和操作任务,力求让每个学生听得懂,跟得上,做得了。
3.备教法通用技术课程不同与其它各学科,力求学生以动手实践操作为主。所以要根据不同的教学内容要认真选择操作任务和教学方法,力求以不同形式展示教学内容,既能起到理论学习的目的,还能达到走进生活、体验实践的目的。
4.备单元课时设计明确每个单元安排几节课完成,每个课时计划完成哪些教学内容等。
5.备学案设计为方便学生学习流程的设计安排,我们精心编制学案,确定针对性强的操作任务和当堂教学内容操作任务的点评。
6.备活动器材通用技术以动手操作为主,为了达到让全体同学在每堂课都能动手操作,一是根据不同教学和活动内容准备演示的活动内容和器材,让学生直观的了解教学和操作内容;二是提前准备好学生操作的工具和耗材,让学生人人都能深入实践,达到强化理论学习内容的目的。
二、改变教学方法,追求课堂高效
在集体备课的基础上,具体上课时,还要针对不同班级和学生的特点,选择合适的教学方法,力求调动学生参与学习参与实践的积极性和主动,达到课堂高效的目的。
1.努力使课堂“生活化”技术来源于生活,技术就在身边,指导学生充分运用双手和大脑,在真实的生活环境中学习技术,在实践中求知,从生活中体验。
在教学中,每当我给学生补充身边的案例,出示身边的图片时,学生总能瞪大眼睛,热烈的参与、讨论,而单纯的照本宣科时,学生则没有多大的积极性,因此,教学中,努力使课堂“生活化”。比如,在讲结构稳定性时,提出了这样一个问题:晚上,我们如何才能快速知道地震来了呢?学生提了很多方法,最常用的就是使用倒置的啤酒瓶,我接着又问:正着放行吗?为什么?通过这一系列的问题,一下子将学生的积极性调动了起来,引到了结构上。课堂中我还制作了许多小木块,来模拟了地震,我还让学生利用课本制作书塔等,极大调动了学生的积极性,使学生在参与中实现了知识的构建和掌握。
2.多对学生进行赏识教育,也是调动学生积极性的一条行之有效的途径人都愿意被人关注,被人赞美、肯定,学生更是如此,因此,教师要用心去发现他们的优点,经常的在同学们面前表扬他们,学生受到的表扬,自然也就不好意思再干别的事情,注意力集中了,积极性自然也就提高了。比如在讲结构稳定性这一部分内容时,有的同学用相同瓶子分别盛不同的水,倒着放置分别加以不同的力推倒瓶子以检测稳定性的差异。我感觉用这种方法不仅能直观的体验结构稳定性,还能把知识点中的底面积和重心位置一并涉及,是一种非常好的实验方法,我在大力表扬同学们的这种做法之后,还让学生上讲台给同学们做了演示,这样不仅增强了学生的自信和乐观的学习精神,而且还激发了学生探索求知的欲望,极大活跃了课堂气氛。
3.充分利用多媒体由于我们是一周只开一次课,因此,可以用一周的时间精心设计课件,尽可能将内容通俗化、动态化,尽可能多的将信息传递给学生,使学生在生动的课堂中接受知识。
4.走下讲台,走进学生中间传统的教育观念,“师道尊严”的观念已经严重阻碍了现代教育的发展,新课程改革的要求是让我们教师转变观念,走下讲台,走进学生中间,建立民主、平等关系,这样,既拉近了师生间的距离,又避免了学生对技术的轻视,更有利于高效课堂的构建。
目前各所学校均建立了通用技术实验室,这无疑为通用技术课的开展大大提供了方便。通用技术课程的开展,有利于让学生进行技术设计与制作、技术试验与技术探究,有利于是提高学生利用所学技术解决实际问题的能力。我相信,伴随通用技术课程的深入开展,必会极大提高学生的综合能力,对国家的发展和民族的未来具有重要意义和价值。
通用实现模型 篇6
1 模型的概要设计
本模型主要包括两个大模块组成,如图1所示。一是流量统计模块。该模块要完成的功能是统计系统上的接口,并且计算接口的流量。二是流量信息输出模块,系统的信息流量以动态的形式展示给用户。
2 详细设计
网络流量的统计一般采用两种方法:在线数据包过滤统计方法(例如NAI Sniffer和Agilent Internet Advisor)和基于SNMP MIB(Simple Network Management Protocol Management Information Base)采集的方法。本模型采用的是第一种方法——数据包统计。SNMP是由IETF(internet 工程任务组)提出的,随着TCP/IP成为事实上的协议标准而广泛被使用。SNMP主要由三部分组成:管理者、代理和MIB。MIB遵从SMI(Structure of Management Information),存放设备或者网络运行状态的信息。
网络节点端口流量指的是网络节点设备端口流入和流出的数据包的信息统计。它包括数据包的个数、字节数、包大小分布、丢包数等非常多的统计信息。统计节点端口流量的典型工具是MRTG(Multi Router "Craffic Grapher),另外许多厂商的网管工具也提供这些功能,如HP公司的OpenView平台、Agilent公司的Firehunter等。MRTG的功能单一,它使用SNMP协议访问网络节点获取MIB信息(包括网络节点端口流量),然后通过队Web方式输出结果。MRf G是一个非常实用的费软件,在各个运营商的网管中心都作为最常用的网络统计工具来使用。其它类型的网管工具,如以上提到的OpenView和Firehunter价格昂贵,一段都强调其强大的分析功能,而不仅仅是用来统计网络节点端口流量。因此,当需要监视或分析更多的网络性能参数时,可以考虑用这些工具的强大分析功能与MRTG结合一起使用。
2.1 接口模块流量统计的设计
首先通过函数Interfaces.GetAt(pos)得到当前接口的名字,并且为性能数据缓冲分配空间。接着判断缓冲尺寸是否太小,如果太小需要增加空间。枚举表中的第一个对象,然后遍历链表。遍历链表的过程如下:定义变量,找到第一个计数器,若数据类型是我们需要的,则我们就找到了第一个instance。遍历整个实列, 得到这个实列的PERF_COUNTER_BLOCK(性能数据块),然后我们得到了接口的名字,判断处理的接口是否是新的,接着对数据进行处理。
2.2流量相关的主要采集参数有以下的部分接口函数
GetTraffic(int interfaceNumber);//得到接口号为interfaceNumber的接口流量
GetInterfaces();//枚举安装的接口
GetNetworkInterfacesCount();//返回安装的接口数
GetNetworkInterfaceName(CString *InterfaceName, int index)//返回接口名称
GetInterfaceBandwidth(int index);//返回接口带宽
GetInterfaceTotalTraffic(int index);//具体接口接收和发送的数据量
2.3 主要的数据结构
系统的设计主要构造了2个大的类,分别用于实现2大基本模块的功能和需求:
MFTrafficButton,用于当前流量的显示,当网络连接可用时,选择当前第一个可用的接口做为当前的网络连接,并且每秒钟刷新一次网络状态。具体的变量和方法如下所示:
2.3.1 流量统计输出类
class MFTrafficButton : public CButton
{
public:
MFTrafficButton();
// ClassWizard generated virtual function overrides
// Implementation
public:
void SetAdaptiveScaling(BOOL adaptive);
void SetInterfaceNumber(int interfacenumber);
enum traffictype
{
Traffic_Total = 0,
Traffic_Incoming = 1,
Traffic_Outgoing = 2
};
void SelectTrafficType(int trafficType);
void SetInterfaceNumberNotificationFunction(INTERFACECHANCEDPROC callfunct);
void SetUpdateSpeed(UINT netspeed, UINT gridspeed);
void ReInit(int newInterface);
void ReInit(RECT newSize);
virtual ~MFTrafficButton();
// Generated message map functions
protected:
//{{AFX_MSG(MFTrafficButton)
afx_msg void OnTimer(UINT nIDEvent);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
void InterfaceHasChanged();
INTERFACECHANCEDPROC interfaceCallBack;
MFNetTraffic m_cTrafficClass;
CFont smallFont;
CBrush colorbrush;
COLORREF red, green, back, cyan, darkblue, darkgray, white, black, lightgreen, darkgreen;
……….
……….
………..
public:
int gridxresolution; // 网格大小
int gridyresolution;
int gridscrollxspeed; // 网格滚动速度
int gridscrollyspeed;
int netupdatespeed; // 网络更新速度
int gridupdatespeed;
};
2.3.2 MFNetTraffic类
用于统计当前的接口,及当前借口的带宽和流量等信息,具体的变量和函数如下:
class MFNetTraffic
{
public:
enum TrafficType //流量类型
{
AllTraffic = 388,//总的流量
IncomingTraffic = 264,//输入流量
OutGoingTraffic = 506 //输出流量
};
void SetTrafficType(int trafficType); //设置流量类型
DWORD GetInterfaceTotalTraffic(int index); //得到index索引接口的总流量
BOOL GetNetworkInterfaceName(CString *InterfaceName, int index);//得到网络接口名字
int GetNetworkInterfacesCount(); //得到接口的数目
double GetTraffic(int interfaceNumber); //得到流量
DWORD GetInterfaceBandwidth(int index); //得到index索引接口的带宽
MFNetTraffic();
virtual ~MFNetTraffic();
private:
BOOL GetInterfaces();
double lasttraffic;
CStringList Interfaces;
CList < DWORD, DWORD &> Bandwidths; //带宽
CList < DWORD, DWORD &> TotalTraffics; //总的流量
int CurrentInterface;
int CurrentTrafficType;
};
3 系统功能测试
3.1 测试平台及结果
测试内容见表1。
测试的结果如图2所示,测试结果符合设计初衷。从表中变化的曲线,可以看到当前网络流量的变化,以及当前主机系统的接口有哪些,接口的带宽及当前的网络流量速度如何等。表中的数据基本符合现有的网络状态,程序运行良好。
4 小结
本模型的设计目标要求统计器能适合于任何平台,任何网络结构,基本思路是对网络数据进行连续的采集,通过连续采集网络数据来监测网络的流量。系统获得网络流量数据后对其进行统计和计算,从而得到网络流量的大小及其主要成分的性能指标,定期形成报表,并维护网络流量数据库或者日志,存储网络极其主要成分的性能的历史数据,网络管理员根据当前的和历史的数据就可以对网络进行性能管理,通过数据分析获得性能的变化趋势,分析制约网络性能的瓶颈问题。此外,在网络性能异常的情况系网络流量检测系统还可以象网络管理者进行告警,是故障及时得到处理。
摘要:网络流量是描述网络行为的重要指标之一,对网络规划设计、业务部署、协议与网络设备设计、实施流量工程等都至关重要。依照软件工程方法学,设计并实现了一个通用的流量统计器模型,分析了网络数据包截获机制,研究了相应协议,阐述了网络数据包统计模块实现方法。
关键词:网络流量,通用,截获,统计
参考文献
[1]罗娟,曹阳,尹建华,等.网络计费系统的设计与实现.计算机工程与应用,2003;39(2):4—6
[2]Case J,Fedor M,Schoffstall M,A simple network management proto-col(SNMP).RFC1157,IETF,May1990
[3]赵瑞.基于分解方法的网络流量自适应短期预测方法研究.西安交通大学硕士论文,2004
[4]郑海,张国清.物理网络拓扑发现算法的研究.计算机研究与发展,2002;39(3):264—268
[5]薛伟,史达.网络安全.大连:东北财经大学出版社,2002
[6]戴英伙,连一峰.系统安全与入侵检测.北京:清华大学出版社,2002
[7]蒋建养,冯凳国.网络入浸检测原理与技术.北京:国防工业出版社,2001
[8]马恒太,蒋建春.基于Agent的分布式入侵检测系统模型.软件学报,2000;11(10):1312—1319
[9]方滨兴.建设网络应急体系保障网络空间安全.通信学报,2002;5(23):4—8
[10]白英彩,等.计算机网络管理系统设计与应用.北京:清华大学出版社,1998
[11]岑贤道.网络管理协议及应用开发.北京:清华大学出版杜,1998
通用实现模型 篇7
模型部件作为决策支持系统(Decision Support System,DSS)的三大部件之一,得到了广泛关注和研究,研究人员基于先进的软硬件技术,给出了多种模型表示方法[1,2,3,4],实现了多种模型管理、组合与服务机制,在多模型辅助求解决策问题方面取得了一系列成果[1,3,4,5,6,7,8],为多模型辅助决策提供了手段,但难以对网络环境下多种形式的模型资源实施统一管理和服务。
随着信息化建设进程的不断推进,模型辅助决策技术得到了越来越广泛的重视和发展,积累了一大批基础模型和专用模型资源,为模型辅助决策奠定了基础,也为模型管理与服务带来了前所未有的挑战:各模型研制单位采用不同的技术体制研制、改造模型,导致模型资源在物理上是分布的,在技术上是异构的,而目前缺少为网络环境下各种文件格式的模型资源实施统一管理和一体化服务的有效手段;大多数模型系统是针对具体的应用背景而研制的,模型是执行流程控制中的一个固定环节或过程,按固定的方式使用,缺乏有效的模型资源共享与应用手段。因此实现多种形式模型资源的管理,并提供配套的模型应用手段,是模型管理与服务系统的迫切需求。
针对现有成果的不足,结合多模型辅助决策的现实需求,本文设计并实现了一个通用模型管理与服务系统,实现了网络环境下标准动态链接库、COM组件、标准应用程序、Web Service等多种类型模型资源的统一管理与服务,并提供以决策问题分解为导向、自顶向下的模型框架生成和以功能聚合为导向、自底向上的模型组合生成两种配套的多模型辅助决策机制,为多种类型辅助决策模型资源的管理、服务和应用提供了一整套解决方案。
2模型描述规范
模型描述信息是实现各级各类模型管理与共享服务的基础,必须具有较强的可描述性、实用性和完整性。模型描述信息包含语法、语义和语用三个层次。
2.1 模型语用信息
模型的语用信息描述模型的分类、用途和版本等信息,主要包括:模型名称;模型应用领域与分类描述信息,可以根据不同的视角描述模型的应用领域与分类;模型用途描述信息;模型版本信息。
2.2 模型语义信息
模型语义信息描述模型的原理、研制情况、审核情况和接口参数的语义信息等,主要包括:模型原理描述信息;模型研制情况描述信息;研制单位及主要完成人信息;版本变更信息;模型审核信息;模型批准信息;模型方法含义描述信息;输入输出参数含义描述信息;模型关联文件信息,描述模型关联的数据文件、帮助文件、资源文件、依赖的库文件、临时文件等。
2.3 模型语法信息
模型语法信息描述模型载体的类型、定位信息、以及输入和输出参数的语法结构,主要包括:模型开发与运行环境信息;模型文件载体类型信息;模型资源的定位描述信息,包括IP地址及端口号、模型文件绝对路径或Web服务地址;模型方法的调用信息,包括模型类名称、模型方法的调用名称、输入输出参数数量等;输入输出参数格式信息,包括序号、输入输出标识、名称、类型,以及可选的长度、精度、缺省值,可选最大值和最小值等。
3总体设计
按照“集中管理、统一服务、灵活配置”的基本原则和设计思想,通用模型管理与服务系统分为模型描述、模型信息管理、模型应用和模型服务四个工具,在网络环境下部署成模型服务端、模型信息管理端、模型应用端三类节点,系统结构如图1所示。根据实际使用环境和计算机配置情况,系统可灵活配置数据库服务器,可部署成多个独立节点,也可与其他节点一起部署;上述四类节点可部署在一台计算机上,形成最小规模的系统;在同一个应用环境中,可部署多个模型应用端和模型服务端节点。
模型描述工具 部署在模型服务端,以半自动的方式实现标准动态链接库、COM组件、标准EXE以及Web服务等类型的模型资源的描述,形成规范化的模型信息描述文件;利用托管技术,生成规范的模型资源托管代码,这是实现模型资源统一服务的基础。
模型信息管理工具 部署在模型信息管理端,主要功能包括:接收模型服务端发送的模型信息描述文件,将规范化的模型描述信息注册到模型信息库中;主动或被动注销模型信息库中的模型描述信息;根据模型用户的查询请求,对模型信息库中的模型描述信息进行查询和筛选;根据模型服务端的要求,对模型描述信息进行更新和升级;根据需求动态建立、修改模型分类体系,便于模型的分类管理和应用。
模型组合应用工具 部署在模型应用端,支持两种多模型共同求解决策问题的机制:一是以功能聚合为导向,以搭积木的方式、自底向上聚合现有模型资源,形成满足需要的复合模型;二是以决策问题分解为导向,自顶向下分解决策问题,逐层细化,将元问题与现有模型关联,形成符合决策问题求解逻辑的多模型求解框架,其实质也是一个复合模型。第一种机制可以在现有模型资源的基础上得到更加灵活、更加丰富的复合模型资源;第二种机制则更加符合人们解决复杂问题的思维习惯。这两种机制相得益彰、优势互补。主要功能包括:提供组合模型运行控制流和信息传递流的可视化编辑功能;生成控制子模型运行的脚本;提供解释机制,将子模型服务请求提交给相应的模型服务端。
模型服务管理工具 部署在模型服务端,主要功能包括:侦听并接收网络环境中模型应用端的模型服务请求;解析模型服务请求,设置、装配模型输入输出参数,形成规范化的模型服务调度命令;通过服务引擎调度模型运行,记录、管理模型运行结果和日志;按照指定的模型输出参数传递方式,将模型运行结果返回模型应用端。
4关键技术
4.1 托管代码生成
辅助决策模型的载体形式有多种,本系统支持以下四种常见的形式:
(1) 标准动态链接库形式,一般为DLL文件;
(2) COM组件形式,可以为DLL或EXE格式的文件;
(3) 标准应用程序形式,一般为EXE文件;
(4) Web服务形式。
一方面,对模型进行规范化描述是模型管理与服务的第一步,是实现“集中管理”的基础。为了确保上述四种载体形式模型的描述信息准确性一致,同时减轻工作量、提高效率,要求系统尽可能自动提取模型的相关信息,尤其是用于模型调用的语法信息。另一方面,四种载体形式模型调用的方式各不相同,为了实现“统一服务”,要求系统采用先进的软件技术生成具有统一服务接口方式的中间代码。
反射(Reflection)技术是.Net框架中的重要机制,可以在运行时获得.Net中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等信息,同时根据这些信息可以实现实例的动态创建和调用。利用Visual Studio.Net开发平台中的反射技术和配套的系列工具程序(如Tlbimp.exe,Dumpbin.exe和wsdl.exe),系统实现了“托管”代码生成和部分模型描述信息的自动提取,确保了“集中管理、统一服务”的设计思想。
对于不同的模型载体形式,在托管代码生成与模型信息提取时,使用相应的工具来实现,基本过程如图2所示。
COM组件类模型 使用类型库导入程序Tlbimp.exe,提取标准 COM 组件文件中的组件信息,并转换为等效的.Net Framework 程序集。
标准动态链接库类模型 使用Microsoft二进制文件转储器Dumpbin.exe,可以提取32 位标准动态链接库文件中的函数信息,并转换为等效的.Net Framework 程序集。
Web服务类模型 使用Web服务实用工具Wsdl.exe,可以根据 WSDL 协定文件、XSD 架构和.discomap发现文档,提取Web服务信息,并生成等效的.Net Framework程序集。
应用Visual Studio.Net中的反射技术生成托管代码的基本过程如下:
(1) 使用Assembly类型定义和加载程序集,并创建实例。
(2) 使用Module类型获取模块中的类和全局方法。
(3) 使用ConstructorInfo类型获取构造函数的名称、参数、访问修饰符(public 或private)和实现详细信息(abstract或virtual)等。并使用Type类型的GetConstructors或GetConstructor方法调用特定的构造函数。
(4) 使用MethodInfo类型获取方法的名称、返回类型、参数、访问修饰符和实现详细信息等。并使用Type的GetMethods或GetMethod方法来获得特定的方法。
(5) 使用FiedInfo类型获取字段的名称、访问修饰符(public或private)和实现详细信息(如static)等,并获取或设置字段值。
(6) 使用EventInfo类型获取事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。
(7) 使用PropertyInfo类型获取属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。
(8) 使用ParameterInfo类型获取参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法中的位置等。
4.2 模型应用框架
决策问题常常是由一系列相互关联的子问题构成的复杂问题,往往需要多个模型共同求解。一般有两种求解决策问题的思路[9]:一是以功能聚合为导向,自底向上组合现有模型资源,形成满足需要的复合模型来求解;二是以问题分解为导向,自顶向下分解决策问题,逐层细化,将元问题与现有模型关联,形成符合决策问题求解逻辑的模型框架,其实质也是一个复合模型。第一种思路可以在现有模型资源的基础上得到更加灵活、更加丰富的复合模型资源,第二种思路则更加符合人类解决问题的思维习惯,这两种思路相得益彰、优势互补。它们共同的前提是模型库中包含足够的原子模型资源。
本系统提供两种模型应用框架:一是以功能聚合为导向,提供自底向上组合现有模型的功能;二是以决策问题为导向,提供自顶向下分解决策问题、生成求解框架的功能。对两种功能进行统一设计,确保界面风格和操作流程基本一致,功能结构如图3所示,主要功能如下:
可视化编辑 提供模型组合或决策问题分解的可视化编辑功能,完成运行控制流和信息传递流的编辑和设置。其中,问题描述模块描述当前问题或复合模型的基本属性;控制流定义模块以可视化的方式定义当前问题包含的子问题,或当前复合模型包含的子模型之间的顺序、循环和分支及其嵌套关系,形成与问题处理一致的控制流;模型匹配模块采用“用户主导选择、系统辅助提示”的策略,根据模型的规范化、结构化描述信息提供模型匹配的提示,辅助用户为元问题或模型节点匹配合适的模型;信息流定义模块定义与元问题或子模型匹配的模型资源之间的输入输出关系。
脚本生成 脚本生成的实质是利用元问题和关联规则来描述完整的用户视图脚本生成过程中,首先检查组合模型或模型框架的结构完整性和参数完整性。基于EBNF编码格式,模型脚本存储为规范的XML文档,具有语法严格、控制流程明确、支持语法检查、便于管理和修改等特点,因此,也可以面向高级用户。
服务请求 根据脚本中的控制流和信息流描述信息,组装模型及其参数信息形成服务请求报文,向模型服务端发送模型服务请求报文,并接收模型服务结果。
在系统设计与实现过程中,约定如下:
(1) 结构化控制流约定:根据G.Jacopini和C.Bohm的结构化理论,将子问题或子模型之间的控制流程简化为只包括顺序、循环、选择三种基本的结构:顺序结构,或称串行结构,即子问题或子模型按前后顺序依次执行。无条件约束的并行可以转化为顺序结构。循环结构,即一个或多个子问题或子模型在满足一定条件下的多次反复执行。选择结构,根据条件决定选择执行某个分支下的处理。在理论上,三种结构关系可以任意组合和嵌套,但在实际应用中,应该尽量清晰、嵌套层次应该尽量精简。
(2) 数据预处理功能模型化约定:在实际应用中,传递的输入输出参数在类型、长度和精度上往往存在差异性,为此,在定义信息流传递的过程中一般需要进行数据转换和清洗等预处理操作。将数据预处理功能模型化,既减轻了可视化编辑功能的负担,同时使问题求解的结构更清晰和直观。
(3) 输入输出参数约定:当模型通过数据库传递参数时,该参数的数据类型要求为字符串类型、其内容为数据库连接串信息,实际的数据库存取操作由模型完成;通过文件传递参数时,该参数的类型要求为字符串、其内容为数据文件的绝对路径文件名,实际的文件存取操作由模型完成;当模型通过多维数组传递参数时,要求转化为通过数据库或文件进行传递。
5结语
模型辅助决策是决策支持系统中的研究重点和难点。立足于模型资源的现有技术体制,本文设计并实现了一个通用的模型管理与服务系统,支持网络环境下不同载体形式模型资源的统一管理与服务,实现了模型信息的描述、管理与维护,提供了模型组合生成和决策问题求解模型框架生成两种主要的模型应用机制。随着模型资源的不断丰富,以及决策问题复杂程度的不断增加,如何在异构平台上实现各种辅助决策模型资源的统一管理和服务,如何实现模型的自动匹配与快速选择,是进一步需要研究的难点问题。
摘要:模型管理与服务一直是决策支持系统的核心研究问题,现有成果一般只支持特定应用领域下的单一形式的模型资源的管理与服务。结合多模型辅助决策的现实需求,设计并实现了一个通用模型管理与服务系统,实现了网络环境下多种形式模型资源的集中管理与统一服务,并提供以决策问题分解为导向、自顶向下的模型框架生成和以功能聚合为导向、自底向上的模型组合生成两种配套的模型应用框架,为多种形式的模型资源的管理、服务和应用提供了一整套解决方案。
关键词:决策支持系统,模型辅助决策,模型库,模型管理
参考文献
[1]陈文伟.决策支持系统及其开发[M].3版.北京:清华大学出版社,2008.
[2]韩柳欣,王浣尘.决策支持系统构模理论研究现状及展望[A].中国系统工程学会第十一届学术年会[C],2000.
[3]赵莹.决策支持系统中模型表示方法的研究[D].大连:大连铁道学院,2001.
[4]李牧南,彭宏.基于Agent的模型表示与模型复合[J].计算机应用,2006,26(4):891-894.
[5]陈晓红,刘磊辉.DSS模型库管理系统中模型复合技术研究[J].微计算机应用,2004,25(2):141-144.
[6]韩祥兰,吴慧中,陈圣磊.基于多Agent的分布式模型管理与组合方法[J].计算机集成制造系统,2004,10(12):114-119.
[7]李楠,郑晓薇.基于C/S的分布式DSS模型库管理后台服务算法[J].计算机工程与设计,2006,27(2):335-337.
[8]林杰,张丽峰,薛行.基于UDDI的分布模型管理[J].计算机集成制造系统,2004,10(3):276-280.
通用实现模型 篇8
随着电力系统信息化的建设以及智能电网的发展,各类电力应用软件投入越来越多,如EMS/DTS等自动化系统。可视化的图形系统使用户更加有效地对电力系统进行监控、分析、决策,因而每个电力应用软件都有各自的图形界面作为支撑[1,2,3]。电力应用软件的图形绘制普遍采用专用的图形编辑器来实现,通过用户手工绘制和维护这些图形。而实际电力系统的厂站数目是相当可观的,厂站内的接线形式多样,元件数目众多,绘制这些厂站图需要付出相当艰苦的劳动。
目前,真正实现自动绘图的软件较少,有相关文献提出了厂站图自动生成的原理,但其原理比较复杂,实际应用于系统软件效果不佳[4,5,6,7]。本文实现的接线图自动生成是基于目前已开发的图形平台,该图形平台利用面向对象技术创建电网资源,这可以使图元和数据模型一一对应,即图模库一体化,在此平台的基础上利用电网资源拓扑关系和最大化接线方式的电网框架模型排布为依据,通过相关规则的定义自动生成厂站接线图。实现自动绘图不仅能极大地减轻工作人员的负担,提高系统自动配置的能力,而且更有效地支持调度决策,是实现智能化调度的关键技术之一。
1 厂站接线图的自动生成原理
通过对大量厂站图结构的分析可以看出[8]:
1)厂站图反映的是发电厂、变电站以及不同电压等级母线的进出线情况。图中显示的元件主要是母线、开关、变压器、电抗器、电容器等。
2)厂站图的画法是比较规范的,各电压等级的母线、主变压器、进出线等的位置具有一定的规律性。其中,同种接线类型的母线之间仅仅是支路数目上的差别,其模式是固定的。间隔的数目决定了母线的出线数,从而决定了母线的长度。
由于此厂站主接线图自动生成系统是作为一个组成部分而镶嵌在其他电力系统应用程序中的,其整体程序设计如图1所示。
厂站主接线图是由各个间隔组成,如果图中各间隔的位置确定了,那么各种元件的位置也就确定下来了,因此各设备间隔是绘图的基本单位。
根据厂站接线形式是相当规范这个原则,可以采用将有关厂站接线类型及其图形设计的知识和经验整理定义成规则,建立一个可由用户扩充的规则数据库,使图形的绘制问题得以解决。
1)将最高电压等级的母线布置在屏幕的左上部,再分析其他电压等级母线所拥有的支路数,利用规则来确定这些母线在屏幕上的位置。其原则是力求屏幕上下两部分各支路间距趋于均匀。
2)根据主变的台数来确定各个主变的位置。
3)搜索电网资源数据库来确定各组母线所包含的支路位置,支路间距可根据屏幕上部或下部的总支路数而计算出来。
4)基于最大化的电网框架模型和电网拓扑数据库来确定元件之间的连接关系。
2 软件图形系统和网络拓扑结构的表示
2.1 软件图形系统
本图形系统设计了具有Windows风格的界面,创建了一个工作区间窗口,以进行图元编辑及管理,并设计工具条以及一系列界面美观、交互方便的对话框。图形界面如图2所示。
图形系统实现的功能如下。
1)元件管理功能。实现元件的创建、元件的删除,以及元件之间的连接关系等。
2)图元定义功能。开发图元编辑器,使用户可以便捷迅速地定制出所需样式的设备图元。
3)图形编辑功能。设置元件的属性(参数、外形的改变、旋转、可见性等)、元件的拷贝、粘贴、搜索、命名,元件对齐等。
4)图形显示与应用功能。主要包括图形元件的显示,元件颜色的变化,元件的闪烁,文本数据的显示,图形的缩放、图形的打印,整图或区域内图形的拷贝、粘贴、删除,图形背景设置等。
5)图形系统接口。图形系统的接口是系统与外界联系的手段。接口有四大类:图形系统外部应用接口、标准消息接口、图形数据库接口、层显示窗口的驱动与窗口消息处理接口。当平台与数据库进行连接时,采用微软标准的ADO数据库接口访问数据库;当平台与其他应用程序进行连接时,只要更改设置文件中的数据源字段即可。
2.2 网络拓扑结构的表示
从系统结构上来讲,需要把图形元件及拓扑信息切分出来,组成反映电气设备参数的信息库、元件及元件连接信息的电网资源数据库,以及存放拓扑结构数据的网络拓扑结构数据库,在构成系统的网络拓扑时,分别编制相应子系统的网络拓扑结构表。为实现基于图形描述的节点/支路的电网设备拓扑结构模型,每个子系统网络拓扑结构表中都有设备端点描述,即标端1、标端1名、统端1、指定连接。界面如图3所示。
3 自动绘图的实现
3.1 自动绘图规则库的建立
为实现计算机自动绘图,主要的工作是正确地制定自动绘制的规则库和通用电网框架模型,在分析、设计和实现时,应使规则的描述与所面对的实际绘图思想一致。其基本思想是,首先将图形界面做粗线条划分,然后用摆放节点中主要母线的方式,确定各个节点的大致方位与空间,同时在节点间留有足够的间隔,以宜于长距离支路的绘制,再绘母线间元件,最后完成图元之间及元件与母线间的简单支路(短距离,无转折点)和复杂支路(远距离,有转折点)的绘制。通常将规则分为以下几类。
1)设备间隔类型的定义:每条规则对应着一种接线方式下的设备间隔类型,包括了该间隔所含的各种元件及相互连接关系。
2)布线规则的定义:每条规则对应着布线时分析计算的一个步骤,包括了分析的对象,分析的方法,如根据母线的出线数目计算母线的长度。
在进行推理时,先通过启动一个规则库编译模块,读入规则库文本文件,生成规则的双链表数据结构和节点推导的规则表和目标节点表的链表结构。以数据库中电网拓扑结构作为前提采用自上而下的方法建立推理网络。设计对规则在自动绘图时进行最有效的解释与选择的控制模块。控制模块采用正向链推理,规定了如何选择一条可用的规则对信息与图元数据库进行操作,即决定着问题求解过程的推理路线。在自动绘图的问题上,控制策略来源于对接线图结构特点的分析,当对这些控制策略优化组合之后,就可以极大程度地减少问题搜索空间,提高布线效率。
3.2 各线路模块的布线
将图形编辑空间分为五个模块,分别为:高压线路模块、主变压器模块、中压线路模块、低压线路模块、以及附加模块。
1)在高压线路模块中,接线方式一般有单母线、双母线、双母线分段、双母线带旁路等,可以根据建立的电网资源类型来自动确定高压线路模块中高压母线的布线情况。
高压线路模块由多个间隔构成,包括线路间隔、母联间隔、主变间隔、母分间隔、PT间隔等。其中,每一个间隔的高度是一致的,其宽度根据不同类型的间隔相应地改变(用户可以事先制定每一个间隔的宽度),这样,高压线路模块的宽度就是由这些间隔的宽度相加而成。高压线路模块就是将这些间隔组合起来,如图4所示。
在制定每一种接线方式下的通用电网框架模型时,要使其中所包含元件的数量最大化,这样当对应的间隔中不含某电力元件时,只需不显示对应位置上的设备即可。如双母线的出线间隔,电网框架模型设置了Ⅰ母刀闸、Ⅱ母刀闸、断路器、线路刀闸、两个断路器接地刀闸、一个线路接地刀闸和一个内节点。出线模型如图5所示。
布置间隔时,将线路出线间隔布在母线上方,将电压互感器间隔布在母线下方,将母联间隔布在母线上方,将主变间隔布在母线下方等。
2)在主变压器模块的设置中,主要是设置主变压器模型的位置。首先,搜索电网资源中主变压器的台数以及种类,并在电网资源模块中规定多个变压器按照从左到右的顺序排列,然后按照搜索的变压器的个数将主变压器模块分为多个间隔,再根据变压器的先后顺序一次在对应的间隔中绘制不同的变压器。如图6所示。
如图6所示,搜索到该厂站的电网资源中,有两个主变压器,且顺序先后为双绕组变压器和三绕组变压器,则将变压器模块分为两部分,且按先后顺序将双绕组变压器和三绕组变压器依次排列在该模块中。
3)在中、低压线路模块和附加模块中,其方法和高压线路模块基本相似,根据各模块中需要的间隔将该模块分为许多个子模块,然后在事先生成的母线之后,依次将各个间隔排列在各子模块中。其中,一般规定中、低压线路的出线间隔排列在母线下侧,主变间隔排列在母线上侧,这样能够使绘制图形看的美观。
3.3 线路的走线
每一个子模块的虚线附近均留有一定的走线空间,为的是给各个节点之间连接预留线路的位置,合理、清晰、整洁的线路图形,将使线路产生的交点数最少,使用户查看厂站图更直观,具体的走线方法如下:
1)直接走线法。当两个节点在纵向或者横向相邻时采用,直线连接两节点即可,见图7(图中代表引出线连接处)。
2)双折线法。当两个节点在横向、纵向都不相邻时采用双折线,可以完成任意两个节点的连接,见图8。
3)四折线法。在躲过节点、支路时采用四折线,如图9。左右两个节点本来可以直接相连,但是由于中间节点的存在,于是采用四折线法。
3.4 应用与测试
自动绘图功能已通过测试,作为图形系统的一个重要组成部分。系统已成功地自动生成了呼伦贝尔地区电网调度所辖的各个厂站接线图。图10是自动生成的金河变。
4 结语
本文在对电网的拓扑结构特点和厂站主接线图的规范性及规律性分析基础上,利用计算机图形理论、数据库技术和人工智能技术,对电力系统厂站接线图自动绘制系统进行了深入研究。
系统自动绘图功能基于规则集的技术,以电网资源拓扑关系和最大化接线方式的电网框架模型排布为依据,自动生成厂站接线图。通过实际对比,完成一个包括100个厂站的地区电网,由人工绘制一般需要将近一个月的时间,系统自动绘图的实现则可大大减少工作量,只需要一周的时间便可完成图形的绘制工作。自动绘图的实现对提高工作效率具有非常重要的意义。本系统提供了通用的图形平台,在数据库基础上为其他电力系统分析软件提供接口。
参考文献
[1]尹亮.基于图形化主接线图的电气连通性分析和研究[J].电力系统保护与控制,2009,37(15):65-68,74.YIN Liang.Study and improved arithmetic about electrical connectedness of main electrical scheme[J].Power System Protection and Control,2009,37(15):65-68,74.
[2]赵有铖,赵曼勇,贺春.继电保护故障信息系统建设经验谈[J].继电器,2006,34(6):64-66,70.ZHAO You-cheng,ZHAO Man-yong,HE Chun.Experience in the project construction of fault information system for relay protection[J].Relay,2004,34(6):64-66,70.
[3]杨道驰,冯根生,方龙,等.基于交互式图形系统的电力参数图元的建模[J].电力系统保护与控制,2010,38(14):144-148.YANG Dao-chi,FENG Gen-sheng,FANG Long,et al.Modeling of electric parameter by graphic elements based on interactive graphic system[J].Power System Protection and Control,2010,38(14):144-148.
[4]李晓凯,周长健,许和炎.配电网管理中的自动制图的研究[J].继电器,2008,36(6):65-67,70.LI Xiao-kai,ZHOU Chang-jian,XU He-yan.A new automatic mapping algorithm in power distribution management[J].Relay,2008,34(6):64-66,70.
[5]王治华,董树锋,张王俊,等.输电网单线图自生成的新方法[J].电力系统保护与控制,2010,38(18):155-161.WANG Zhi-hua,DONG Shu-feng,ZHANG Wang-jun,et al.A new method for auto-generation of power grid one-line diagrams[J].Power System Protection and Control,2010,38(18):155-161.
[6]章坚民,楼坚.基于CIM/SVG和面向对象的配电单线图自动生成[J].电力系统自动化,2008,32(22):61-65.ZHANG Jian-min,LOU Jian.Automatic generation of single-line diagram for distribution feeder systems based on CIM/SVG and object orientation[J].Automation of Electric Power Systems,2008,32(22):61-65.
[7]沙树名,林峰.一种基于CIM的厂站接线图自动生成技术[J].电力系统自动化,2008,32(10):68-71.SHA Shu-ming,LIN Feng.A technique of automatic generation of substation wiring diagram based on CIM[J].Automation of Electric Power Systems,2008,32(10):68-71.
通用线程模型研究 篇9
在现代应用程序中, 为了用户界面的更加友好, 程序运行的更加流畅, 使用多线程进行任务的处理已经是主流的选择。但是多线程程序开发中, 我们往往会遇到以下问题:
(1) 在访问共享的数据时, 使用加锁方式实现。但这种方式在程序规模增长到一定程度后, 会不可避免地带来程序的低效、死锁等问题。 (2) 简单地为每个耗时的任务创建一个线程;这种模式首先造成资源的浪费, 其次当大量线程被创建出后, 会耗尽系统的资源从而导致系统变慢或死机;即使是正常关闭, 大量线程在关闭时的等待也将是一个漫长的过程。 (3) 任务执行完后, 通过回调通知发起者任务, 但可能发起者已被销毁, 从而导致程序的崩溃。
采用线程模型, 及约定开发人员以事先制定的模式工作, 能避免上述问题。线程模型的设计目标概括为以下几点:
(1) 除了在线程模型的管理和调度模块, 整个应用程序避免使用任何形式的锁。这样能避免程序低效、死锁等问题。 (2) 线程模型应提供能动态调整的线程池来执行用户提交的任务。 (3) 线程模型应提供统一的接口让用户提交任务、设定定时任务、设定任务过期条件、取消任务、存储任务和提供回调等, 避免在每个模块做同样的工作。 (4) 合理调度任务, 保证共享数据的安全。 (5) 线程模型应管理每个服务和回调的生命周期, 使应用程序避免崩溃。
如图1所示, 用户任务通过线程模型接口提交, 提交过程是异步的, 可立即返回;任务通过线程模型接口, 添加到服务存储和管理队列;任务分派程序会选择合适的任务提交到线程池中, 执行用户的任务, 完成时调用回调函数;通过生命周期管理, 当回调的对象销毁时, 自动取消回调。
1 线程模型的组成部分及其功能
一个完整的线程模型至少应包含以下组成部分:
(1) 线程模型接口; (2) 任务存储和调度线程的管理; (3) 任务的分派; (4) 线程池的管理; (5) 线程模型的辅助设施。
1.1 线程模型的接口
1.1.1 创建线程模型管理
线程管理模块在主程序入口处被创建。确保用户的各个模块都能调用到线程模型的各种接口。
1.1.2 销毁线程模型管理
线程管理模块在主程序出口处被销毁。销毁时, 线程管理模块保证正在被执行的任务执行完, 同时取消正在队列中等待的所有任务。
1.1.3 添加一个新的任务
线程模型提供辅助设施来协助用户创建任务。任务将有6个属性:command, callback task_id, group_id, priority和timeout。
1.1.4 设定任务分组
如果有些任务需要访问共享的数据, 这些任务将按顺序被放入线程池执行, 避免多线程同时访问共享数据。通过给这些任务赋予相同的ID, 任务分派模块就会自动的将相同ID的任务顺序放入线程池。
1.1.5 设定任务回调
任务回调在任务执行完成后被工作线程调用, 回调过程如需线程切换, 可通过线程模型的辅助设施来实施。
1.1.6 设置任务优先级
每项任务都有自己的优先级, 高优先级的任务将优先被放进线程池执行。
1.1.7 任务超时
有的任务会有一个执行的期限, 如超过这个期限, 回调函数将被执行。
1.1.8 取消任务
用户发起任务后, 在等待任务执行的过程中, 可能需要取消任务。此时, 如任务在等待的队列中, 任务将被删除。如任务已在线程池中被执行, 则断开该任务连接的回调函数。
1.1.9 重试任务
在某个任务失败后, 回调函数会通知用户此次执行失败和失败的原因。用户可通过重试该项任务, 重新将任务发送到存储队列中等待执行。
1.1.1 0 预约任务
用户希望在一段时间后启动某些项任务, 需要接口支持预约任务。
1.2 任务存储和调度线程的管理
1.2.1 任务及其回调的存储
采用多索引容器 (boost::multi_index_container) 形式来存储任务, 同时按照task id, priority和group id为任务建立不同的索引。这样, 不但在查找相应任务时效率更高, 而且也保证了插入或者删除数据时候的效率。[1]
1.2.2 任务管理及回调
(1) 由于用户可能在任意的线程调用线程模型, 来添加希望的服务。为避免本文开始提到的对共享数据加锁的问题, 需将任务的添加工作切换到任务管理线程执行。 (2) 维护用户任务的状态, Scheduling, Pending or Processing也需在管理线程进行。 (3) 在回调发生的时候, 需移除相应任务并触发用户预先设定的回调。回调必须在管理线程中执行, 需检查管理线程中该任务是否被取消。 (4) 用户可能不断添加新任务, 线程池会添加任务完成的事件到管理线程。同时, 用户可能会取消之前添加的任务。以上操作会影响到共同数据, 因此必须按顺序执行。但这样会导致大量添加新任务的操作, 导致分派任务一直无法得到执行;在这种情况下, 管理线程一直处于忙碌状态, 但是线程池却处于空闲状态。因此, 对于不同的任务的添加, 也需设定优先级。一般来说, 完成任务的优先级设为Medium, 用户取消任务的优先级设为High, 而添加任务的优先级设定为Low。
1.2.3 防止任务无限制占据线程
对线程模型来说, 用户创建的任务是不可控的。因此, 会发生由于用户任务错误导致线程池的线程进入死循环, 使得线程丧失继续服务的能力。线程调度管理程序如不能及时发现死去的线程, 将有可能导致线程池所有线程被占用, 从而导致用户所有任务均无法执行。一般可以记录上次该线程回调发生的时间。如超过指定时间范围而无响应, 可强制该线程关闭后重启或者关闭相应任务, 并重新添加线程到线程池。
1.2.4 定时器组件
为实现用户预约任务, 必须实现Timeout部件, 并在到期时, 将回调的执行过程控制在管理线程中。实践中, 可考虑用Boost::asio::deadline_timer。
1.2.5 内存池的管理
当等待任务多时, 增加线程池中线程的数量。当等待队列很少或为空时, 减少线程数量。增加减少不宜太频繁。一般根据一段时间内处理的任务数来决定开启的线程数。
1.2.6 任务回调的生命周期管理
对于回调任务, 一般需做两件事。第一, 确保回调发生在指定线程。这一点, 1.4节将会专门讲述。第二, 确保回调所依赖的对象存在;如所依赖的对象已被销毁, 那么就取消该回调。实现可采用boost::signal模式, 只要求回调所依赖的目标对象从boost::signals::trackable[2]派生即可。
1.3 任务的分派
任务的分派需要遵循以下原则:
(1) 分派单元的运行需确保在任务管理线程中执行。 (2) 分派单元按优先级取任务, 放入队列中执行。 (3) 如果标记为某个group id的任务已在线程池中运行, 那么该任务结束前, 同样group id的任务不能被再次放入。 (4) 添加任务时和complete task时均可尝试重新分派任务。
1.4 线程池的管理
线程池需提供的功能有:
(1) 启动指定数目的线程。 (2) 任务能够通过接口添加到线程池的队列中。 (3) 运行时动态增减线程数量。 (4) 退出时确保运行中的任务执行完毕。
1.5 线程模型的辅助设施
线程模型需要提供的辅助设置有:
(1) 创建任务。 (2) 创建回调命令。 (3) 提供Factory机制, 使目标线程可以注册相应的命令到Factory。该命令可将任意命令切换到线程执行。
2 线程模型的执行过程
线程模型执行的过程如图2所示。
线程模型的使用者通过接口创建线程模型并拿到需要的接口。通过线程模型提供的辅助函数生成任务后, 调用线程模型接口, 把任务添加到线程模型管理的任务队列。管理线程, 在任务队列不为空时, 选择合适的任务, 并将完成任务的事件和任务命令绑定。将组装好的命令放入线程池中去运行。执行完毕后, 完成任务的事件被触发, 并切换到管理线程。该事件将进行下一轮任务分派。
3 线程模型优化策略
对于不同的应用场合, 线程模型有着不同的优化策略。优化策略一般考虑的环节有:
(1) 是否充分利用每个线程的执行能力。 (2) 是否最大限度地减少了任务在线程之间的调度。 (3) 有些任务只读共享的数据, 有些需写那些数据。如果能将读写任务区分对待, 那么读数据的任务就可以同时添加到线程池中。 (4) 调度管理程序处理添加和完成任务的优先顺序, 及任务的存储结构。 (5) 任务队列的动态规划。
4 总结
无论在客户端UI编程, 还是在服务端编程, 线程模型都是一个非常重要的设施, 能提高程序的稳定性和可维护性。对于规模较大的系统, 这是一项非常重要的基础设施。本文结合在工程中的实践经验, 详尽分析了设计一个线程模型时需考虑的目标、结构、接口及模型的工作流。实践中, 这种线程模型能帮助应用程序简化设计, 提高稳定性, 提升效率。
摘要:本文详细描述了在实际商业系统上的通用的线程模型, 通过阐述其设计目标、工作原理、组成结构以及优化策略, 详尽的对线程模型进行了解读, 同时阐明了使用线程模型的优点和必要性。
关键词:线程模型,BOOST,ASIO,线程池
参考文献
[1]王凤岭.分布式操作系统中线程包实现方法的对比研究[J].南宁职业技术学院学报, 2004 (04) .
[2]陈矫阳, 陈楸, 刘桓龙.基于LabWindows/CVI多线程数据采集的研究[J].科学技术与工程, 2008 (09) .
[3]周仕祥, 刘伯恕.Boost功率因数校正器的效率和空载损耗研究[J].电力电子技术, 2003 (03) .
通用实现模型 篇10
关键词:智能仪表;STM32;CAN总线
1 系统设计
STM32微型处理器用的是Cortex-M3内核,外面的接口非常多,主频高达72MHz,它是一种能远程控制的仪器,CAN能被广泛应用到很多行业,优点很多。如功能强大、可靠性高、技术先进且成本合理等。CAN总线可以支持多主,通信率高达1Mbit/s(间离小于20m),用这种方式来布置线路,方便性和可靠性大幅度增强。下图就是智能仪表的设计图。
2 关键硬件设计
STM32可以用在很多设备上,可以根据用途,选择合适的科学的硬件要求。这种系统还有一个强大的功能是能裁剪,我们可以按照需求对硬件进行调整,找出适合我们,经济实惠的进行使用。
2.1 核心处理器
核心处理器使用STM32F103VC,内核是功能强大的32位RISC,工作频率为72MHz,内部安装高速的存储器,能够增强I/O的端口并能连接到两条APB的总线;有三个十二位的ADC,能够提供十五种采样通道或者多种模式;DMA控制器的通道很多,高达十二个,能持的外设种类更多;还包括四个十六位的定时器与两个PWM定时器;通信标准接口很多,工业领域非常适合;带4个片选的灵活的静态存储器控制器,支持SD卡、SRAM、PSRAM、NOR和NAND存储器;提供并行LCD接口,兼容8080/6800模式;采用LQFP100封装,提供80个GPIO;除了模拟输入I/O,其他管脚可以承受5V信号输入;供电范围非常宽,两伏到三点六伏之间,还有能编程的电压检测器,让整个系统的工作更稳定,抗干扰能力更强,把温度传感器与内部ADC直接相连,能更简便的监测器件周围的环境;最适合的温度是四十到一百零五摄氏度,达到工业生产中的应用需求。
2.2 抗干扰设计
内部建设也重要。每种电路里面含有两种类型的信号,一类是模拟信号,另一类是数字信号。两类中抗干扰能力最强的是数字信号,但是噪音很大,它就成了模拟信号的主要噪声源,因此要重视两种信号的隔离与去耦。用5V电源输入,要在输入端加入相应的去耦电容。STM32有各种各样的规格,差别很大,VDD/VSS可以分为两种,一是多组管脚,二是一组管脚。它的内部的所有VDD和所有的VSS是相互连接起来的,但在芯片的外部还是要连接起来。原因是导线太细,仅仅把内部的线路连接,负载能力会远远降低,抗干扰能力也大不如以前,要是漏接,会损坏线路和降低抗干扰能力。
2.3 键盘设计
董事通用素质模型探讨 篇11
一、董事个人特征与公司绩效
董事会的任务是指导 (Direct) , “董事” (Director) 一词就是这么来的。董事的职责和任务可以利用一个简单的框架进行总结 (见图1) 。
(资料来源:鲍博·特里克:《董事与公司治理》, 北京:中信出版社, 2005。)
董事会被看作是公司内部一种重要的治理结构机制, 它对经理作出的决定进行管理, 评价经理人的业绩;它决定公司的主要战略、政策和制度制定, 监督公司的内部控制和财务管理系统。显而易见, 如果董事会能有效地指导 (Direct) , 这样的公司的业绩将会超过那些董事会未发挥作用的公司。
那么, 为了充分发挥董事会在公司治理中的作用, 我们需要什么样的董事人才队伍?为完成这些职责和任务, 董事需要具备什么样的知识、经验和能力?这些知识、经验和能力与公司绩效之间的关系怎样?
董事会人才队伍对公司业绩有重要的影响。瑞克·海斯 (1997) 调查了董事会的人员构成和质量对公司业绩的影响这个问题。结果表明, 董事会质量较高的公司具较董事会质量较差的公司有高的累积股票回报。
就董事个人特征与公司绩效之间关系的考察, 美国《商业周刊》1978年发表了一篇研究报告。该研究报告设计了一份调查问卷, 包括专业知识、管理经验、服务能力、任职经历、个人形象、资产联系、连锁关系、持股情况等11项董事的个人特征, 每个特征都被赋予不同的权重。报告以每股收益、净资产收益率和样本公司在《财富》杂志上的排名作为绩效衡量指标。共有43家公司的近100名董事接受了调查。结果表明:跨国经营经验、社会责任、共同管理等个人特征日益成为新的评价热点, 对董事专业知识能力的要求在强化。
自1996年起, 《商业周刊》开始每年都要评选出美国公司中的最佳及最差董事会。《商业周刊》对公司董事会进行评价时主要采用的四个标准中就包括“董事的素质”标准。
二、关于“董事的素质”的论述
董事的任职素质, 特别是董事的胜任特征 (Competency) , 基于所谓的“冰山”模型。在该模型看来, 冰山水面以上的部分是知识和技能, 其特点是可易观察、可测试的, 如专业知识、管理知识、计算机操作技能、语言表达技能等。冰山水下部分是自我认知、社会认知、个性品质和动机, 它们隐藏在行为的背后, 但对人的行为以及行为后果却起着更关键的作用。一个人的职业成功, 主要源于人的动机、个性品质及认知, 而并非其知识和技能。推而论之, 技术出身或经营出身的人成为优秀的董事的关键不在于专业多强, 而在于其个人内在的动机、认知等是否更符合董事作为职业决策人的任职要求。
为了适应瞬息万变的经营环境的要求, 世界各国对董事的最低技能标准做了明确要求 (见表1) 。例如以下机构就明确要求, 董事应该在财务会计、国际市场、经营管理经验、工业知识、客户经验、应付危机能力、领导或战略规划能力、商业判断等方面具有专长或经验。
“选拔董事候选人时, 董事会应考虑它自己和它所服务的组织的需要。”为帮助各公司出色地完成选拔董事 (包括独立董事) 的工作, 全美公司董事联合会 (the National Association of Corporate Directors) 蓝带委员会提出了一般准则如下。
(资料来源:王璞、赵月华:《母子公司管理》, 北京:中信出版社, 2003。)
其一, 董事的个人特征。蓝带委员会提出, 要具有董事会成员资格, 董事个人应具有以下特征:正直和责任心、见多识广的判断、财务知识、成熟的自信和高业绩标准。
其二, 董事会的核心能力。为了充分完成董事会复杂的任务 (从监督审计和管理业绩到对危机进行反应和批准公司的战略计划) , 蓝带委员会还强调董事会作为一个整体应具备以下所有的核心能力, 并且每位董事至少应在一个领域内贡献其知识、阅历和技能:会计和财务、商业判断力、管理才能、危机反应、行业知识、国际市场、领导才能、战略/远景。
英国董事协会 (Institute of Directors) 也对董事的素质提出了要求。英国董事协会2001年曾在他们的出版物《董事会标准》一书中, 列出了35种个人特征被认为是高效率董事会的董事们应展现的重要品质, 这些品质又被分为六组:战略洞察 (Strategic Perception) , 包括变革倾向、战略认识、远见等;决策制定 (Decision-making) , 包括批判力、决断力和判断力;信息分析和使用 (Analysis and the use of information) , 包括细节意识、计算能力、问题识别等;沟通 (Communication) , 包括倾听、坦诚、表达能力等;与他人互动 (Interaction with others) , 包括自信、正直、学习能力等;目标实现 (Achievement of Results) , 包括经营头脑、承担风险、坚韧等。
同时, 还有不少公司治理专家、学者在公司治理研究及董事会运作实践中, 总结出来的成果和建议。英国著名公司治理专家鲍博.特里克 (Bob Tricker, 2003) 认为, 董事的素质和作风在很大程度上决定董事会的有效性。一个优秀的董事应当具备三个特征:刚正不阿、能力出众、知识丰富。刚正不阿是最重要的, 董事应当维护股东的利益, 有责任促使公司为股东的利益公开和诚实经营;董事需要有特定的核心能力, 例如, 战略眼光、推理和筹划能力、决策能力、沟通技巧、政治意识和交际能力;不管哪个董事, 若想要弄懂董事会的信息, 并对董事会的讨论题目提出有价值的意见, 就必须具备一些重要的知识:公司实体知识、企业管理知识、财务知识等;另外, 董事还要有独立意志 (献身精神、性格独立、意志坚定、敢于直言) 。
美国波士顿咨询专家卡特及其同事洛尔施 (Colin B.Carter&Jay W.Lorsch, 2003) 提出董事的六项基本素质。才智:是否能理解之前未接触过的业务?是否能敏锐觉察主导企业发展的真正动因?人际交往能力:善于倾听, 以平等协商达成共识的技巧。直觉:敏锐的商业直觉和判断力, 临场应变和精明的经商感觉, 能很快抓住问题核心。兴趣:有激情、积极投入的状态。投入精力的承诺:投入状态认真完成任务。诚实正直:愿意承担责任, 做对公司有利的事情。
法国公司治理专家贝特朗.理查和多米尼克.米艾莱 (Bentrand R ichard&Dominigne Miellet, 2005) , 提出“理想董事”概念, 认为“理想董事”个人优点出自六大方面:战略眼光和决策;分析意识;沟通;人际关系;团队工作意识;要具备的能力———参与和能量、动力、果断、独立、投入。
我国学者王中杰在《董事的修炼》 (2006) 一书中根据董事会性质和公司治理作用提出董事素养的5I原则。认为那些运转良好的上市公司, 公司治理需要的5I原则会发挥出重要的作用, 为公司治理保驾护航。保持独立 (Independence) ;注重诚信 (Integrity) ;充分了解 (Informed) ;全力参与 (Involved) ;积极主动 (Initiative) 。
除此之外, 国外有一些学者从个体心理与行为微观的角度对董事行为进行专门的实证研究。英国亨利管理学院的Dulewicz和Herbert (1999) 通过长达七年的跟踪调查研究发现, 董事在计划和组织、风险承担、人际方面、控制、激励他人、魅力和魄力、结果导向、成绩和动机、竞争性等特征方面, 与其他人有显著的差异。这些特征是作为一个领导者应该具备的, 故董事角色的本质是领导行为 (Direction) 。Garratt (2001) 认为, “领导” (Direction, 而非Management) 首先是“脑力”活动, 在本质上反映了一种高瞻远瞩的智力过程。因此, 他从思维偏好角度对180个英国董事的思维方式进行研究, 发现构想力和信息分析能力是董事会运作的重要部分。
三、董事通用素质模型
以上皆为对董事个人特征的要求和一般论述, 但未很好地区分冰山水上部分和水下部分, 更未从建模 (Modeling) 角度去考虑。素质模型或胜任特征模型 (Competency Model) 建构的方法, 本文是通过对董事会职责和董事工作内容界定和深入的工作分析以及对胜任特征文献的研究, 总结董事素质的核心特征。
关于董事胜任特征模型, 美国管理学家和组织行为学家纳德勒 (David A.Nadler, 2005) 提出了一个董事能力模型, 包含3个主要因素:个人特点、技能和代表因素。如图2所示。但纳德勒的董事能力模型并没有对冰山水下部分和水上部分做严格区分。因为根据胜任特征的“冰山”理论, 冰山水下部分是素质建模最关键的内容。
根据董事会职责和任务并综合以上各位专家和学者的观点和研究, 本文提出一个关于董事胜任特征的通用模型。该模型的建构遵循以下四个原则:能够体现董事的职责和任务;集中于描述行为模式、动机、思维模式、价值观等本身 (冰山水下部分) ;模型内部结构合理、特征组块间的关系符合逻辑;具有冲击力的视觉形象设计。
以下环行图 (图3) 即为有效董事胜任特征模型。该模型构成因素包括信息分析 (Information analysis) 、战略构想 (Strategic thinking) 、目标实现 (Achievement of objectives) 、责任 (Accountability) 和经理人发展 (Development manager) 五大特征组块。环行中的箭头体现了内部特征组块间的关系。
首先是“信息分析”, 人们需要从各种可能的来源中搜寻各种可能相关的信息, 辨认问题和识别可能或实际的原因, 意识到各种影响公司所面临机会和威胁的因素;能够对相关数据 (特别是财务数据) 和统计信息进行分析, 理解其差异性, 并做出合理的解释;另外还需保持对外部各种力量和政治关系的敏感性。其次是“战略构想”, 能够深刻理解并阐述公司的愿景、目标, 利用跨学科、多角度甚至全球性眼光看待问题, 构想出公司在未来市场环境中可能的状况和创新的解决方案;敏锐地洞察到新的商业增长机会和盈利模式, 牢牢地抓住所经营产业的发展趋势;同时警惕未来各种危机的来临, 并寻求应对的方法。第三是“目标实现”, 对未来的构想斟酌后果断做出决策, 并投入状态积极推动, 在面对不幸、挫折或不公平的情况下仍然坚定、独立, 为实现目标而努力。第四是“责任”, 在个人责任感和道德使命感的驱使下, 以诚实可信的方式工作, 实现目标, 为股东和利益相关者负责;不把个人利益置于公司之上, 忠于公司的价值准则, 严守董事会秘密。第五是“经理发展”, 在董事职责和任务中保证公司有一个能干的总经理 (CEO) 是最重要的。故善于激励并有效授权以确保经理层的战略执行;能与各种不同的人和机构有效沟通、友好相处, 为经理层争取各方资源。
当然, 不可能指望这些素质每一个董事都拥有, 但作为一个整体, 由于董事会是一个集体决策机构, 可以通过不同董事的多种专长、技能、知识、经验和背景形成优势互补, 从整体上形成强有力的组合。
董事胜任特征模型作为董事的行为和工作能力及绩效的标准, 为董事会明确了一个完整的素质清单。明确素质清单的目的, 一方面就是要发展董事会、提升董事会作为一个整体的质量, 让选任的董事有能力履行其最重要的战略决策和监督职责, 并对其行为承担责任。另一方面, 董事会也不断地考虑公司的实际状况和战略需要, 决定何种董事素质与能力最有利于推进董事会绩效的改进, 有利于公司现在和未来的成功。
摘要:董事作为职业决策人, 其个人特征或素质对公司绩效有重要的影响。世界各国有许多机构对董事的素质做了要求, 也有许多公司治理专家、学者对董事的素质进行了研究和总结。本文采用演绎的逻辑建构了一个“董事胜任特征模型”, 该模型构成因素包括信息分析、战略构想、目标实现、责任和经理人发展五大胜任特征组块, 从而为董事会发展提供了一个完整的素质清单。
【通用实现模型】推荐阅读:
★2018-2019学年高中一轮复习政治通用版:课时跟踪检测(四十一) 实现人生的价值 Word版含解析05-12
实现相关模型09-14
通用管理模型06-28
通用数据模型07-25
通用流程模型08-26
通用模型控制09-13
通用设备模型11-18
通用数据安全访问模型11-18
实现初中实现学习方式转变的途径与方法初探07-05
实现程序07-14