摘要:本文介绍了Journaling and Automation (Journamation),新一代NX开放式框架下的自动化日志记录工具的用途和特点,它采用支持C++,.NET 和 Java语言的通用API,具有自动解释、记录和播放NX 任务的功能并支持快速简易化客户开发和专业级客户开发。文中还重点介绍了3个该类客户化开发的应用实例。
关键词:Journaling, Automation, Journamation, 客户化开发,自动化
前言
知识驱动的自动化一直是UGS公司产品的发展愿景,其中心思想就是PLM“开放式设计”的理念,承诺创造各种各样最合适的工具以提供柔性化的解决方案去捕捉和保留客户在整个支持的客户环境中的知识。在过去的十几年里,UGS公司不仅仅致力于软件功能实现、使用效率提高这种应用层面的实施与创新,同样还关注组织内部的知识提取保留,以及流程自动化等高端知识型自动化平台的开拓和发展,并一直走在高端CAD/CAE/CAM,PLM市场的前列。一个优秀的大型工程软件除了提供通用的功能之外,还要满足各类用户的知识驱动自动化和客户化的需求,在构筑先进一体化开放的框架的前提下提供了各种开发工具和接口。UGS 公司一直秉承这样的理念,持续开发现有的工具并且不断创造出新的工具,以满足其在多种软件、硬件和网络化平台上的运行通用性。Journaling and Automation,又称为Journamation 简称JA,它是NX3.0.0版本推出的新一代自动化工具,既具有平台无关性和开发语言无关性的开发优势,又兼备易操作性、柔性化等多种先进智能化自动化特点,是PLM开放框架下的一种新型客户化开发工具。
1. 什么是JA?
Journamation(Journaling and Automation)是NX Open框架下一个具有自由的中性语言平台的合并日志化(Journaling)和自动化(Automation)工具。它记录构成一个常用流程的一系列动作,类似于UG/NX Macro工具,同时也是一种移植I-DEAS 程序的工具。Journaling是一种实现快速自动化的工具,它通过解释记录一个NX任务来产生一个脚本文件,之后用户可以直接播放这个文件来重现这个任务。此外用户还可以编辑这个脚本文件以加强某些功能,如加入循环,变量和条件逻辑等基本的程序构造,达到软件客户化的结果;或者直接利用JA/APIs进行专业化的客户化编程,从而实现了客户化过程的自动化(Automation)。
2. JA 工具的特点和优势
2.1基于开放统一的先进架构
JA 是NX Open架构之上的一个工具,在这个工具之下,NX提供了大量的JA/APIs来支持它的应用。NX提供了一个自动化的构架用来作为基础为所有的NX APIs, KF(Knowledge Fusion) 和一个Journaling功能作服务(图1)。这个框架被称为Common API(通用API层),这些基础合并为一个功能强大而且是自由语言中性特性的平台Journaling和Automation的工具。这个单一的自动化框架反映了公司的自动化的战略--提供一个通用、兼容和稳定的方法为我们的用户构筑不同种类客户化API接口。这种开放式框架在NX 内柔性化地集成其他辅助软件的功能,目的是在不同的地点(不同的网络)甚至跨网络的环境下,能够分享不同数据平台的数据来集成一些第三方和NX的应用,或者创建客户化的应用软件,从而允许不同地域和多学科的团队更加有效地进行协同化设计、开发和制造他们的产品。
与以往各种开发语言API库单独开发的状况相比,现在NX开发团队采用同一套工具在内部进行开发,然后再用一套公用的API层为各类语言接口进行转化。换而言之,以用户的角度看,就是说无论你采用哪一种语言的API其最终调用的是同一个内核函数。上图2可以看出NX Open APIs为客户提供了NX Open C/C++ API, NX Open for .NET API,NX Open for Java,JA/APIs,KF等接口,通过这些接口可以与NX Object Model相连接,从而调用NX 的各个功能。基于不同语言或工具的API都是由同一个对象转化而来的这样的一个显著特点,所以NX/Open能够保证了功能的同一性和语言的灵活性,目前它支持C++,.NET和Java等语言。NX/Open 的优势框架允许NX 有精确的能力为多种语言提供平台,这意味用户能够选择自己认为合适的语言开始工作。由于支持所有的语言都是由通用的代码产生的,所有自动化的对象和方法将作为对应语言的原生对象,这里就再不会出现某种函数只有某一类语言才能支持而不被另一种语言支持的情况,也就是说具备了平台无关性和开发语言无关性的特点。
这样用户可以选择所偏爱的语言进行程序开发,并且充分利用相应语言平台的优势,比如Java语言的跨平台特性,以及.NET的易用性。同时也保证了JA 和其他开发工具比如KF的功能平行性。
这是一个较其他同类CAD/CAE/CAM软件平台工具的显著优点,它克服了开发工具的不统一性,保证了各类工具是由唯一内部对象衍生。对于产品的升级以及移植都非常有利。在产品的架构上具有先进性,符合平台无关性和开发语言无关性的发展趋势。
2.2 中性化的语言平台
基于上述这个优秀的平台,JA工具自然具备了这个中性化自由语言的优点。这个原因为了最大化地覆盖用户是适用面,因为当今3种最流行的语言-C++,. NET 和 Java,每一种语言都拥有几乎相同数量的用户,选择他们中的任何一种来作为主要的NX自动化平台语言都意味着将有一部分用户不能使用自己熟悉的语言进行工作。JA提供了针对上述三种语言的提供了相应的API,以支持对记录任务的三种语言解释和VB.NET的自动播放。
2.3 可持续的移植性
JA较以往的UG/Macro相比,它不和软件UI直接绑定,而只记录后台的执行命令。对于不同的版本,用户程序的可移植性强,不受UI变化的限制和影响;并且可以选择多种语言进行录制或编辑,而NX/Macro/Macro则欠缺上述两种优点。此外JA捕捉的信息更具有描述性和标准性,方便了用户的理解和客户化开发。
3. JA 在应用上的优势和特点
一直以来UGS希望能够为工程师提供一系列知识集成工具,它需要具备专业但简单、方便且快速的特点,JA 工具正具备了上述特点。用户可以利用它方便地捕捉用户的工作任务,并且进行工作流的快速重复。这一特质使得它成为快速自动化的利器。除此以外,对于软件开发人员来讲,它是一种新型的自动化测试工具,也可协助用户报告软件的问题,大大提高了软件开发的效率和质量。
相对于以往的自动化工具,在应用方面JA 有以下两个显著优点:
■ JA支持用户选择适当的支持语言解释当前的录制的NX任务,目前支持任务解析为.NET, C++, Java,但是NX5.0.0版本只支持播放VB.NET。随着JA 功能的进一步完善,NX会支持其他种类的语言播放。不过,用户可将一个日志文件通过编译转化为dll, exe, 或者.jar 格式来运行自动程序,这种情况下是对这3种语言均适用。
■ JA属于Gateway的功能,执行它不需要附加的license,这样可以最大化地节约用户的使用成本。当然如果执行特定的JA程序时,它所调用的API所属模块的license是必备,否则就不能执行。
当然目前的JA应用还有一些限制,比如同一时刻只能支持一个journal文件播放, 它不能再引用另一个journal,也不能从一个journal进入另一个客户化的应用程序。
另一个显著的功用就是借助JA/APIs进行专业和非专业的客户化开发,目前NX已经为大部分内部函数提供了JA/APIs。以下会介绍几个例子来进行详细地说明。
4. JA 客户化开发应用实例
一直以来,软件客户化开发都需要太多的专业编程背景,以至于大多数从事工程应用的工程师对此只能忘而却步。JA 具有平台无关性和开发语言无关性的开发优势,很好地跨越了这个障碍。让开发人员专注于功能的实现,而非工具本身。JA 工具的出现大大降低了进入客户化开发的门槛,也最大程度地提高了开发的效率,同时预示着CAD/CAE 软件快速定制的时代到来。
不同应用层次的用户会基于不同的应用需求,来定制开发不同的应用程序。以下列举3种不同层次不同需求的应用实例,以此说明新一代NX/Open开发工具JA 的应用优势,使得更多的用户能够快速地掌握该项工具,提高工作效率,缩短产品开发周期。
4.1工作任务的快速重复
在保障企业的可持续性发展前提下,随着企业的发展要不断积累已有的知识,重复利用原有的知识,保持产品的持续竞争力是整个产业的发展趋势。对于一个组织内部的知识的知识化提取,并且将其转化为可重复利用的电子格式予以保留,这是对软件平台的一个新的挑战。JA的出现恰好地解决了这个需求,它可以捕捉和分享任务动作,自动地重复工作流。帮助用户真正地进行知识性捕捉、重复使用以及过程自动化。
以下面的一个CAD模型的建模为例来说明如何利用JA工具进行快速捕捉知识,重复工作任务的过程。
首先在Customer Defaults里设置Journal记录的缺省程序语言和格式。打开File→Utilities→Customer Defaults...→General→Journal, 我们选择VB作为录制语言。
在工具条栏,启动Journal 工具条,点击Record,创建文件,就开始记录整个模型的创建过程。开始日志纪录之后,所有支持JA的菜单在其后面显示绿色的圆形图标(图5,工具条在其右下方呈现出绿色的下方块),如果只支持部分功能则后面显示黄色半圆形图标例如Preference→Visualization。用户可以通过操作JA 工具条的”Pause recording” “Insert user pause “ 来控制暂停、编辑等操作。等录制完毕,选择该文件执行Play 运行刚才录制的文件,用户可以看到刚才被录制的复杂模型被迅速地重构出来。
这种应用实例,可以作为企业和教学用户实现快速重复模型构建或者CAE工作流的重现的方法,可用用于教学和演示,或者重现工作流程中的问题。此外在流程当中有效地保留或保护用户的智力数据和流程。
4.2轻松化的客户应用开发
用户利用JA工具条的提供的编译器,对录制出的程序可进行编辑,如修改刚模型的某个几何参数,就可以达到对原有模型进行快速进行参数化建模的目的。继续上面的这个例子,来举例说明如何利用录制下来的Journal 文件进行轻松的快速客户化开发。
首先在录制之前,选择开发人员熟悉的语言类型,并考虑平台的通用性。目前NX5版本,只支持直接播放VB.NET语言的Journal 文件。
依照上述的步骤,JA将NX 的交互任务解析成了VB.NET代码,利用这些代码进行编辑,例如提取该模型某个孔的直径为对象并改为采用界面输入。这里我们找到定义Hole的位置见图6,只需要添加一个简单的VB语句:InputBox (“Input Hole Diameter”, “Input Hole Diameter”)就可以让Hole的参数在运行时由用户通过界面见图7动态地添加设定。
这样用户通过这个文件可以做到快速地进行客户开发,只需运行这个被客户化过的文件,就完成一系列的支架快速参数化建模。这类开发给我们带来一种启示,利用JA提供的功能,可以快速地完成一系列类似模型的CAD建模和CAE分析过程。用户只需定义他所需要更改的数据,而其他的相同流程步骤都可以通过自动化脚本运行完成,极大地简化了完成任务所需的时间和步骤,并且降低了操作人员的技术门槛,尤其值得广大企业用户的推广和应用。
4.3专业级的JA/APIs 开发
通用软件为用户提供了统一化的功能,这些功能常常仅能够满足普通用户的应用。为了满足用户特殊的需要,用户常常需要采用合适工具在现有软件的环境下开发自己的特殊应用模块。Function Toolkits for Response Simulation就是采用为JA/JAVA APIs的一个为NX/Advanced Simulation -Response Simulation (NX/CAE动力学分析)定制的应用模块。考虑到平台的通用性,我们采用了JAVA语言,用户可以通过执行.Jar 来运行该文件,或者从下面的Response Simulation 工具条上启动它。下面以这个模块为例,针对几种用户常见的需求来谈谈专业开发的应用特点。
辅助生成定制数据
该工具包提供了动力学分析 (Response simulation) 里用户常用的载荷曲线库,有时间域、频域、冲击和随机功率谱载荷等,它针对NX5/Advanecd Simulation Response simulation 里的这4大类分析类型提供了相对应的载荷类型。例如做瞬态分析时,我们需要一类满足特定统计特性的随机时间历程曲线。这类数据的生成比较困难,以往都需要MATLAB等专业软件来进行生成,而后再通过数据转化变换为载荷施加在分析结构上。现在运用这个界面,设定时间的长度,μ和σ以及相应的参数和类型,就可以方便地生成用户所需要的随机时间历程数据了。
这类应用就是将一些常用的工具嵌入到了对应的模块里中,如同一个触手可及的工程收手册、载荷包、计算器,从而提高了工程人员的工作效率,取代了查找手册、使用计算器等这类繁琐工作。对于用户而言可以把特定产品工程分析的载荷或者其他常用的数据公式通过客户化开发固化在对应了客户化程序中,达到缩短时间、减少出错率的目的。
扩展软件的通用功能
下面以工程上常用的快速傅立叶变换FFT ,来谈谈软件的功能扩展。
快速傅立叶变换(FFT)是工程上常用的一种数据转化,依据不同的工程需要还有很多特殊的专业应用。通用的软件常常是无法满足这样一系列特殊的需求的,但是可以在通用软件提供核心模块上作客户化开发。NX5提供了标准的快速傅立叶变换(FFT)功能,同时提供了相应的JA/API。客户可以把这个核心的API当作子程序来做自己的定制开发。可以大大地简化了编程的难度和工作量。
比如旋转机械在启动时候的数据与平稳运行时候的数据的差异性就比较大,直接转化FFT,数据会出现较大的误差,需要对数据进行噪声平化处理即平均计算,例如指数平均法,对时间区域采集的数据分帧进行FFT转化,之后采用不同权重进行加权平均,就可以得到经过噪声处理的数据。依据客户的这个需求我们在这个工具包里提供了FFT的扩展功能-FFT Averaging,它包括三种不同的数值平均法(Linear,Exponential,Peak hold)来满足不同客户的工程实际需求。
此外时间域数据与随机功率谱之间的数据转化,也会涉及到傅立叶变换计算,我们就把FFT_JAVA/API当作一个傅立叶变换子程序,进行调用,完成了Time→ PSD, PSD →Time两个子功能。
采用类似的方法,用户可以采用已提供的API作为子程序完成复杂的客户化开发。不同的行业用户可以基于自身的情况,在扩展软件的功能的时候充分考虑自身行业的特点,加入专业的应用模块,实现知识的扩展和智能数据的固化。
扩展支持外部数据格式
目前软件种类繁多,每个企业都会有各种格式类型的数据文件,或者出于对外部保密的因素,有些企业自己会制定一些非通用格式的文件。为了满足这类数据的可移植性,常常需要进行外部的数据转化。面对种类繁多的数据格式,通用软件是无法一一满足的。利用NX5提供的特定数据API接口,可以将一些数据转化为中性格式,从而保证了数据的可移植性,而且成本低、灵活性好。而且在选择开发语言方面,JA/API的无差异性和跨平台性又是一个极大的优势。
比如在NX5软件中,XY Graphing模块提供了常用的外部数据格式比如Nastran .op2 格式数据的转换,我们又针对客户的需求在该工具包内利用AFU_JAVA/API增加了另一类NASTRAN 结果文件Punch(.pch)文件的转化功能,将其转化为AFU 格式,这样该类数据就可以读入NX5平台进行数据操作了,达到对外部数据利用和转化。
5 总结和展望
上个世纪末,随着参数化特征设计和智能特征发展,设计人员的工作从专注于设计转变为非工具本身了,大大提高了产品建模的效率和质量。UGS在这方面一直处在行业领先的地位,为客户带来了最大化的产品易用性和实用性,同时经过多年的努力NX产品完美的统一开放框架为知识驱动自动化提供了诸多利器比如Knowledge Fusion ,NX/Open等等,JA作为具有行业优势的自动化工具,实现了知识驱动自动化和快速客户化的完美结合,是新一代的设计软件的技术革命。它的易用性,适应性、可移植性,使得开发人员可以专注于客户开发的功能而非工具本身了,降低了进入软件客户化的门槛。经过十几年的发展,CAD/CAE从通用时代已经慢慢进入到了客户定制化的个性时代了,以往程序化的客户开发造成普通设计人员无法承担这样的任务,而专业程序员又需要过长的时间来理解定制模块的用途。JA 的出现和发展使得一般设计工程师可以轻松地进入这个曾经让人望而生畏的领域,它意味着一个快速的简单定制化的时代到来了,越来越多的设计人员可以加入到自动化和客户化的实现行列里了,有助于提高设计的流程化,捕捉产品的智能化,扩展知识的易用化;最大限度地保留了继承了劳动力的知识,实现了UGS一贯对客户的承诺——开放式一体化框架下知识驱动自动化。
JA 工具的发展历经了NX3到NX5版本,其应用性不断增强,功能也不断扩展,从最初的对CAD 建模特征的支持,到NX5版本对CAE的应用的全面支持,实现了PLM 一体化框架下的集成应用,真正实现了整体解决方案的知识驱动创新。我们也希望看到越来越多的客户采用这样的工具,针对自己的实际需求开发出更多更好的客户化应用程序,在过程及方法的标准化、知识捕捉以及开发时间上面获得更大的收获,同时我们也积极地收集全球客户的反馈意见,努力增强下一个版本的实用性和功能扩展性。(end)