当前位置:文档之家› webmethods文档

webmethods文档

WebMethods中文文档

一、概述

webMethods是时下欧洲比较流行的EDI开发集成平台,国内比较少用到。它以百分百的服务主导架构为基础,可用于开发EDI项目,并进行综合逻辑编辑,测试和调试的工具。企业可以根据特别需要组装自己的解决方案,而不必受到原有设计的局限。通过使用webMethods的方案,客户将可提升订货效率,更有效地管理存货水平及客户的满意度。

使用该工具之前必须安装该工具,保证可以访问webMethods 综合服务器;获得可以访问服务器的帐号,密码。每次登录之前先确保服务器已经连上,相关的WebMethods服务也已经启动,然后再输入账号密码。WebMethods服务器可以选择本地服务器,也可以选择远程服务器。但,WebMethods相当耗内存,建议内存配置最好在1G以上。

1.1界面窗口介绍

打开WebMethods Developer,弹出登录窗口,如图:

图1.1

从这里输入正确的帐号密码,以及服务器端口号才可访问服务器,进入webMethods平台。

如图是webMethods开发窗口主界面:

图1.2

WebMethods主界面通常情况下包括三栏,如上图,左边一栏显示WebMethods服务所连接的服务器上的WM包,双击包中文件夹下的service或者schema,中间栏里会给出该项的详细信息。可以看见中间栏又分为上下两个栏目,上面显示的是具体内容,下面显示的是输入输出参数和Mapping。这里所说的Mapping,在Pipeline栏实现,可以将它理解为一个映射的过程,实现数据赋值,传输。实际上用WebMethods设计时最主要的工作就是Mapping。Comment栏:注释描述SERVICE的相关信息。右边一栏显示的是中间栏里某项的属性信息,

将General选项展开,通常包括这几项,如图1.3。

图1.3

右栏的下面一块是用来显示输出的,我们指定多少个输出项,它都会从这个位置输出显示,点击某个项,下面会显示它的取值,若该项没有值,则显示红色的字符“null”。如图

图1.4

在如下图所示的位置可以实现重新登录,关闭登录或者刷新平台信息。

左中右3大栏中可按此图标,实现该栏的显现,隐藏。

图1.5

如上图Recent Elements栏显示最近几次访问的文档元素,可以查看,直接打开访问。

1.2控件介绍

1.2.1简单介绍下相关概念:

Pacakge:一个文件夹,可以看成是一个容器,里面各层展开包含相应的元素。“A

package is a container that is used to bundle services and related elements. Packages are designed to hold all of the components of a logical unit in an integration solutio n.”

Document Type:

在一般编程时,我们常常需要定义一些数据类型。在Developer里,这种数据类型的定义是通过Document Type来实现的。这种Document Type很像structure,Document Type的定义可来自Schema。Developer里创建Schema,由Schema生成所需要的Document。

Service:

这里的service很像我们平常程序中的函数,doc:Integration Server is a service-base integration broker. A service is a process that may be invoked to perform a wide variety of tasks.

因为原来函数是可以调用函数的,所以,Service也是可以调用Service的。

Element

Elements可以看成是package中可以包含的元素。doc:Elements include folders, services, specifications, IS document types, triggers, and IS schemas.

在Developer中,有一些常用的Element,其实都是傻瓜化了的程序功能。比如Adapter Service,提供了对数据库操作的支持,我们只需要在IS中定义好相应的数据库联接,就可以方便的在Developer中调用。又比如Trriger,它提供了对subscribe的支持(以后我会讲publish-subscribe)。比如Notification,它能够监视数据源的变化,有力地支持了数据同步功能。这些可以说是webMethods为集成提供的不错的工具。

Element Names

Elements Names比较特别,是由目录名和element名构成的。

Lock

Lock很像版本控制里的概念。doc:A lock on an element prevents another user from editing that element. There are two types of locks: user locks and system locks.文件呈现红色勾

勾时,表明已经其他用户锁定,此时只能进行查看,运行而不能编辑文件。如果要编辑文件则必须UNLOCK改文件,再LOCK FOR EDIT,取得该文件的控制权。

Flow Service的功能类似于一般的函数。但是,这个函数是用webMethods自创的Flow语言写的。doc里的定义: A flow service is a service that is written in the webMethods flow language. 每个Flow Service都有输入输出。Flow Service

是由Flow Step构成的。我们可以将flow step想象为函数的一条(或者多条语句)。doc:

A flow step is a basic unit of work.

1.2.2控件简单说明

flow step:Developer开发主要常用到6种控件-----BRANCH,SEQUENCE,REPEAT,LOOP,EXIT,MAP,这6种统称flow step。flow step可以看做是对一般编程语言的赋值、流程控制等的重新定义,它还可以调用已有的Services。

1.

根据需要插入Services,类似于调用函数。如图:该Services函数则以所在的目录路径自动命名。

图1.6

2.

BRANCH是分支结构的意思,它与Java里的switch类似。用来确定BRANCH走向的参数名恰好就是在switch中定义的. 而子选择参数是以Label确定的,当同一属性段下有多个值时可使用该控件分支执行。如图是BRANCH应用的一个例子:(注意:保证每个BRANCH的switch 路径走向正确,每个Label都是唯一的,否则报错或者直接跳过该BRANCH)。

图1.7

3.

SEQUENCE是顺序结构的意思。它的意义在于它可以将多个flow step封装成一个结点来看待。并且,在其内部可以定义运行到何时结束,比如until failure, until success, until done等。如图,定义了一个SEQUENCE父结点,底下子结点包含了MAP,LOOP,BRANCH以及其子结点SEQUENCE,各个flow step展开有各自的下级子结点等。另外可以在SEQUENCE的属性栏的comments 写上注释‘time’,简单描述SEQUENCE的内容。

图1.8

4.

REPEAT是重复,它可以指定重复次数。

5.

LOOP,循环的意义在于它极大方便了对数组的枚举。当该段输出存在多个属性值时,使用LOOP,分别取值,多次循环执行。如上1.8图,在LOOP的属性栏要设定intputarray 和outputarray。Intputarray主要是指定该循环路径走向在哪一个属性段下,通常循环中存在嵌套,要注意不可跳过结点循环。比如:下面要在SEA_HBL_DTL下做循环,该循环嵌套在SEA_OBL循环下,但两个循环间不可直接跨越,跳越了SEA_HBL这层循环

父循环和子循环的路径,兄弟循环之间的路径要保证正确。对于outputarray,只需在最外围循环设定,指定到该段相应的输出段名。如下图

图1.9

6.

EXIT是退出的意思,它可以选择退出到程序的那一层。通常在EXIT的属性里label栏写明执行跳出的判定条件,在Exit from 里选择要跳到程序哪个位置,有父结点parent,循环loop,整个流程flow,当满足EXIT 指定的label条件时,就退出到指定的位置。如下图

图2.5

7.

MAP是映射赋值的作用,插入一个新的MAP时,先选中一个位置点击,就可以在该位置下方插进一个新的MAP。WebMethods设计开发的Mapping工作主要在该flow step完成。它作为构成其他flow step最小的元素,如图1.7 BRANCH底下分为3个MAP支点。在MAP 里可以调整数据传输任何一个结点的内容:

1)通过连接(linking),增加(adding),删除(delete),丢掉(dropping)操作变量,根据

需求为数据传输做准备。

2)清除pipeline的变量,前一个STEP遗留的变量而不被后面的STEP所需要的

3)移动变量位置,给变量赋值,初始化变量值

4)可以把document从一种格式MAPPING 映射转换到另外一种格式

8.

上下移动

左右移动

可实现flow step的上下左右的移动,在开发过程中更改确定该step位置。可以选择6种控件任一种再按移动键,调整控件间的父子,兄弟关系到所需要的状态。

1.3详细介绍Mapping Data in a Flow Service

Data mapping:

数据映射是一种在services or document之间解决数据格式表示法转换的过程。这种转化包括名字转化,结构转化以及赋值格式转化

图2.0

MAPPING主要在Pipeline里实现,分为三栏:

Pipeline IN-----输入栏,显示所有的输入变量和DOCMENT。

Transfomormers------中间转化栏,该栏显示所调用的service,MAPPING的过程中可在此插入service,完成数据值的转化。

Pipeline OUT------输出栏, 显示所有的输出变量和DOCMENT。

LINK 把输入变量和输出变量链接起来,实现值传递。当需要引入中间转换函数(Transfomormers)把Pipeline IN连到函数的Service In,Service Out连到Pipeline OUT变量。做LINK要特别注意左右两端的变量类型要一致,否则运行时会报错。

DROP 丢弃无关紧要的变量,可以先把该变量的值传递(LINK)给输出的变量再DROP 掉。

Set Value 赋值双击变量,可以给该变量赋于固定的值。通常用于写死信息,或者引入新变量时赋予空值以防变量丢失。(注意:如果该变量已经被赋值,在该STEP里就不能被LINK 到其他变量。

滚动条设置:只有右边滚动条,点一下可切换到,左右两个滚动条分别滚动Pipeline IN和Pipeline OUT

此处可以创建新变量,点击可选要创建的变量类型如图

调用函数时,点此选择若找不到所需要的函数,选Browse,从WM Developer包里找。

举个例子说明:

图2.1

如图2.1变量String1被赋予最初值。

图2.2

如图:2.2Document1被LINK到Document2,当这一步执行以后,Document2的值就被映射成Document1的内容。

图2.3

如上几步,String1在此处再次被赋值,将更新最初所给的值,String1而传到Document2里的值也相应的被更新。

图2.4

可以看到结果里,Document2也有String1(modified),因为Document1被映射拷贝到

Document2了。

所以为了防止Document2里的值被后面的STEP更改,通常从源Document1里选中单个子变量LINK到目标Document2里的子变量,这样可以只取目标Document所需要的几个子变量。还有可以调用中间函数实现两个变量的传值(比如时间传到目标变量需要定义更新新的格式,只取源变量字符串某段的代码等等)。

注意几点:Document和该Document底下的子变量不能同时被LINK,被LINK的源和目标结构要一致。而且Document1被LINK到Document2时,Document1内部结构变量数多于Document2。

1.4 常用函数介绍:

1.subshring 取输入字符串的子串,beginindex设定所取字符串的起始,endindex设定结束位置。

2.getCurrentDateString 取系统当前时间,在pattern里设定时间格式如:MMddHHmm,yyyyMMdd

3.addints 变量bl_num整数累加,num2里输入每次累加的数,累加和值仍输出到bl_num

3. addFloats 累加的数据类型是Float

4.numericFormat 数据格式化pattern里设定数据格式如:000.00或000

5.字符串连接concat 多个字符串链接multiConcat

6. setValueConditionally可以理解为条件式赋值,可以校验当conditionField有值时,才将value输出,否则value不输出。

7.Replace 替代字符串的作用,searchString中输入字符串中的存在的字符,查找。replaceString输入替代字符,把字符串中指定的字符替代掉。

8.toUpper 大写,校验输入字符串,如果出现小写字符,则把它转化成大写字符再输出。

9. fixLongFieldLength 通常用于分割字符串比如:分隔收发货通知人地址信息,分隔麦头,货名。,

i nString:需要分隔的字符串

fieldLength:每一个分隔的字符串最大长度

validFieldNumber:以此数字为一组segment。

validSegmentNumber:此字符串分隔的segment数量。

splitFieldsByTab:如果正文中有TAB键,是否以TAB键分隔字段。

splitSegmentsByReturn:是否以回车来分隔segment。

splitFieldsByReturn:是否以回车来分隔字段。

prefixStringForEachField:在每个字段前加的字符。

appendStringForEachField:在每一个字段后面加的字符。remainedTextConcatMark:在最后一个segment的最后一个字段加的字符。isDelEmptyField:是否去掉segment中的空字段,缺省为true,去空段。

replaceReturn:用所输入的内容替换回车,如果没有输入内容,则保留回车。

开发实战演练

下面我们通过Inttra公司提供的报文标准来做一个EDI的开发实例。

首先,让我们先看看Inttra提供的标准——明确我们的任务。

*******************************************************************************

INTTRA SO报文说明

发送方标识:由inttra提供给客户的唯一表示客户身份的代码

日期时间:本文件的生成日期和时间

14):客户自己定义(建议使用日期时间+序号)

信息编号时间+序号)

提单辨识码:由提单号+?FB?

)

运输条款代码:29→ CY to DOOR;27→ DOOR to DOOR;28→ DOOR to CY ;30→ CY to CY

拼箱类型:2→整箱和主拼;3→加拼(若为…3?,则RFF+SI 必须)

备注(512):存放备注信息,以及根据船司的需要填写特殊的备注信息;长度不够时,可以自循环99次

提单备注(512):存放提单条款相关信息;没有该信息,本行应该不出现

付款地代码:必须使用INTTRA的代码;若没有该信息,本行应该不出现

付款地:详细的地点描述;

提单签发地代码:必须使用INTTRA的代码

102

签单日期:必须出现在LOC+73的后面;若没有该信息,本行应该不出现

特殊编号:根据船司的需求,填其需要的编号;在整箱和主拼的条件下(TSR+30+2),不可以重复;若没有

订单号:PO 编号;若没有该信息,本行应该不出现

P C→third party to pay;A→payable elsewhere

航次:不要带‘V.’

船司代码:必须使用INTTRA的代码;若没有该信息,可以不出现,这时‘:172’也不应该出现

收货地代码:必须使用INTTRA的代码;

?

预计开船日期:必须出现在LOC+9后面;若没有该信息,本行应该不出现

的代码;

交货地代码:必须使用INTTRA的代码;

相关主题
文本预览
相关文档 最新文档