GDS POJO Helloworld例子(2)

续上章

1、 增加flex 项目

a. 增加flex框架到项目中,右击项目名称,找到Flex Project Nature,选中 Add Flex Project Nature.

clip_image002

不要选中任何服务,一路回车结束后,调整Flex Complier的选项,将输入目录清空、将自动产生调试框架禁用、将src改为flex后将src目录中的文件剪切到flex目录中,删除src。

clip_image004

b. 配置Flex Complier

在命令行加入如下参数:

clip_image006

-services 的参数指向上面创建的services-config.xml文件。

c. 编辑Flex Client代码

代码如下:

 

helloworldApp.mxml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <mx:Application  
  4.   
  5. xmlns:mx="http://www.adobe.com/2006/mxml"  
  6.   
  7. backgroundGradientColors="[#0e2e7d, #6479ab]"  
  8.   
  9. layout="vertical"  
  10.   
  11. verticalAlign="middle">  
  12.   
  13. <mx:Style>  
  14.   
  15. .Panel {  
  16.   
  17. padding-left: 8px; padding-top: 8px;  
  18.   
  19. padding-right: 8px; padding-bottom: 8px;  
  20.   
  21. }  
  22.   
  23. .Result { font-size: 26px; color: white; }  
  24.   
  25. </mx:Style>  
  26.   
  27. <mx:RemoteObject id="srv" destination="helloWorldService" />  
  28.   
  29. <mx:Panel styleName="Panel" title="Hello World Sample">  
  30.   
  31. <mx:Label text="Enter your name:"/>  
  32.   
  33. <mx:TextInput id="nameInput" />  
  34.   
  35. <mx:Button label="Say Hello" click="srv.sayHello(nameInput.text)"/>  
  36.   
  37. </mx:Panel>  
  38.   
  39. <mx:Label styleName="Result" text="{srv.sayHello.lastResult}"/>  
  40.   
  41. </mx:Application>  

2、 发布

将项目发布到Tomcat6.0服务中就可以通过URL:http://localhost:8080/helloworldApp进行访问。

3、 小结

通过GDS可以进行简单的POJO构建应用,不过这种方法还不适用大型企业应用,下一章将熟悉GDS与Hibernate的结合应用,GDS可以将Hibernate的Bean通过GAS3功能转换为AS3的数据模型。

GDS POJO Helloworld例子(1)

环境:myeclipse 6.6,flex builder plugin 3.0,GDS 1.2spa,tomcat 6.0

1、 安装

从略。。。

2、 创建JAVA项目

a. 首先安装后启动Myeclipse环境,创建JAVA项目

clip_image002

b. 重名Src为java以区分flex的src。

clip_image004

c. 创建新HelloworldService POJO,并实现sayHello方法。

clip_image006

代码视图:

clip_image008

a. 增加WEB项目兼容包

clip_image002[3]

d. 拷贝GDS包到lib中

clip_image004[3]

e. 配置WEB.xml

代码:

 

web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  
  4.   
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.   
  7. <!– general information about this web application –>  
  8.   
  9. <description>Hello World Sample Application</description>  
  10.   
  11. <display-name>Hello World App</display-name>  
  12.   
  13. <!– handle AMF requests ([de]serialization) –>  
  14.   
  15. <filter>  
  16.   
  17. <filter-name>AMFMessageFilter</filter-name>  
  18.   
  19. <filter-class>org.granite.messaging.webapp.AMFMessageFilter</filter-class>  
  20.   
  21. </filter>  
  22.   
  23. <filter-mapping>  
  24.   
  25. <filter-name>AMFMessageFilter</filter-name>  
  26.   
  27. <url-pattern>/graniteamf/*</url-pattern>  
  28.   
  29. </filter-mapping>  
  30.   
  31. <!– read services-config.xml file at web application startup –>  
  32.   
  33. <listener>  
  34.   
  35. <listener-class>org.granite.config.GraniteConfigListener</listener-class>  
  36.   
  37. </listener>  
  38.   
  39. <!– handle AMF requests (execution) –>  
  40.   
  41. <servlet>  
  42.   
  43. <servlet-name>AMFMessageServlet</servlet-name>  
  44.   
  45. <servlet-class>org.granite.messaging.webapp.AMFMessageServlet</servlet-class>  
  46.   
  47. <load-on-startup>1</load-on-startup>  
  48.   
  49. </servlet>  
  50.   
  51. <servlet-mapping>  
  52.   
  53. <servlet-name>AMFMessageServlet</servlet-name>  
  54.   
  55. <url-pattern>/graniteamf/*</url-pattern>  
  56.   
  57. </servlet-mapping>  
  58.   
  59. <!– default content for helloworld application –>  
  60.   
  61. <welcome-file-list>  
  62.   
  63. <welcome-file>helloworldApp.swf</welcome-file>  
  64.   
  65. </welcome-file-list>  
  66.   
  67. <login-config>  
  68.   
  69. <auth-method>BASIC</auth-method>  
  70.   
  71. </login-config>  
  72.   
  73. </web-app>  

f. 配置services-config.xml

在WEB-INF创建flex目录,在新建的Flex目录中创建services-config.xml文件。

clip_image006[3]

Services-config.xml代码:

 

services-config.xml
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <services-config>  
  4.   
  5. <services>  
  6.   
  7. <service  
  8.   
  9. id="granite-service"  
  10.   
  11. class="flex.messaging.services.RemotingService"  
  12.   
  13. messageTypes="flex.messaging.messages.RemotingMessage">  
  14.   
  15. <destination id="helloWorldService">  
  16.   
  17. <channels>  
  18.   
  19. <channel ref="my-graniteamf"/>  
  20.   
  21. </channels>  
  22.   
  23. <properties>  
  24.   
  25. <scope>application</scope>  
  26.   
  27. <source>org.test.HelloworldService</source>  
  28.   
  29. </properties>  
  30.   
  31. </destination>  
  32.   
  33. </service>  
  34.   
  35. </services>  
  36.   
  37. <channels>  
  38.   
  39. <channel-definition id="my-graniteamf" class="mx.messaging.channels.AMFChannel">  
  40.   
  41. <endpoint  
  42.   
  43. uri="http://{server.name}:{server.port}/{context.root}/graniteamf/amf"  
  44.   
  45. class="flex.messaging.endpoints.AMFEndpoint"/>  
  46.   
  47. </channel-definition>  
  48.   
  49. </channels>  
  50.   
  51. </services-config>  

这个文件在GDS服务启动时会读取分析他,而在Flex编译时也要通过命令行编译他。

到此GDS Pojo HelloworldService的配置已经结束。

转-Mxmlc命令参数及描述








Mxmlc命令行参数及描述列表:

属性

描述

accessible=true|false

是否具有可理解性(如为残疾人提供方便的性能)

actionscript-file-encoding

设置文件编码,如Shitf_JIS

advanced

mxmlc -help advanced,如这样的高级参数

allow-source-path-overlap=true|false

验证source-path中定义的路径是否出现重叠,出现互相包含的现象

as3=true|false

是否使用as3对象模型,默认为ture,如果选false,则es一定要定义为true

benchmark=true|false

是否输出编译时期的详细内容,默认是true

context-root context-path

设置flex-services.xml中的{context.root},如果没有详细定义,那flex将用空值。

contributor name

添加到swf文件里,name是贡献者的名字

creator name

添加到swf文件里,name是作者的名字

date text

添加到swf文件里,text是数据的内容

debug=true|false

是否可以进行调试

debug-password string

远程调试用,设置密码

default-background-color int

默认背景颜色,默认为null,例如: -default-background-color=0xCCCCFF

default-frame-rate int

设置帧数,默认为24

default-script-limits
max-recursion-depth
max-execution-time

定义应用脚本程序的执行限制

最大的递归默认是:1000

最大的执行时间默认是:60,你不能设置比60还大。

default-size width height

设置应用程序的大小,单位是像素

defaults-css-url string

设置css 的路径

description text

添加到swf文件里的描述内容,text是描述的内容

dump-config filename

将次配置内容输出到filename的文件里,如:

mxmlc -dump-config myapp-config.xml

es=true|false

externs symbol [...]

external-library-path path-element [...]

外部类的路径

file-specs path-element [...]

指定源文件去编译,这默认的是 mxmlc编译器

fonts.languages.language-range lang range

指定 Unicode编码语言的范围

fonts.managers manager-class [...]

字体管理器,默认的是 flash.fonts.JREFontManager,也可以使用 flash.fonts.BatikFontManager

fonts.max-cached-fonts string

在服务器缓存上可以保存的最大字体数

fonts.max-glyphs-per-face string

最大限度的字符缓存

frames.frame label class name [...]

将一系列的类名指定到相应label标记的帧上

generate-frame-loader=true|false

绑定到默认的loader类上。

headless-server=true|false

能否设置编译器的执行头文件,如:System.setProperty(java.awt.headless, true)

help

帮助

include-libraries library [...]

连接所有的在swc中的类,不管是否有被引用

includes class [...]

引用具体的类,使用此参数

incremental=true|false

增加编辑,默认的是false

keep-generated-actionscript=true|false

保持原有的as,放在 /generated目录下,默认的值是false

language code

设置swf文件的元数据

lazy-init=true|false

预设字母表的编码,默认是false

library-path path-element [...]

连接SWC 文件得到swf文件,默认的路径是libs目录和相同目录下的所有swc文件。可以用=替换现在的swc,也可以用+=添加。也可以通过配置文件(略)。

link-report filename

打印详细的连接报告

load-config filename

指定编译器详细的配置文件,覆盖所有的命令行参数,可以通过+=连接多个配置文件。

load-externs filename [...]

外部足见的动态连接的信息保存(略)

locale string

将路径定位存到locale,就可以通过{local}调用了,如:

mxmlc -locale en_EN -source-path locale/{locale} -file-specs MainApp.mxml

localized-description text lang

Swf文件的元数据

namespaces.namespace uri manifest

指定mxml文件的命名空间,可以用 uri或本地的证明文件。

optimize=true|false

优化as,减少文件大小,增加性能,默认为false

output filename

指定输出文件名字,如果不指定就用当前文件名。如果路径不存在,将会自动生成。

publisher name

Swf文件的元数据,发布人的名字

resource-bundle-list filename

打印所有源数据包名字,并打包到一个swc文件中,filename将是这个swc的文件名。

runtime-shared-libraries url [...]

指定一系列运行时共享库,如果library.swf web_root/libraries目录下,那你可以使用 libraries/library.swf.来调用。

services filename

指定 services-config.xml文件,该文件用在FDS

show-binding-warnings=true|false

flash player不能探测时,显示警告。默认为true

show-actionscript-warnings=true|false

发生as类错误时,发出提示。默认为true

show-deprecation-warnings=true|false

flex组件显示不可用。默认为true

source-path path-element [...]

添加源路径的路径或文件,会自动寻找mxmlas文件。可以使用通配符包含所有的文件和子路径,连接全部的文件,不能单个使用类和路径,可以使用+=

strict=true|false

输出为定义的属性和函数,也能执行编译时期类型的验证和提供默认参数。默认为true

theme filename [...]

指定主题数组

title text

Swf的元数据

use-network=true|false

指定当前应用程序的网络服务,默认为true.如果设为false就只能访问本地,不能访问网络。

verbose-stacktraces=true|false

默认值为false,只在运行发生错误时候,提供错误显示。

version

编译器的版本号

warn-warning_type=true|false

是否验证自定义警告类型。

warnings=true|false

如果设置false就废除所有的警告,此参数覆盖 warn-warning_typed 的值默认为true

 

 

Granite数据服务:Flex DS的开源替代品

Granite数据服务(granite data services,GDS)是adobe生命周期数据服务(LiveCycle Data Services)和最近开源的BlazeDS(Blaze Data Services)的一个开源替代品。上周,GDS产品发布了1.0版本,它采用LGPL许可方式。InfoQ.com与GDS项目的创建者Franck Wolff进行了沟通,以了解更多关于该开源项目的信息。

Wolff为InfoQ.com的读者提供了GDS的概述:

GDS是adobe生命周期数据服务(LiveCycle Data Services)的一个替代品,特别强调与JEE技术的整合,包括众所周知的Java EE持久化系统(比如Ejb3/Hibernate,完全支持懒加载[lazy-loading])。GDS可以让你使用标准的flex 2及其以上版本的RemoteObjects,它们提供了来自AMF3序列化的全部优点。此外,GDS也为许多技术提供支持:

  • 与流行Web框架服务的互操作性
  • 调用服务器端的Ejb3会话Bean(无论是否使用JBoss Seam扩展)
  • 带有Acegi安全的Spring Beans
  • google Guice服务(加上Warp持久化)
  • 支持POJP服务

支持数据推(Data Push)是GDS 1.0的一个新功能。此外,GDS还提供了一个ActionScript3代码生成器(Gas3),它大大加速了flex应用的开发。GDS和flex Builder IDE、或者免费的Flex SDK一起,可以为开发人员提供一个完整而强大的Flex应用开发、部署框架。

关于项目现状:

GDS过去比较重要的部分(Ejb3、Spring、Pojo和Gas3)已经被广泛采用,而且生产就绪,这就是我们为什么能直 接从0.4跳到1.0版本。目前引进到GDS 1.0中的新功能(Seam、Guice服务、数据推(Data Push))应该会在beta版软件中考虑到。

GDS正由Adequate Systems的两个开发人员(William Draï和我自己)积极开发。此外,由于GDS一年前就公开推出(见GDS文档),所以还有许多来自开源社区的其他人也在为GDS的开发做出贡献。GDS 确定会成为将来基于Flex的解决方案架构的服务器端核心。

关于GDS线路图和RIA架构,Wolff表示:

目前,我们正努力开发一个确保唯一性(每个实体在Flash VM中只存在一个实例)的客户端实体仓库。这个仓库的一个重要功能是当懒关联在Flex端被请求的时候,它们要透明地初始化。某种程度而言,这个功能受到了Cairngorm的启示。

线 路图中另一个重要的发展是改进GDS和JBoss Seam的集成。我认为随着RIA新的发展,从架构的角度来看,我们所面临的风险是又回到了15年前客户端/服务器模式(client/server paradigm)占主导地位的状态。这一趋势能带来与无状态服务器相互作用的有状态客户端(例如简单的数据库前端程序)。尽管这个架构对小型Flex应 用可能是可行的,但我觉得对大型应用来说,这并不是最好的选择。我想在GDS中继续致力于有状态服务器组件的设想,比如说,就像由Seam对话和任务的设 想所定义的一样。

最终的目标是在Flex端建立一个完整的数据管理系统,带有自动表单创建(实体编辑面板)和验证(它在客户端复制Hibernate验证注释)。

Wolff与读者继续分享了GDS中数据推(Data Push)的更多细节:

GDS中的数据推(命名为Gravity)被实现为一种带有通过HTTP发送的AMF3消息、类Comet技术的服务(没有 RTMP、没有特定的因特网 端口),并免费基于Bayeux协议。这种实现对Tomcat 6.0.14及其以上版本、JBoss 4.2.2及其以上版本、Jetty Continuations 6.1.15及其以上版本是可用的。就像Flex文档中描述的一样,Gravity还提供了对JMS适配器的支持。

在客户端代码中,我们 不能使用标准的mx.messaging.Consumer和mx.messaging.Producer,因为Consumer类已经从Flex 3 SDK中移除了。所以,我们要实现我们自己的、带有相同属性和方法的ActionScript类Consumer/Producer,不过有一个区别:属 性“subtopic”已改名为“topic”(是为了确保Flex 2和Flex 3之间的兼容性)。我们还创建了一个特殊的信道(org.granite.gravity.channels.GravityChannel),必须为了 数据推目的地(data push destinations)而在services-config.xml文件中使用它。简而言之,这个信道封装了两个 flash.net.URLStream实例(指令和通道),并支持长轮询(long-polling)传输。

如果你目前正在使用mx.messaging包中的类,你只需要做几个修改即可:

  1. 将所有的“mx.messaging.Consumer”imports重命名为“org.granite.gravity.Consumer”(Producer类也一样)。
  2. 将所有的“subtopic”重命名为“topic”。
  3. 修改services-config.xml中的信道定义。

Wolff还解释说明了一下Gas3的特点:

Gas3的构思是:

  1. 通过写Ejb3实体Bean设计数据库模型。
  2. 让Gas3生成复制了实体Bean属性的ActionsScript3 Beans(即Flex客户端模型Beans),而且有Hibernate工具生成数据库模式(表和索引的创建)。
  3. 用会话Bean、Spring、Guice或Pojo服务写业务逻辑。
  4. 写Flex应用(mxml)。

另外,你可以写自己的Gas3代码生成模板,还能完全自定义生成的ActionScript3类。

InfoQ让Wolff比较一下GDS和BlazeDS:

BlazeDS主要是LCDS的一个子集,它不直接提供任何数据管理功能(参见这张图片)。GDS的设计是为了提供与EJB3持 久化层的完全整合,并带来一个非常重要而独特的特征(LCDS似乎并不提供):当使用像Hibernate一样的对象/关系持久化工具时,如果你不使用任 何懒抓取策略,你可能会面临加载整个数据库的风险。GDS既支持代理(单值关联关系),也为集合支持懒抓取。

此功能基于另一种独特的序列 化特点:外部化(Externalizers)。使用标准的Flex AMF3序列化(BlazeDS或LCDS),只有非临时、非静态的公有属性才能被序列化。你不能序列化和持有ActionScript3 Bean中的私有属性,它们应该保留为私有(例如版本号等)。使用BlazeDS或LCDS实现这个目标的唯一方法是把你的实体Bean写成外部化 (Externalizable)(但是你必须同时在Java端和AS3端实现稳定的readExternal/writeExternal方法,参见这 里)。这是非常繁琐的工作,而且许多源码有潜在的、难以发现的错误(如果你没有实体Bean的源码,它甚至是不可能实现的)。使用GDS外部化,你不用把 你的Java Bean写成外部化,你还能让Gas3来生成你的AS3 Bean(强类型的,带有保持私有的私有属性和懒加载支持)。

BlazeDS 文档说BlazeDS有一个“开放适配器架构”,能让你“轻松地集成JMS、EJBs、ColdFusion组件,以及其它数据源”。从这个角度来看,由 于GDS也基于一个“开放适配器架构”,所以GraniteDS和BlazeDS并没有很大的不同。开发人员已经编写了Spring、Seam、 Guice服务适配器等。GDS还允许你自定义很多其它的东西,包括控制序列化过程的每个部分、支持特殊类型。

令人惊讶的是, BlazeDS和GDS的数据推实现都基于相同的类Comet架构类型。2007年夏季,GDS在其网站上宣布了这一实现选择,比任何BlazeDS的宣 布都要早很多。因此,除了GDS对Jetty有特别的支持(据我所知,BlazeDS只支持Tomcat)外,数据推的实现可能是非常相似的 (BlazeDS的源码还不可获得)。

Wolff提供了一个例子,说明在何处使用GDS会比使用BlazeDS有意义:

如果你是一个使用像Hibernate一样的Java EE持久化技术的软件供应商,你一定会感到支持懒抓取策略的框架的重要性。GDS最重要的特点之一(也是GDS被创建的主要原因之一)就是可能会在客户端 使用与Hibernate脫管对象(detached object)一模一样的ActionScript3拷贝,就如同你在一个规范的Java EE应用的Web层一样。使用BlazeDS的话,这似乎是根本不可能的,这意味着你不能用BlazeDS替代GDS。此外,你还可以使用Gas3的代码 生成功能,它们能实时保存。

InfoQ向Wolff询问了GDS与BlazeDS项目合并的可能性:

我还没有和adobe讨论过这个问题。我猜测Adobe还是想保持BlazeDS和LCDS之间清晰的功能分离(在 BlazeDS中没有数据管理)。另一方面,GDS试图给出一个提供缺少功能的替代实现,它基于众所周知的、广泛采用的Java EE技术。目前我唯一可以说的就是,如果Adobe想在BlazeDS中添加GDS的一些或全部特定功能,我一定认为合并是一个合适的选择。但是在这种情 况下,对我们来说(我猜还有很多GDS用户),问题是要得到一些保证,保证未来的BlazeDS开发能满足我们的需求。

采访结束时,Wolff对开源社区表示了感谢:

我想再次感谢那些来自开源社区的人们对GDS做出的伟大贡献。

(责任编辑:A6)

 

收藏-船舶企业精益物流管理技术

孙爱东,王 波
(上海理工大学管理学院,中国上海200093)

摘要:船舶企业物流与电子、汽车制造业物流相比有其独特性,表现为物流量大、周期长且具有动态性,需要利用精益物流思想重新树立物流管理原则;在内部物流管理方面,需要强化工程基础数据的获取与管理技术,强化作业现场物流管理技术,优化船舶构件编码技术;在外部物流管理方面,需大力采用先进通讯技术,减少采购时间,降低采购成本;物流信息管理平台的建立,是优化物流管理的基础。
关键词:船舶;物流管理;物流技术;信息系统
中图分类号:F506 文献标识码:A 文章编号:1008—5092(2008)02—0017—04

物流一词是第二次世界大战期间从军事后勤学(Logistics)的含义演变而来的⋯ 。物流技术(Logistics technology)是物流活动中所采用的自然科学与社会科学方面的理论、方法,以及设施、设备、装置与工艺的总称。物流管理(Logistics management)是为了以最低的物流成本达到用户所满意的服务水平,对物流活动进行的计划、组织、协调与控制的过程。
一、船舶企业物流的特点
船舶生产与汽车、电子制造业等企业有很大不同,其特点如下。
首先,造船企业属于项目型企业,按订单组织生产,单件小批量;
其次,船舶的建造周期长,交船期有严格的限制,一般来说,从签合同到交船需2—3年的时间,造船企业在建造期间会受到原材料供应、市场、汇率、气象和船东等因素的影响;
再次,船舶的设计周期长,信息量大,并伴随着不断的修改;在生产和设计中,由于项目结构复杂,需要众多专业的协同作业;
最后,造船企业是船舶总装厂,大量的零部件需要外购或外单位协作生产,资金的流动量和占用量非常巨大。
由于造船企业的上述特点,造船企业的物流管理非常复杂,而且与大批量生产企业的物流管理差异显著,由此造成适用于汽车、电子行业的物流管理技术在造船企业并不能得到有效运用,需要针对船舶企业的特点,发展适应于造船生产特色的物流技术。为此,基于精益生产思想,推行精益物流体系,减少物流过程中的一切不合理现象和浪费,并不断加以改进,以达到运输量最少、运输距离最短和运输时间最短的精益化物流,从而实现造船成本、周期和效率的最优目标,是改善我国船舶制造企业物流管理现状的有效途径之一。
二、精益造船物流管理思想
船舶生产系统的价值链是按船舶制造阶段产品的逐步升级,从原材料采购直至终端产品形成为止的一个价值升值过程 J。在该过程中,有许多环节是产品形成和价值增值的必要环节,如钢板的切割、零件的焊接、组装,直到船体分段的拼装;有一些环节是不增值但必不可少的,如零件、部件的运送、装夹和定位;但也有许多既不增值也不必要的环节,如原材料的库存、在制品的库存和多余的劳动动作。从精益思想角度考虑,有必要
加强船舶企业物流管理,删除既不增值又不必要的环节,减少不增值但必不可少环节,以降低对生产时问和空间的影响,实现精益物流管理。
造船精益物流管理就是运用精益思想对企业外部和内部物流、信息流和服务流进行管理,消除供应和生产过程中非增值的浪费,节约运输和存储成本。
三、船舶企业物流管理若干关键技术
船舶企业作为典型的制造型企业,其物流管理的目的是使各个物流环节实现无缝连接,减少人工浪费、资金占用、物料停滞、设备闲置、任务停顿和信息阻塞。造船物流管理中的一切基础理论与实用技术,都是为了使物流更加通畅这一目标而应用。
1、工程基础数据体系生成、管理与应用
工程基础数据是建立、组织和维护企业的各种工程技术和生产要素的数据。这些基础数据包括:产品的结构信息和BOM、工程设计图信息、产品设计信息、生产制造工艺规程、制造资源如机器、加工中心和其它生产要素的数据以及上述信息的历史数据等。
(1)工程基础数据获取技术
由于物流系统涉及的基础数据绝大部分都是由企业的其它系统产生或者提供的,所以通过分析不同子系统之间的关系,建立物流系统与其它系统的接口,获得基础数据。例如,可以由CIMS提供有关生产计划的数据,由供应链系统提供有关采购供应产品的数据,由ERP系统提供有关资源的数据等。
(2)工程基础数据的体系结构和表达形式
在造船企业的物流体系中,流通中心已发展为两大层次的物流节点网络,即区域流通中心网络和车间流通中心网络 。针对这种情况和造船企业复杂的物流系统,可以采用层次化的物流计划系统,采用分层结构进行建模,其模块化和层次化的概念不仅为通用的物流仿真提供了清晰、灵活的解决方案,而且使得系统具有很强的灵活性和可扩展性。
(3)工程基础数据管理技术
数据管理技术关系到物流系统能否高效利用,对于船舶企业物流管理系统中的工程基础数据进行插入、删除、修改、查询和统计、关联等管理功能,提高数据输入、处理、输出的效率和准确性、一致性是关系到物流管理系统能否稳定有效运行的关键。
(4)物流管理工程基础数据应用
产品的经营报价是造船企业与船东签订造船合同的基础,并且产品经营报价中物料报价和估算的准确与否直接关系到造船企业的赢亏。随着船东的个性化需求越来越高,造船企业在与客户的洽谈中面临着在很短的时间内比较准确地估算出船舶产品物料成本的问题。针对这种情况,主要考虑关键设备和关键技术参数,对快速船舶产品报价进行研究,分析造船企业中的产品技术报价的工作流程,提出在集成环境下基于造船企业典型特征的快速物料估算与报价模型,是物流管理中基础数据的潜在应用领域。
2、作业现场物流管理技术
(1)船体建造装配和舾装物流
在船舶产品的制造过程中,建造、舾装和涂装构成了船舶制造的主体,通过对上述几个主体的研究可以建立起适合船舶企业生产、管理需要的物流体系结构,通过对物流业务流程和数据流程的优化建模,实现减少流动资金的占用和在制品的数量,在规定的时间将规定数量的物料配送到规定的地点,从而提高造船企业的资源利用率和生产效率,缩短建造的周期。
船体的装配物流,主要是船体的建造过程中部件的装配、分段的装配、分段的总装、船台装配和涂装等作业的物流。为更好的完成装配任务,需要建立制造执行系统(MES),根据BOM生成和转换技术生成船舶产品完整结构树,将船体的建造分解成若干的系列装配任务,为每个装配和作业任务分配相应的资源,同时自动生成船体装配和零件加工所需要的各种生产信息文件,下达配送各工种的作业任务所需要的资源。
船舶产品的建造主要由船体建造、舾装和涂装3部分组成,其中舾装的物流流程最为复杂。因为舾装作业的工种多、工序复杂、物料需求品种繁多、外协和外购件多、而且多工种交叉作业,所以占用了较长的生产周期和较多的工时。因此,研究舾装件的物流管理技术对船舶企业的生产重要的意义和价值。
舾装件的物流管理技术的指导思想就是由繁化简,将品种繁多数量庞大的物料和零部件按成组技术的原理,按照造船工艺组合成舾装托盘分类管理。由于托盘是现场生产作业的最小单位,也是舾装件的内场制造、采购、集配中心的集配、外场安装的最小单位,因此托盘化的管理能够使舾装件的物流运作流程管理达到标准化、模块化、最优化的效果。

(2)物流流程标准化
物流是企业运作的主线,但船舶制造企业物流信息量大、品种多、变化多,而且覆盖设计、工艺、订购、存放、加工、半成品制造、集配、装配、总装、试验、交货、售后服务等各环节,同时又流转于车间、设备、场地、船台、船坞、码头、库房、协作单位等各场所。另外,由于各个造船厂存在多套系统,多个体系重复,系统之间互相干扰冲突现象时有发生,物流流程的不适应成为普遍现象。因此,物流流程的标准化研究将使物流的流程适用于不同的造船厂和企业内的不同系统,以方便与其它系统模块接口,使物流管理信息系统具有广泛的兼容性和通用性。最后在标准化流程的基础上,对物流流程采用经营过程重组(BPR)技术加以优化,就能够提高船舶企业的物流流通效率,优化物流的流通量。
(3)物料搬运和配送系统的设计
长期以来,我国造船企业重视生产,而轻视被认为是企业第三利润源泉的物流,在整个制造过程中物料任意堆放、积压、无序流动,吞噬着企业巨额流动资金。因此,研究电子商务和精益生产环境下的物流配送和搬运,建立与精益生产相适应的面向CIMS的敏捷搬运系统和网络化配送管理系统,实现物流在时空优化(即及时、按需、准确)配送与搬运,对于提高生产效率,降低成本,优化物资的调配、移位和仓储,保证交船期具有重
要的意义。
(4)WIP(在制品)物流管理
造船企业由于工艺(成组技术)、运输、周转、库存流动和车间之间的运输而存在大量的在制品,在制品的存在不但占据了大量的流动资金、生产空间,更为重要的是在制品的保管和使用前的除锈和再次涂装等附加作业浪费了大量的人力和物力。研究拉动式的准时化物流管理技术,优化物流的流通存量,保证物流过程的连续性,达到减少在制品的数量、提高车间的生产效率的目的。
3、船舶产品构成及编码技术
(1)编码间关联技术
造船物流的全周期中物料实体被不同部门进行了不同的标识,每套编码的分段规则不同,编码间相关联的部分成为唯一继承且表觋了物料实体的信息,因此编码间关联技术的研究就成为编码技术的首要任务。
(2)研究生产、设计编码与物流编码的映射关系,建立中性物流编码
不同的造船厂家在设计部门和生产部门都有自己的一套编码。为了适应不同船厂现有的编码系统,物流编码则必须是中性的(即不是针对某个船厂个体,而是针对整个行业),因而物流编码的建立要确保独立性和相关性的统一。
(3)中间产品虚实耦合编码的研究
现在各船厂中间产品的堆放形式比较混乱,且没有章法可循,因而对中间产品的编码需要特殊的研究,研究其存储过程及其需要的虚实储存仓库,进行虚实耦合编码。需要的研究有:中间产品及托盘的信息表建立,中间产品的结构、工艺及唯一名称建立;中间产品在物流流程标准化工艺过程中时间、空间的信息分析研究;利用中间产品在物流周期中空间、时间的虚实耦合原理建立中间产品的编码体系构架;结合中间产品工艺、结构
的特点,在上述编码体系构架的基础上建立完整的中间虚实耦合物流编码体系。
(4)物料编码的兼容性和可拓展性研究
造船工业的不断发展,船厂造船能力,造船型号的不断扩大,物料编码也不应该只停留在船厂现有的需求能力上,更应该研究其兼容性能和国际接轨的能力。主要研究有:物流中性编码与设计部门结构相似关键编码体系接口技术与转化技术研究;物流中性编码与生产部门工艺相似关键编码体系接口技术与转化技术研究;物流中性编码与管理部门信息、决策编码体系接口技术与转化技术研究。根据企业中长期的目标和预测分析系统对企业将来生产能力的推测,建立相适应的物流编码扩展体系模式;具有强兼容性和拓展能力的中性物流扩展编码的建立。
4、造船过程建模、重构与资源配置研究
物流是通过物流活动来实现的,物流流程是创造物资时间和空间效用的经济活动过程。因此可以认为物流流程是流程的一种,可以采用对业务流程建模的方法来对造船物流过程进行建模。但造船物流过程又有其自身的特点,造船物流过程除涉及物流活动外,还涉及众多的物流资源,如装卸、搬运设施等,因此在流程建模时必须表达出资源元素。造船物流过程中物流时间占产品总时间的比例较大,其物流所占成本较高。因此,对物流过程进行优化、重构更为重要。
5、船舶企业外部物流管理
船舶企业外部物流包括采购物流、销售物流和回收物流。在实际情况中,船舶回收南专门的拆船厂负责,船舶建造企业较少参与,船舶的销售以整船为单位与船东进行交易谈判,其管理主要是经济技术与经济政策方面的内容,在物流方面比较简单,因此,船舶企业的外部物流管理的对象主要是采购物流。船舶企业采购管理的目标是配合船舶生产过程,按时按量购置生产中需要的质量合格产品。外部物流管理的主要内容包括:
a)物流需求计划的制定:针对船舶企业的物料需求的特点,发展MRP技术,使物料需求计划满足船舶建造过程中动态物料需求的特性;
b)订单管理:在满足生产需要的前提下,根据总订货成本最小的原则上确定订货批量和订单发出时间;
C)库存管理:精益物流的目标是零库存,但在实际生产中,零库存难以实现,因此有必要建立库存管理模型,确定合理库存量,使库存成本减至最低;
d)货物信息跟踪:利用现有通讯技术和手段,制定运输策略,实时跟踪订货处理状态,及时发现和处理意外情况;
e)货物质量管理:建立质量管理体系,制定质量评价标准,与供应商协商处理质量问题;

f)供应商开发:考察与评估供应商能力,与合格供应商建立合作关系,减少供应风险,降低采购成本;
g)交易信息管理:管理交易产生的各种单据,利用先进通讯技术,实现无纸化交易,加快交易速度,降低交易成本。
6、物流信息管理平台
物流技术的发展经历了人工物流、机械物流、自动化物流和集成物流阶段之后,现已发展到智能型物流阶段。船舶企业物流管理直接为船舶生产服务,其管理系统所接受和处理的实时信息是并发的,具有随机性,种类多且相互数量庞大,用传统的人工方式已难以处理如此大量的数据。因此,建立物流信息管理系统软件平台,既是时代发展的趋势,又是船舶企业物流管理的实际需要。
四、结语
物流管理贯穿于船舶生产的整个过程,是船舶企业的第三利润源泉。船舶企业发展应用精益物流理论,有利于减少物流过程中的阻滞和浪费环节,使物流活动更加节约而通畅,从而有利提高生产率,降低生产成本,缩短生产周期,是当前我国船舶行业提高国际竞争力的有效手段之一。

参考文献:

[1]齐二石.物流工程[M].天津:天津大学出版社,2002:68.
[2]陈强.中心制造船模式的研究与应用[D].哈尔滨:哈尔滨工程大学出版社,2001:12
[3]陈节贵,柳存根.造船企业物流[J].造船技术,2002(5):1—2.
Exquisite Logistics M anagerial Technology on Shipping Enterprises
SUN Ai—dong ,W ANG Bo
(Business School,University of Shanghai for Science and Technology,Shanghai 200093,China)
Abstract:Compared with the electronics and automobile manufacturing loglstics,shipping logistics has its specialities as the fol·
lowing:it commands large amount and long period with dynamieTherefore,the principles of logistics management need rebuilding
with the exquisite logistics;in the interior logistics management,the acquisition and managerial techniques of basic engineering
data as well as logistics managerial techniques on the spot need reinforcing and the coding techniques of shipping components
need optimizing;in the exterior logistics management,advanced communication technology needs adopting and purchasing time
and purchasing cost needs reducing as well;at the same time,the establishment of managerial platform on logistics information is
the basis of optimizing logistics managen Jent.
Keywords:shipping;logistics management;logistics technology ;inform ation system

 

转-使用Spotlight on oracle RAC确保获得拯救生命的信息

HUKM使用Spotlight on oracle RAC确保获得拯救生命的信息
 

     马 来西亚国民大学医院( HUKM )需要用运行在一个Oracle真正应用集群(RAC)上的医院信息管理系统立即检测与诊断问题,由于HUKM的信息系统包含的关键和潜在的拯救生命的数 据, 系统性能和可靠性是至关重要的。 Quest软件公司的Spotlight®Oracle RAC使HUKM的IT工作人员快速检测和诊断真正应用集群数据库的问题,从而大大降低解决问题的时间,从几天到不到一个小时。此外, HUKM每年可节省在Oracle顾问评价系统上多达50000美元的开支。

面临的挑战

     HUKM 的信息系统变得活跃起来,它很快就成为一个支持医院业务的重要组成部分。这家医院的100个用户需要立即获得重要信息,而不拖延或宕机。 "监测Oracle RAC,除了事后检查日志文件以外,没有任何机制", HUKM IT经理穆罕默德扎努丁说,他们IT人员45个包括30 个开发人员和三个数据库管理员( DBA ) 。

     " 如果有遵守或性能问题的数据库或集群,管理员将会发出各种各样的命令或查看许多跟踪或日志文件,看哪里出错了, "他解释说。 "这仅仅是一个耗时的过程。但是,Oracle管理员需要有更多的时间诊断问题的原因。另外,当需要如历史的数据库视图信息时,将无法使用。由于没有办法 确定确切原因的瓶颈,效率低下的试验和错误成为规范。 "

     在医院环境中,医生依靠数据来帮助病人,系统可靠性和有效的性能变得至高无上。 "如果数据库有问题,造成宕机或性能退化,整个医院信息管理系统的用户群将竞争访问关键的文件, "穆罕默德先生陈述。 "虽然宕机成本无法量化,快速访问关键的数据可以挽救生命。 "

Quest解决方案

     直 到Quest软件公司将Spotlight产品介绍给公司一名外部顾问,HUKM的问题才得到解决,IT人员下载和测试了Spotlight on oracle RAC。穆罕默德先生指出其独特的提供实时警报的能力,并对两个最引人注目的产品功能问题做深深地诊断。Spotlight on oracle为RAC环境提供了详细的性能指标和可定制的报警,并为集群架构,集群活动和集群全部性能提供了一个图形界面 。Spotlight确定TOP会话期间,效率低下的SQL ,锁,门锁,等待事件,磁盘I/O的名字只有少数几个指标。性能问题的下钻功能对瓶颈提供了详细说明,并提供步骤决议。

SpotlightonOracle

    穆 罕默德先生对产品直观的界面有非常深刻的印象,其中提供的问题指标一目了然。 HUKM也评价了Spotlight的回放功能的历史分析 性能指标。该产品可以存储Oracle实例的详细资料,IT人员可以查看这一信息,就好像它是实时发生一样。 HUKM现在也能够随着时间的推移跟踪一组行为。

     当 HUKM认识到在Oracle真正应用集群数据库上没有其他解决办法解决实时检测与诊断问题时,它迅速地着手购买了Spotlight on oracle RAC。 "无与伦比的解决方案是来源于它快速解决带来的价值, "穆罕默德先生说。 他描述了自从该产品运行以来HUKM的行动。 "使用Spotlight on oracle RAC,当有警报显示在仪表盘时,管理员可以迅速地深入到了数据库服务器进行调查,"穆罕默德先生解释说。 "这种信息能够快速的决定决策的根源问题。在发现问题后,Spotlight on oracle RAC内置的建议工具提出建议来解决问题。 "

底线

     穆罕默德先生估计需要几天时间解决的问题,现在30分钟到一个小时就解决了。 他对Spotlight on oracle RAC提供的实时警报表示赞赏。 " Spotlight就像一个内部专业的数据库管理员, "他说。 "该解决方案允许用户提出申诉之前,管理员已采取行动。

     虽 然有些底线的好处已经难以量化,穆罕默德先生估计, Spotlight on oracle RAC为医院每年节省了用于Oracle顾问评价系统高达50000美元的开支。最重要的是,迅速解决问题,并尽量减少系统宕机,HUKM非常得安心,因 为医院信息管理系统用户将能够获得潜在救命的信息此刻的需要。

     据 穆罕默德先生说,一个附加的好处是实施Spotlight on oracle RAC可以越来越多地了解Quest软件公司的产品,它能够使HUKM在其他领域获得帮助。"Quest在开发和管理数据库方面提供了创新的解决方案, "他说。 "HUKM 目前正在评估其他Quest解决方案。"

关于HUKM

     HUKM负责马来西亚居民的医疗保健。专业领域包括精神病学,儿科学,神经病学,神经外科,脊柱和行动。这也是第一个在马来西亚设立的儿童发展中心医院。

关于Quest软件公司

     Quest软件公司提供创新的产品,帮助企业在应用程序,数据库和Windows的基础设施上获得更多的性能和生产力。通过深厚的IT业务专业知识和持续关注的工作,Quest帮助世界范围内超过50000客户为企业IT获得更高的期望满足。

性能测试工具quest spotlight试用

前一段时间将所有的VMWare GXServer上的虚拟机迁移到Hyper-V上后,对服务器的管理采用了SCVMM2k8来做。

今天在网上找资料,无意中有一个quest spotlight,说其能监视系统、数据库、群集,就下载来用用,界面做得很不错,而且很多基本信息都在主界面上得到描述,另可以实地查看存储空间、CPU、内存等使用情况。

大家可以看看我自己做的Demo。

收藏-多域控制器环境下Active Directory灾难恢复

摘要
本文讲述了在多域控制器环境下,主域控制器由于硬件故障突然损坏,而又事先又没有做好备份,如何使额外域控制器接替它的工作,使Active Directory正常运行,并在硬件修理好之后,如何使损坏的主域控制器恢复。

目录
Active Directory操作主机角色概述
环境分析
从AD中清除主域控制器DC-01.test.com 对象
在额外域控制器上通过ntdsutil.exe工具执行夺取五种FMSO操作
设置额外域控制器为GC(全局编录)
重新安装并恢复损坏主域控制器
附:用于检测AD中五种操作主机角色的脚本
参考信息
作者介绍

一、Active Directory操作主机角色概述
Active Directory 定义了五种操作主机角色(又称FSMO):
架构主机 schema master、
域命名主机 domain naming master
相对标识号 (RID) 主机 RID master
主域控制器模拟器 (PDCE)
基础结构主机 infrastructure master
而每种操作主机角色负担不同的工作,具有不同的功能:
架构主机
具有架构主机角色的 DC 是可以更新目录架构的唯一 DC。这些架构更新会从架构主机复制到目录林中的所有其它域控制器中。 架构主机是基于目录林的,整个目录林中只有一个架构主机。
域命名主机
具有域命名主机角色的 DC 是可以执行以下任务的唯一 DC:
向目录林中添加新域。
从目录林中删除现有的域。
添加或删除描述外部目录的交叉引用对象。
相对标识号 (RID) 主机
此操作主机负责向其它 DC 分配 RID 池。只有一个服务器执行此任务。在创建安全主体(例如用户、
组或计算机)时,需要将 RID 与域范围内的标识符相结合,以创建唯一的安全标识符 (SID)。 每一个
Windows 2000 DC 都会收到用于创建对象的 RID 池(默认为 512)。RID 主机通过分配不同的池来确保这
些 ID 在每一个 DC 上都是唯一的。通过 RID 主机,还可以在同一目录林中的不同域之间移动所有对象。
域命名主机是基于目录林的,整个目录林中只有一个域命名主机。相对标识号(RID)主机是基于域的,目录林中的每个域都有自己的相对标识号(RID)主机
PDCE
主域控制器模拟器提供以下主要功能:
向后兼容低级客户端和服务器,允许 Windows NT4.0 备份域控制器 (BDC) 加入到新的 Windows 2000 环境。 本机 Windows 2000 环境将密码更改转发到 PDCE。每当 DC 验证密码失败后,它会与 PDCE 取得联系,以查看该密码是否可以在那里得到验证,也许其原因在于密码更改还没有被复制到验证 DC 中。
时间同步 — 目录林中各个域的 PDCE 都会与目录林的根域中的 PDCE 进行同步。
PDCE是基于域的,目录林中的每个域都有自己的PDCE。
基础结构主机
基础结构主机确保所有域间操作对象的一致性。当引用另一个域中的对象时,此引用包含该对象的
全局唯一标识符 (GUID)、安全标识符 (SID) 和可分辨的名称 (DN)。如果被引用的对象移动,则在域中担
当结构主机角色的 DC 会负责更新该域中跨域对象引用中的 SID 和 DN。
基础结构主机是基于域的,目录林中的每个域都有自己的基础结构主机
默认,这五种FMSO存在于目录林根域的第一台DC(主域控制器)上,而子域中的相对标识号 (RID) 主机、PDCE 、基础结构主机存在于子域中的第一台DC。

二、环境分析
公 司Test.com(虚拟)有一台主域控制器DC-01.test.com,还有一台额外域控制器DC-02.test.com。现主域控制器(DC- 01.test.com)由于硬件故障突然损坏,事先又没有DC-01.test.com的系统状态备份,没办法通过备份修复主域控制器(DC- 01.test.com),我们怎么让额外域控制器(DC-02.test.com)替代主域控制器,使Acitvie Directory继续正常运行,并在损坏的主域控制器硬件修理好之后,如何使损坏的主域控制器恢复。
如果你的第一台DC坏了,还有额外域控制器正常,需要在一台额外域控制器上夺取这五种FMSO,并需要把额外域控制器设置为GC。

三、从AD中清除主域控制器DC-01.test.com对象
3.1在额外域控制器(DC-02.test.com)上通过ntdsutil.exe工具把主域控制器(DC-01.test.com)从AD中删除;
c:>ntdsutil
ntdsutil: metadata cleanup
metadata cleanup: select operation target
select operation target: connections
server connections: connect to domain test.com
select operation target: list sites
Found 1 site(s)
0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
select operation target: select site 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
No current domain
No current server
No current Naming Context
select operation target: List domains in site
Found 1 domain(s)
0 - DC=test,DC=com
Found 1 domain(s)
0 - DC=test,DC=com
select operation target: select domain 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
Domain - DC=test,DC=com
No current server
No current Naming Context
select operation target: List servers for domain in site
Found 2 server(s)
0 - CN=DC-01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=te
st,DC=com
1 - CN=DC-02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=te
st,DC=com
select operation target: select server 0
select operation target: quit
metadata cleanup:Remove selected server

出现对话框,按“确定“删除DC-01主控服务器。
metadata cleanup:quit
ntdsutil: quit
3.2使用ADSI EDIT工具删除Active Directory users and computers中的Domain controllers中DC-01服务器对象,
ADSI EDIT是Windows 2000 support tools中的工具,你需要安装Windows 2000 support tool,安装程序在windows 2000光盘中的supporttools目录下。打开ADSI EDIT工具,展开Domain NC[DC-02.test.com],展开OU=Domain controllers,右击CN=DC-01,然后选择Delete,把DC-01服务器对象删除,如图1:
3.3 在Active Directory Sites and Service中删除DC-01服务器对象
打 开Administrative tools中的Active Directory Sites and Service,展开Sites,展开Default-First-Site-Name,展开Servers,右击DC-01,选择Delete,单击 Yes按钮,如图2:

四、在额外域控制器上通过ntdsutil.exe工具执行夺取五种FMSO操作
c:>ntdsutil
ntdsutil: roles
fsmo maintenance: Select operation target
select operation target: connections
server connections: connect to domain test.com
select operation target: list sites
Found 1 site(s)
0 - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
select operation target: select site 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
No current domain
No current server
No current Naming Context
select operation target: List domains in site
Found 1 domain(s)
0 - DC=test,DC=com
select operation target: select domain 0
Site - CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=com
Domain - DC=test,DC=com
No current server
No current Naming Context
select operation target: List servers for domain in site
Found 1 server(s)
0 - CN=DC-02,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=te
st,DC=com
select operation target: select server 0
select operation target: quit
fsmo maintenance:Seize domain naming master
出现对话框,按“确定“
fsmo maintenance:Seize infrastructure master
出现对话框,按“确定“
fsmo maintenance:Seize PDC
出现对话框,按“确定“
fsmo maintenance:Seize RID master
出现对话框,按“确定“
fsmo maintenance:Seize schema master
出现对话框,按“确定“
fsmo maintenance:quit
ntdsutil: quit
(注:Seize是在原FSMO不在线时进行操作,如果原FSMO在线,需要使用Transfer操作)

五、设置额外控制(DC-02.test.com)为GC(全局编录)
打 开Administrative Tools中的Active Directory Sites and Services,展开Sites,展开Default-First-Site-Name,展开Servers,展开DC-02.test.com(额外 控制器),右击NTDS Settings选择Properties,然后在"Global Catalog"前面打勾,单击"确定"按钮,然后重新启动服务器。

六、重新安装并恢复损坏主域控制器
修 理好DC-01.test.com损坏的硬件之后,在DC-01.test.com服务器重新安装Windows 2000 Server,安装好Windows 2000 Server之后,再运行Dcpromo升成额外的域控制器;如果你需要使DC-01.test.com担任五种FMSO角色,通过ntdsutil工具 进行角色转换,进行Transfer操作就行了(注意:不能用Seize)。并通过Active Directory Sites and Services设置DC-01.test.com为GC,取消DC-02.test.com的GC功能。
建议domain naming master不要和RID master在一台DC上,而domain naming master同时必须为GC。

附:用于检测AD中五种操作主机角色的脚本
给大家一个脚本,用于检测AD中五种FSMO角色,把下面的代码,保存为FSMO.VBS,然后执行它.
Set objRootDSE = GetObject("LDAP://rootDSE")

Dim text

' Schema Master
Set objSchema = GetObject("LDAP://" & objRootDSE.Get("schemaNamingContext"))
strSchemaMaster = objSchema.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strSchemaMaster)
Set objComputer = GetObject(objNtds.Parent)
text="Forest-wide Schema Master FSMO: " & objComputer.Name & vbCrLf

Set objNtds = Nothing
Set objComputer = Nothing

' Domain Naming Master
Set objPartitions = GetObject("LDAP://CN=Partitions," & _
objRootDSE.Get("configurationNamingContext"))
strDomainNamingMaster = objPartitions.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strDomainNamingMaster)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Forest-wide Domain Naming Master FSMO: " & objComputer.Name & vbCrLf

Set objNtds = Nothing
Set objComputer = Nothing

' PDC Emulator
Set objDomain = GetObject("LDAP://" & objRootDSE.Get("defaultNamingContext"))
strPdcEmulator = objDomain.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strPdcEmulator)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Domain's PDC Emulator FSMO: " & objComputer.Name & vbCrLf

Set objNtds = Nothing
Set objComputer = Nothing

' RID Master
Set objRidManager = GetObject("LDAP://CN=RID Manager$,CN=System," & _
objRootDSE.Get("defaultNamingContext"))
strRidMaster = objRidManager.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strRidMaster)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Domain's RID Master FSMO: " & objComputer.Name & vbCrLf

Set objNtds = Nothing
Set objComputer = Nothing

' Infrastructure Master
Set objInfrastructure = GetObject("LDAP://CN=Infrastructure," & _
objRootDSE.Get("defaultNamingContext"))
strInfrastructureMaster = objInfrastructure.Get("fSMORoleOwner")
Set objNtds = GetObject("LDAP://" & strInfrastructureMaster)
Set objComputer = GetObject(objNtds.Parent)
text=text&"Domain's Infrastructure Master FSMO: " & objComputer.Name & vbCrLf

text=text & vbCrLf &" Design by coolnetboy(coolnetboy@hotmail.com)"
WScript.Echo text