急救!!怎样在vrml中调用一个Ja程序
SAI交互VRML离不开Script和Script类(vrml.node包)。为了实现通信功能编写的ja类都必须继承自Script类。但ja不支持多继承,如果用Applet控VRML场景, ja程序要继承Script类的方法相当复杂。特别是要把VRML文件与Applet集成在同一个HTML页面时,用Script类来实现颇为困难,而且程序代码冗长、可扩展性。这个问题你应该去问了解vrml的版块。
vrml实例_vrml实例代码拼色椅面
vrml实例_vrml实例代码拼色椅面
4.停工待料减少60%。由于零件需求的透明度提高,也作了改进,能够做到及时与准确,零件也能以更合理的速度准时到达,因此,生产线上的停工待料现象将会大大减少。
如果问JAVA如何调用其他的还可以在这里问问。
只找到如下资料。也不知道有用没
VRML与JAVA在网络课件交互运用虚拟现实建模语言(Virtual Reality Modeling Language 即VRML)和Ja语言都是 可执行的代码“技术,通过网络传输的只是一个很小的描述文件(指令性数据集),客户端通过本地的VRML浏览器、JAVA虚拟机交互地访问这些文件并解释执行。将Ja与VRML结合,能够很好地实现网络多媒体课件技术:使用VRML进行场景构造,内嵌用Ja编写的程序设计实现对象的编程行为。这使VRML在网上创建充满真实感的三维虚拟世界,为用户提供一种自然的、身临其境的体验方式,包括交互性、动态效果、连续性及参与感,而这将是未来网络教学的主要形式之一。
1、 VRML简单交互
VRML简单交互,即VRML空间中各间数据交互。VRML有统一的数据传输接口和完善的属性和,可接收传感器发送过来的数值,并根据所对应的接口属性域设置提取数据、改变自身的属性值、触发进而改变自己在空间中的位置、外型和显示效果,还可以将处理后的数据送到输出域,传递给其他模型。各通过接口域的相互路由(route to)实现数据传输,路由的映射关系自由,但接口域的数据规格必须严格一致。
2、VRML扩展交互
VRML本身交互机制是无法构建一个大型多媒体课件的,因为VRML本身不能完成普通程序设计中的转折、分支、循环等基本特征。因此实际系统设计中,可利用Ja语言提供的强大网络编程能力,编写与远程系统通信和共享能力处理等功能的应用程序。Ja对VRML的所有支持都通过附加的封装类实现。通过这些类,Ja程序就能够访问VRML场景、接受和发送、从页面上得到VRML对象等,实现对VRML场景的完全控制。[2]根据访问方式的不同,又可分为:脚本编程接口SAI(Script Authoring Intece) 交互与外部编程接口EAI(EAI External Authoring Intece) 交互。
SAI交互即使用机制和路由利用Script实现VRML与 Ja(或JaScript)的交互。首先,通过ntIn将传至Script中的脚本;其次,在Script中的脚本中调用相应的Ja类(或JaScript)进行处理;,通过ntOut将结果送回到VRML场景以实现动画或交互。
VRML的Script是一种控制传感器和内插器的,通过它可以定义和改变场景中对象的外观和行为。Script的URL域可以包含一段JaScript程序或者是链接的一个JaClass.SCRIPT可放置在场景的任何地方,用DEF命名它,从而完成的删除成传递。SCRIPT的字段是由用户延伸的,到达这些字段的字段会自动移到和SCRIPT相关程序中。另外,SCRIPT也能够通过编写合适程序脚本,动态生成(改变)三维造型并绑定合适的感应器和内插器。
2.1. 1Ja通过Script类(vrml.node包)与Script结点建立联系,控制VRML结点
首先,定义Script中的各域域值,设置路由(Route)使VRML中的其它与Script联系起来。当与Script有联系的发生时,通过路由传给Script的ntIn域,Script则通过域中指定的地址找到ja类。
然后,Ja类开始工作,执行的是initialize()方法:在initialize()方法中必须获得Script中ntIn或field域的值,或者把ja中的值返回给Script中的ntOut域。Script类提供的方法有: getField(fieldName); getEventIn(ntInName); getEventOut(ntOutName); 作为参数的fieldName、ntInName、ntOutName要与Script中定义的名称相符合,对应的Field类的子类(vrml.filed包)与Script中定义的各种Type类型一致。它提供getValue()和setValue()方法。
再则,通过Script类提供的processEvent(Event p0)或processEvents(int p0, Event[] p1)方法来捕获Script传递的。processEvent和processEvents方法是所有外部公共的输入点。Ja程序通过替代这两个方法对做出相应的处理。Vrml包中Event类的getName()方法返回名称(该名称与Script中发生该的ntInName相同),确定发生的,从而做出相应的处理;Event类的getValue()方法则返回一个ConstField类的实例 (它是Script中发生该的ntIn域),ConstField类是Field类的子类,它没有setValue()方法,因而只能取出Script中ntIn域的值,而不能修改。
通过Script,能ja程序处理过的数据返回给VRML文件。通过初始化时getEventOut()得到的变量的setValue()方法将值传递给Script的ntOut域,再通过路由传递给VRML中的各类,完成整个通信过程。
2.1.2 Ja通过Script和Node类(vrml.node包)直接修改VRML
通过Script和路由,同时又必须在Script的ntOut域设置控制点,ja程序才能改变VRML文件中值。当有大量数据需要传送时,这种给每个数据设置一个ntOut域加一个路由的方法显然是相当麻烦的。因此ja,提出直接修改的方法。
Ja直接修改场景中的,仍然要用到Script。首先在定义Script时,将ntOut域改为field域,fieldType定义为SFNode,具体格式如下:
“field SFNode fieldname USE nodeName”。 “nodeName”为要修改的名称(在VRML中由DEF语句命名),产生一个指向名为nodeName的指针。执行初始化时通过getField()方法得到相应的SFNode类的一个实例,通过getValue()方法得到该类的值,这里它的值恰好是名称为nodeName的Node类的实例,然后通过Node类提供的方法直接修改。getExedField(String p0)、getEventIn(String p0)方法,分别得到的field和ntIn域,并把结果作为Field类;再通过各Field类的子类提供的方法读取和设置值,将设置结果直接返回,不用再设置路由,从而达到了直接修改的目的。
Node类还提供了getEventOut(String p0)方法,用它可以得到的ntOut域,与前两个方法不同,它得到的结果是一个不能修改的Field类,即Field类的子类ConstField类。 使用改进后的方法,可以有效的缩减代码长度,节省VRML文件的计算时间,提高VRML场景的生成速度。
2.1.3 Ja通过Script和Browser类(vrml包)直接创建VRML场景
设置Group的addChindren和removeChindren的值来可添加和删除具体,但还无法作路由。当有大量不同的并相互关联的要通过ja在VRML中创建时,工作量是难以想象的。为了满足这一要求,Script类继承BaseNode(vrml包)类,BaseNode类中定义了两个方法:getBrowser()和getType()。getBrowser()方法将会返回BaseNode类所处的浏览器。Browser类存在于vrml包中,它提供了一系列方法来对整个VRML文件进行控制。 如:
(1)、添加和删除路由:addRoute(SFNode fromNode,SFString fromEventOut,SFNode toNode,SFString toEventIn),deleteRoute(SFNode fromNode,SFString fromEventOut,SFNode toNode,SFString toEventIn)
(2)、直接创建VRML:crea1. 企业资源与ERPteVrmlFromString(SFString vrmlSyntax)(把要创建的语法以字符串的方式作为参数写入)
(3)、在VRML中建立相应:createVrmlFromURL(MFString ,SFNode node,SFString nt)(该方法的提供语法的参数是放在地址所指出的VRML文件中,浏览器通过找到要加入的,把它加入到node参数指定的中nt参数指定的ntIn域中)
(4)、用指定的来替换整个VRML文件:replaceWorld(MFNode nodes)
Script类执行initialize()方法时,得到浏览器实例,然后processEvent(Event e)方法执行时使用上述方法建立、修改VRML场景。 通过改进,不仅VRML文件代码长度缩减,ja程序代码也大大减少,进一步提高了VRML场景的生成速度。
2.2外部编程接口(EAI)交互
VRML97标准提供的EAI定义了外部环境怎样通过VRML现存的驱动模式来访问VRML内部的的一系列方法,实现了Applet与VRML场景的通信。EAI包含浏览器脚本接口的全部功能,例如查询浏览器的状态,增加或删除路由,生成新的等功能。
Ja主要使用Browser和Node两个类(vrml.external包),以及其它一些如处理ntIn域和ntOut域的各个属性类(EventIn、EventOut)和处理例外的各种Exception类完成对EAI的描述。
Browser类提供了三个方法:getBrowser(Applet pApplet)、getBrowser(Applet pApplet,String frameName,int index)和getNode(String name)方法。前两个方法是静态方法,直接在Applet类中使用这两个方法得到Applet类和VRML所在的浏览器类的实例。getNode()方法可以直接得到VRML文件的具体(Node类)的实例,用InLine语句嵌入在VRML文件中的各个是用getNode()方法是无法得到的。这里的Node类与方法一的Node类是完全不同的,它用自己的getEventIn()和getEventOut()方法来得到VRML的各个域。然后使用返回的Event的实例的getValue()和setValue()方法来控制具体的值。EventIn类仅提供了设置值的setValue()方法;EventOut类相对复杂,不仅提供了getValue()方法来获得当前值,还提供了EventOut域的接口??EventOutObserver,随时VRML中是否有新的EventOut发生,一旦有新发生,通过替代该接口提供的callback(EventOut value,double timeStamp,Object data)方法响应。
通过Browser和Node类,可以抛弃Script和Script类甚至路由而现实对VRML文件的各种即Node类的各个实例直接控。但getBrowser()方法的参数必须是Applet的实例,因而该方法只能通过Applet来控制VRML.
3.总结
VRML与其它实现三维场景的技术手段(如OpenGL,Cult3D,3DSMAX,Viewpoint)相比,具有语法简单、三维建模功能强大、便于网上发布等优点。但由于VRML本身仅仅是一种标准,不可能满足各行各业的所有需要。所以,高级交互功能的实现必须借助于Ja等功能强大的高级语言。这样,可以有效地弥补VRML本身的一些不足(例如逻辑判断、文件作、键盘输入、控制场景等),进而完善与HTML等其它媒体的交互,也可实现复杂的虚拟环境系统网络课件。
网页设计和平面设计的区别?
计算机技术特别是数据库技术的发展为企业建立管理信息系统,甚至对改变管理思想起著不可估量的作用,管理思想的发展与信息技术的发展是互成因果的环路。而实践证明信息技术已在企业的管理层面扮演越来越重要的角色。但是网页设计确实有其独特性,比如网页设计的设计空间、设计模式,与平面设计就有很大的不同。这两种设计形式拥有着不同的用户体验,我们应该根据不同设计内容,选择正确的设计形式提升用户体验。
3.是整合了企业管理理念、业务流程、基础数据、,所有处理完后,程序就调用Script类中的ntsProcessed()方法,在这儿可以加入用户想要实现的动画、交互等各种效果。Script类中的shutdown()方法实现离开VRML文件的方式。人力物力、计算机硬件和软件于一体的企业资源管理系统。VRML与JAVA在网络课件交互运用
1.是由美国的计算机技术咨询和评估Garter Group Inc.提出的一整套企业管理系统体系标准,其实质是在MRP II(Manufacturing Resources Planning,“制造资源”) 基础上进一步发展而成的面向供应链(Supply Chain)的管理思想;虚拟现实建模语言(Virtual Reality Modeling Language 即VRML)和Ja语言都是 可执行的代码 技术 通过网络传输的只是一个很小的描述文件(指令性数据集) 客户端通过本地的VRML浏览器 JAVA虚拟机交互地访问这些文件并解释执行 将Ja与VRML结合 能够很好地实现网络多媒体课件技术 使用VRML进行场景构造 内嵌用Ja编写的程序设计实现对象的编程行为 这使VRML在网上创建充满真实感的三维虚拟世界 为用户提供一种自然的 身临其境的体验方式 包括交互性 动态效果 连续性及参与感 而这将是未来网络教学的主要形式之一
2.1脚本编程接口SAI交互VRML简单交互
VRML简单交互 即VRML空间中各间数据交互 VRML有统一的数据传输接口和完善的属性和 可接收传感器发送过来的数值 并根据所对应的接口属性域设置提取数据 改变自身的属性值 触发进而改变自己在空间中的位置 外型和显示效果 还可以将处理后的数据送到输出域 传递给其他模型 各通过接口域的相互路由(route to)实现数据传输 路由的映射关系自由 但接口域的数据规格必须严格一致
VRML扩展交互
VRML本身交互机制是无法构建一个大型多媒体课件的 因为VRML本身不能完成普通程序设计中的转折 分支 循环等基本特征 因此实际系统设计中 可利用Ja语言提供的强大网络编程能力 编写与远程系统通信和共享能力处理等功能的应用程序 Ja对VRML的所有支持都通过附加的封装类实现 通过这些类 Ja程序就能够访问VRML场景 接受和发送 从页面上得到VRML对象等 实现对VRML场景的完全控制 [ ]根据访问方式的不同 又可分为 脚本编程接口SAI(Script Authoring Intece) 交互与外部编程接口EAI(EAI External Authoring Intece) 交互
脚本编程接口SAI交互
SAI交互即使用机制和路由利用Script实现VRML与 Ja(或JaScript)的交互 首先 通过ntIn将传至Script中的脚本 其次 在Script中的脚本中调用相应的Ja类(或JaScript)进行处理 通过ntOut将结果送回到VRML场景以实现动画或交互
VRML的Script是一种控制传感器和内插器的 通过它可以定义和改变场景中对象的外观和行为 Script的URL域可以包含一段JaScript程序或者是链接的一个JaClass SCRIPT可放置在场景的任何地方 用DEF命名它 从而完成的删除成传递 SCRIPT的字段是由用户延伸的 到达这些字段的字段会自动移到和SCRIPT相关程序中 另外 SCRIPT也能够通过编写合适程序脚本 动态生成(改变)三维造型并绑定合适的感应器和内插器
Ja通过Script类(vrml node包)与Script结点建立联系 控制VRML结点
首先 定义Script中的各域域值 设置路由(Route)使VRML中的其它与Script联系起来 当与Script有联系的发生时 通过路由传给Script的ntIn域 Script则通过域中指定的地址找到ja类
然后 Ja类开始工作 执行的是initialize()方法 在initialize()方法中必须获得Script中ntIn或field域的值 或者把ja中的值返回给Script中的ntOut域 Script类提供的方法有 getField(fieldName) getEventIn(ntInName) getEventOut(ntOutName) 作为参数的fieldName ntInName ntOutName要与Script中定义的名称相符合 对应的Field类的子类(vrml filed包)与Script中定义的各种Type类型一致 它提供getValue()和setValue()方法
再则 通过Script类提供的processEvent(Event p )或processEvents(int p Event[] p )方法来捕获Script传递的 processEvent和processEvents方法是所有外部公共的输入点 Ja程序通过替代这两个方法对做出相应的处理 Vrml包中Event类的getName()方法返回名称(该名称与Script中发生该的ntInName相同) 确定发生的 从而做出相应的处理 Event类的getValue()方法则返回一个ConstField类的实例 (它是Script中发生该的ntIn域) ConstField类是Fi用指定的另一个VRML文件来替换当前的文件:loadURL(MFString ,MFString parameter)。eld类的子类 它没有setValue()方法 因而只能取出Script中ntIn域的值 而不能修改
所有处理完后 程序就调用Script类中的ntsProcessed()方法 在这儿可以加入用户想要实现的动画 交互等各种效果 Script类中的shutdown()方法实现离开VRML文件的方式
通过Script 能ja程序处理过的数据返回给VRML文件 通过初始化时getEventOut()得到的变量的setValue()方法将值传递给Script的ntOut域 再通过路由传递给VRML中的各类 完成整个通信过程
Ja通过Script和Node类(vrml node包)直接修改VRML
通过Script和路由 同时又必须在Script的ntOut域设置控制点 ja程序才能改变VRML文件中值 当有大量数据需要传送时 这种给每个数据设置一个ntOut域加一个路由的方法显然是相当麻烦的 因此ja 提出直接修改的方法
Ja直接修改场景中的 仍然要用到Script 首先在定义Script时 将ntOut域改为field域 fieldType定义为SFNode 具体格式如下
field SFNode fieldname USE nodeName nodeName 为要修改的名称(在VRML中由DEF语句命名) 产生一个指向名为nodeName的指针 执行初始化时通过getField()方法得到相应的SFNode类的一个实例 通过getValue()方法得到该类的值 这里它的值恰好是名称为nodeName的Node类的实例 然后通过Node类提供的方法直接修改 getExedField(String p ) getEventIn(String p )方法 分别得到的field和ntIn域 并把结果作为Field类 再通过各Field类的子类提供的方法读取和设置值 将设置结果直接返回 不用再设置路由 从而达到了直接修改的目的
Node类还提供了getEventOut(String p )方法 用它可以得到的ntOut域 与前两个方法不同 它得到的结果是一个不能修改的Field类 即Field类的子类ConstField类 使用改进后的方法 可以有效的缩减代码长度 节省VRML文件的计算时间 提高VRML场景的生成速度
Ja通过Script和Browser类(vrml包)直接创建VRML场景
设置Group的addChindren和removeChindren的值来可添加和删除具体 但还无法作路由 当有大量不同的并相互关联的要通过ja在VRML中创建时 工作量是难以想象的 为了满足这一要求 Script类继承BaseNode(vrml包)类 BaseNode类中定义了两个方法 getBrowser()和getType() getBrowser()方法将会返回BaseNode类所处的浏览器 Browser类存在于vrml包中 它提供了一系列方法来对整个VRML文件进行控制 如
( ) 添加和删除路由 addRoute(SFNode fromNode SFString fromEventOut SFNode toNode SFString toEventIn) deleteRoute(SFNode fromNode SFString fromEventOut SFNode toNode SFString toEventIn)
( ) 直接创建VRML createVrmlFromString(SFString vrmlSyntax)(把要创建的语法以字符串的方式作为参数写入)
( ) 在VRML中建立相应 createVrmlFromURL(MFString SFNode node SFString nt)(该方法的提供语法的参数是放在地址所指出的VRML文件中 浏览器通过找到要加入的 把它加入到node参数指定的中nt参数指定的ntIn域中)
( ) 用指定的来替换整个VRML文件 replaceWorld(MFNode nodes)
用指定的另一个VRML文件来替换当前的文件 loadURL(MFString MFString parameter)
Script类执行initialize()方法时 得到浏览器实例 然后processEvent(Event e)方法执行时使用上述方法建立 修改VRML场景 通过改进 不仅VRML文件代码长度缩减 ja程序代码也大大减少 进一步提高了VRML场景的生成速度
外部编程接口(EAI)交互
SAI交互VRML离不开Script和Script类(vrml node包) 为了实现通信功能编写的ja类都必须继承自Script类 但ja不支持多继承 如果用Applet控VRML场景 ja程序要继承Script类的方法相当复杂 特别是要把VRML文件与Applet集成在同一个HTML页面时 用Script类来实现颇为困难 而且程序代码冗长 可扩展性
VRML 标准提供的EAI定义了外部环境怎样通过VRML现存的驱动模式来访问VRML内部的的一系列方法 实现了Applet与VRML场景的通信 EAI包含浏览器脚本接口的全部功能 例如查询浏览器的状态 增加或删除路由 生成新的等功能
Ja主要使用Browser和Node两个类(vrml external包) 以及其它一些如处理ntIn域和ntOut域的各个属性类(EventIn EventOut)和处理例外的各种Exception类完成对EAI的描述
Browser类提供了三个方法 getBrowser(Applet pApplet) getBrowser(Applet pApplet String frameName int index)和getNode(String name)方法 前两个方法是静态方法 直接在Applet类中使用这两个方法得到Applet类和VRML所在的浏览器类的实例 getNode()方法可以直接得到VRML文件的具体(Node类)的实例 用InLine语句嵌入在VRML文件中的各个是用getNode()方法是无法得到的 这里的Node类与方法一的Node类是完全不同的 它用自己的getEventIn()和getEventOut()方法来得到VRML的各个域 然后使用返回的Event的实例的getValue()和setValue()方法来控制具体的值 EventIn类仅提供了设置值的setValue()方法 EventOut类相对复杂 不仅提供了getValue()方法来获得当前值 还提供了EventOut域的接口??EventOutObserver 随时VRML中是否有新的EventOut发生 一旦有新发生 通过替代该接口提供的callback(EventOut value double timeStamp Object data)方法响应
通过Browser和Node类 可以抛弃Script和Script类甚至路由而现实对VRML文件的各种即Node类的各个实例直接控 但getBrowser()方法的参数必须是Applet的实例 因而该方法只能通过Applet来控制VRML
总结
lishixinzhi/Article/program/Ja/gj/201311/27349
哪里有VRML
③已分配量:是指尚保存在仓库中但已被分配掉的物料数量。ERP教程 (资料部分) ERP技术联盟:7922898
走近ERP前言
ERP——Enterprise Resource Planning 企业资源系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。是信息技术和管理思想不断发展、结合的产物。 本专题从ERP现象开始讲起,通过介绍ERP的概念、由来、发展历程、ERP在的发展,ERP的功能、作用,包括哪些主要功能模块、导入ERP的阶段,使你从头到尾对ERP进行的了解。
引子
当今时代,在全球竞争激烈的大市场中,无论是流程式还是离散式的制造业,无论是单件生产、多品种小批量生产、少品种重复生产还是标准产品大量生产的制造;制造业内部管理都可能遇到以下一些问题:如企业可能拥有卓越的销售人员推销产品,但是生产线上的工人却没有办法如期交货,车间管理人员则抱怨说采购部门没有及时供应他们所需要的原料;实际上,采购部门的效率过高,仓库里囤积的某些材料10年都用不完,仓库库位饱和,很慢;许多公司要用6~13个星期的时间,才能计算出所需要得物料量,所以订货周期只能为6~13个星期;订货单和采购单上的日期和缺料单上的日期都不相同,没有一个是肯定的;财务部门不信赖仓库部门的数据,不以它来计算制造成本……
不能否认,以上这些情况正是我们大多数企业目前所面临的一个严峻的问题,然而,针对这一现象,我们又能有什么有效的办法来解决它呢?――事实是,在的企业界还没有完全意识到这一问题的性的时候,国外的ERP/MRP II的软件厂商早已悄然地走进了市场,并随着时间的推移,ERP开始逐渐被的企业界、理论界所认识。
ERP现象
到了现在,只要我们随手翻翻有关管理、信息技术方面的报纸杂志,就会有大量的、各式各样的MRP II/ERP广告和相关跃然纸上。就在人们还在为到底什么是ERP而感到困惑的时候,新一代的像"电子商务时代的ERP"、"iERP"等概念又不断地迎面扑来。
事实上,ERP所能带来的巨大效益确实对很多企业具有相当大的力。据美国生产与库存控制学会(APICS)统计,使用一个MRP II/ERP系统,平均可以为企业带来如下经济效益:
1.库存下降30%~50%。这是人们说得最多的效益。因为它可使一般用户的库存投资减少1.4~1.5倍,库存周转率提高50%。
2.延期交货减少80%。当库存减少并稳定的时侯,用户服务的水平提高了,使使用ERP/MRP II企业的准时交货率平均提高55%,误期率平均降低35%,这就使销售部门的信誉大大提高。
3.采购提前期缩短50%。采购人员有了及时准确的生产信息,就能集中精力进行价值分析,货源选择,研究谈判策略,了解生产问题,缩短了采购时间和节省了采购费用。
5.制造成本降低12%。由于库存费用下降,劳力的节约,采购费用节省等一系列人、财、物的效应,必然会引起生产成本的降低。
6.管理水平提高,管理人员减少10%,生产能力提高10%~15%。
此外,近年来ERP市场的飞速成长也显示出了它的巨大发展潜力:
从国内的情况来看,的MRP II/ERP行业自1995至1997年均增长速度约为27%,而1998年增长速度竞高达35%左右(不包括财务软件),市场销售额达到了4.2亿元。1999年由于金融风暴滞后效应等因素的影响,ERP市场有较大的回落。但随着财富在上海的成功召开,中美WTO协议的最终签署,使得大多数无论是中资还是外资企业,都坚定了进一步投资的信心。这使得99年下半年以及2000年的ERP市场又重现商机。而来自大公报的消息预计,未来两年我国的ERP软件产品市场将达一百亿元左右。据统计,目前注册企业约有一千一百万家,其中10%为大型企业,在南方企业中,约有半数以上的大中型企业有采用和购买ERP产品的,但中小型企业较少,而北方企业购买ERP产品则有逐渐增加的趋势。
从整个上的情况来看,据美国权威市场预测研究机构AMR Research宣布,全球ERP市场在近五年内将以年综合增幅37%的速度发展。1998年全球ERP市场总收入达148亿美元,到2002年这一数字将增至520亿。
由以上的数字可以看出,ERP无论是在,还是在全掀起了一场关于管理思想和管理技术的革命。更为值得注意的是,在MPR II还没有被的企业界人士所完全认可之前,它却已经在短短的几年时间内一跃发展成为现今的电子商务时代下的ERP。可见,这一新的管理方法和管理手段正在以一种人们无法想象的速度在的企业中如火如荼地被应用和发展起来了,它无疑给我们在市场经济大潮中奋力搏击的众多企业注入了新的血液。因此,为了我们更好地掌握和使用这一新的管理工具,很有必要先对ERP有一个清楚的认识。
ERP概念与历程
ERP——Enterprise Resource Planning 企业资源系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP系统集中信息技术与先进的管理思想于一身,成为现代企业的运行模式,反映时代对企业合理调配资源,化地创造财富的要求,成为企业在信息时代生存、发展的基石。
我们可以从管理思想、软件产品、管理系统三个层次给出它的定义:
2.是综合应用了客户机/体系、关系数据库结构、面向对象技术、图形用户界面、语言(4GL)、网络通讯等信息产业成果,以ERP管理思想为灵魂的软件产品;
具体来讲,ERP与企业资源的关系、ERP的作用以及与信息技术的发展的关系等可以表述如下:
厂房、生产线、加工设备、检测设备、运输工具等都是企业的硬件资源,人力、管理、信誉、融资能力、组织结构、员工的劳动热情等就是企业的软件资源。企业运行发展中,这些资源相互作用,形成企业进行生产活动、完成客户订单、创造财富、实现企业价值的基础,反映企业在竟争发展中的地位。
ERP系统的管理对象便是上述各种资源及生产要素,通过ERP的使用,使企业的生产过程能及时、高质地完成客户的订单,程度地发挥这些资源的作用,并根据客户订单及生产状况做出调整资源的决策。
2. 调整运用企业资源
企业发展的重要标志便是合理调整和运用上述的资源,在没有ERP这样的现代化管理工具时,企业资源状况及调整方向不清楚,要做调整安排是相当困难的,调整过程会相当漫长,企业的组织结构只能是金字塔形的,部门间的协作交流相对较弱,资源的运行难於比较把握,并做出调整。信息技术的发展,特别是针对企业资源进行管理而设计的ERP系统正是针对这些问题设计的,成功推行的结果必使企业能更好地运用资源。
3. 信息技术对资源管理作用的阶段发展过程
信息技术最初在管理上的运用,也是十分简单的,主要是记录一些数据,方便查询和汇总,而现在发展到建立在全球Internet基础上的跨,跨企业的运行体系,初略可分做如下阶段:
A. MIS系统阶段( Mament Information System)
企业的信息管理系统主要是记录大量原始数据、支持查询、汇总等方面的工作。
B. MRP阶段(Material Require Planning)
企业的信息管理系统对产品构成进行管理,借助计算机的运算能力及系统对客户订单,在库物料,产品构成的管理能力,实现依据客户订单,按照产品结构清单展开并计算物料需求。实现减少库存,优化库存的管理目标。
C. MRPⅡ阶段(Manufacture Resource Planning)
在MRP管理系统的基础上,系统增加了对企业生产中心、加工工时、生产能力等方面的管理,以实现计算机进行生产排程的功能,同时也将财务的功能囊括进来,在企业中形成以计算机为核心的闭环管理系统,这种管理系统已能动态监察到产、供、销的全部生产过程。
D. ERP阶段(Enterprise Resource Planning)
进入ERP阶段后,以计算机为核心的企业级的管理系统更为成熟,系统增加了包括财务预测、生产能力、调整资源调度等方面的功能。配合企业实现JIT管理全面、质量管理和生产资源调度管理及辅助决策的功能。成为企业进行生产管理及决策的平台工具。
E. 电子商务时代的ERP
Internet技术的成熟为企业信息管理系统增加与客户或供应商实现信息共享和直接的数据交换的能力,从而强化了企业间的联系,形成共同发展的生存链,体现企业为达到生存竟争的供应链管理想。ERP系统相应实现这方面的功能,使决策者及业务部门实现跨企业的联合作战。
由此可见,ERP的应用的确可以有效地促进现有企业管理的现代化、科学化,适应竞争日益激烈的市场要求,它的导入,已经成为大势所趋。
MRP基本原理
ERP是一个庞大的管理信息系统,要讲清楚ERP原理,我们首先要沿着ERP发展的四个主要的阶段,从最为基本的六十年代时段式MRP原理讲起。
基本MRP的原理
我们都知道,按需求的来源不同,企业内部的物料可分为需求和相关需求两种类型。需求是指需求量和需求时间由企业外部的需求来决定,例如,客户订购的产品、科研试制需要的样品、售后维修需要的备品备件等;相关需求是指根据物料之间的结构组成关系由需求的物料所产生的需求,例如,半成品、零部件、原材料等的需求。
MRP的基本任务是
(1)从最终产品的生产(需求)导出相关物料(原材料、零部件等)的需求量和需求时间(相关需求);
(2)根据物料的需求时间和生产(订货)周期来确定其开始生产(订货)的时间。
MRP的基本内容是编制零件的生产和采购。然而,要正确编制零件,首先必须落实产品的出产进度,用MRPⅡ的术语就是主生产(Master Production Schedule,MPS),这是MRP展开的依据。MRP还需要知道产品的零件结构,即物料清单(Bill Of Material,BOM),才能把主生产展开成零件;同时,必须知道库存数量才能准确计算出零件的采购数量。
因此,基本MRP的依据是:
(1)主生产(MPS);
(2)物料清单(BOM);
(3)库存信息。
它们之间的逻辑流程关系见下图。
MRP基本构成
一、主生产(Master Production Schedule, 简称MPS)
主生产是确定每一具体的最终产品在每一具体时间段内生产数量的。这里的最终产品是指对于企业来说最终完成、要出厂的完成品,它要具体到产品的品种、型号。这里的具体时间段,通常是以周为单位,在有些情况下,也可以是日、旬、月。主生产详细规定生产什么、什么时段应该产出,它是需求。主生产根据客户合同和市场预测,把经营或生产大纲中的产品系列具体化,使之成为展开物料需求的主要依据,起到了从综合向具体过渡的承上启下作用。
二、产品结构与物料清单(Bill of Material, BOM)
MRP系统要正确计算出物料需求的时间和数量,特别是相关需求物料的数量和时间,首先要使系统能够知道企业所制造的产品结构和所有要使用到的物料。产品结构列出构成成品或装配件的所有部件、组件、零件等的组成、装配关系和数量要求。它是MRP产品拆零的基础。举例来说,下图是一个大大简化了的自行车的产品结构图,它大体反映了自行车的构成:
图1 自行车产品结构图
当然,这并不是我们最终所要的BOM。为了便于计算机识别,必须把产品结构图转换成规范的数据格式,这种用规范的数据格式来描述产品结构的文件就七十年代闭环MRP是物料清单。它必须说明组件(部件)中各种物料需求的数量和相互之间的组成结构关系。下表就是一张简单的与自行车产品结构相对应的物料清单。
表1 自行车产品的物料清单
注:类型中“M”为自制件,“B”为外购件。
三、库存信息
库存信息是保存企业所有产品、零部件、在制品、原材料等存在状态的数据库。在MRP系统中,将产品、零部件、在制品、原材料甚至工装工具等统称为“物料”或“项目”。为便于计算机识别,必须对物料进行编码。物料编码是MRP系统识别物料的标识。
①现有库存量:是指在企业仓库中实际存放的物料的可用库存数量。
②收到量(在途量):是指根据正在执行中的采购订单或生产订单,在未来某个时段物料将要入库或将要完成的数量。
④提前期:是指执行某项任务由开始到完成所消耗的时间。
⑤订购(生产)批量:在某个时段内向供应商订购或要求生产部门生产某种物料的数量。
⑥安全库存量:为了预防需求或供应方面的不可预测的波动,在仓库中经常应保持库存数量作为安全库存量。
根据以上的各个数值,可以计算出某项物料的净需求量:
净需求量=毛需求量+已分配量- 收到量-现有库存量
MRP基本运算逻辑
基本MRP的运算逻辑图如图所示:
图1 MRP运算逻辑图
下面结合实例说明MRP的运算逻辑步骤。如图2是产品A的结构图。
图2 A产品结构图
于是,现在我们就可以计算各个产品及相应部件的需求量。
要注意的是,由于提前期的存在,使得物料的交付时间和净需求的时间有时会产生不一致。另外,我们为了简化计算,也暂时没有将安全库存量考虑在内。
表1 产品A的需求量计算(产品A,提前期=2,批量=10)
以上计算过程表明虽然1,2,4,6周均需要A,但实际A只要3及4周交付10个即可以了。这个下达时间和数量就是部件B和C的毛需求的时间和数量。
表2 部件B的需求量计算(部件B,提前期=1,批量=20,1A=2B=2′10=20)
表3 部件C的需求量计算(部件C,提前期=3,批量=60,1A=3C=3′10=30)
从这一层的分解可以看出,对于部件B,它还在需要在第3周交付个10个,为此我们还要按照产品结构展开下一层的分解。分解方法和步骤如前,这里我们就不一一展开了。
经过了以上的展开计算后,我们就可以得出产品A的零部件的各项相关需求量。然而,现实中企业的情况远没有这样简单,在许多加工制造性的企业中,由于产品种类繁多,并不只是产品A要用到部件B、部件C以及零件D和E,可能还有其他产品也需要用到它们,也可能零件D、E还有一定的需求(如作为服务件用的零件等)。所以,MRP要做的工作是要先把企业在一定时段内对同一零部件的毛需求汇总,然后再据此算出它们在各个时段内的净需求量和交付量,并据以安排生产和采购。这里为了解释它的原理,我们可以设,企业还有产品X要用到零件D,此外,零件D还有一定的需求。则对零件D的总需求计算如图3所示。
求得了零件D的总需求量,我们就可以根据前面介绍的原理,进一步计算出该零件总的净需求量和交付量,由此,有关的生产和采购就能够在适当的时间给予安排。这样,我们就完成了一个基本MRP的运算循环。当然,这一切都是在计算机的帮助下,遵循分层处理原则(ERP系统是从MPS开始计算,然后按照BOM一层层往下进行,逐层展开相关需求件的计算,直至低层)完成的。应该说,这种借助于先进的计算机技术和管理软件而进行的物料需求量的计算,与传统的手工方式相比,计算的时间大大缩短,计算的准确度也相应地得以大幅度地提高。
图3 相关需求与需求同时存在时的需求量计算
60年代时段式MRP能根据有关数据计算出相关物料需求的准确时间与数量,但它还不够完善,其主要缺陷是没有考虑到生产企业现有的生产能力和采购的有关条件的约束。因此,计算出来的物料需求的日期有可能因设备和工时的不足而没有能力生产,或者因原料的不足而无法生产。同时,它也缺乏根据实施情况的反馈信息对进行调整的功能。
正是为了解决以上问题,MRP系统在七十年代发展为闭环MRP系统。闭环MRP系统除了物料需求外,还将生产能力需求、车间作业和采购作业也全部纳入MRP,形成一个封闭的系统。
一、闭环MRP的原理与结构
MRP系统的正常运行,需要有一个现实可行的主生产。它除了要反映市场需求和合同订单以外,还必须满足企业的生产能力约束条件。因此,除了要编制资源需求外,我们还要制定能力需求(CRP),同各个工作中心的能力进行平衡。只有在采取了措施做到能力与资源均满足负荷需求时,才能开始执行。
而要保证实现就要控制,执行MRP时要用派工单来控制加工的优先级,用采购单来控制采购的优先级。这样,基本MRP系统进一步发展,把能力需求和执行及控制的功能也包括进来,形成一个环形回路,称为闭环MRP,如图1示。...................