??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产中文在线二区三区免,992tv在线观看免费进,在线电影一区二区http://www.aygfsteel.com/heyang/category/53170.html为实现完而进行探?zh-cnWed, 26 Dec 2012 04:37:28 GMTWed, 26 Dec 2012 04:37:28 GMT60原样复制原XML的一DXSLT代码http://www.aygfsteel.com/heyang/archive/2011/12/21/366957.html何杨何杨Wed, 21 Dec 2011 12:14:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/12/21/366957.htmlhttp://www.aygfsteel.com/heyang/comments/366957.htmlhttp://www.aygfsteel.com/heyang/archive/2011/12/21/366957.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/366957.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/366957.html
输入Q?br />
<id="1"><id="2">3</b></a>

代码Q?br />
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
<xsl:template match="node()">
        
<xsl:copy>
            
<xsl:apply-templates select="@*|node()"/>
        
</xsl:copy>
    
</xsl:template>
 
    
<xsl:template match="@*">
        
<xsl:attribute namespace="{namespace-uri()}" name="{name()}">
            
<xsl:value-of select="."/>
        
</xsl:attribute>
    
</xsl:template>
 
    
<xsl:template match="text()">
        
<xsl:value-of select="."/>
    
</xsl:template>
</xsl:stylesheet>

输出Q?br />
<?xml version="1.0" encoding="UTF-8"?><id="1"><id="2">3</b></a>


何杨 2011-12-21 20:14 发表评论
]]>
几个XSLT片段http://www.aygfsteel.com/heyang/archive/2011/12/14/366314.html何杨何杨Wed, 14 Dec 2011 01:49:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/12/14/366314.htmlhttp://www.aygfsteel.com/heyang/comments/366314.htmlhttp://www.aygfsteel.com/heyang/archive/2011/12/14/366314.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/366314.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/366314.html<date>122811</date>输出QCode highlighting produced by Actipro CodeHig...  阅读全文

何杨 2011-12-14 09:49 发表评论
]]>
使用XSLTq行XML转换http://www.aygfsteel.com/heyang/archive/2011/12/12/366180.html何杨何杨Mon, 12 Dec 2011 13:26:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/12/12/366180.htmlhttp://www.aygfsteel.com/heyang/comments/366180.htmlhttp://www.aygfsteel.com/heyang/archive/2011/12/12/366180.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/366180.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/366180.html
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="xsheet.xsl"?>
<students>
    
<student id="123">
        
<name>Andy</name>
        
<score>69</score>
    
</student>
    
<student id="345">
        
<name>bill</name>
        
<score>88</score>
    
</student>
    
<student id="678">
        
<name>Felix</name>
        
<score>96</score>
    
</student>
    
<student id="987">
        
<name>Zerg</name>
        
<score>72</score>
    
</student>
    
<student id="236">
        
<name>Grrr</name>
        
<score>59</score>
    
</student>
</students>

XSL文gQxsheet.xslQ:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
    
<xsl:template match="/">
        
<html>
        
<head>
            
<title>成W?/span></title>
        
</head>
        
<body>
            
<table border="1">
                
<caption>学生成W?/span></caption>
                
<tr>
                    
<td>序号</td>
                    
<td>ID</td>
                    
<td>姓名</td>
                    
<td>成W</td>
                
</tr>
                
<xsl:for-each select="students/student">
                
<xsl:sort order="descending"  select="score"/>
                    
<tr>
                        
<xsl:choose>
                            
<xsl:when test="position() mod 2 = 1">
                                
<xsl:attribute name="style">background:#336699;</xsl:attribute>
                            
</xsl:when>                            
                            
<xsl:otherwise>
                                
<xsl:attribute name="style">background:#00ffcc;</xsl:attribute>
                            
</xsl:otherwise>
                        
</xsl:choose>
                    
                        
<td><xsl:value-of select="position()"/></td>
                        
<td><xsl:value-of select="@id"/></td>
                        
<td><xsl:value-of select="name"/></td>
                        
<xsl:choose>
                            
<xsl:when test="score &gt; 60">
                                
<td><xsl:value-of select="score"/></td>
                            
</xsl:when>                            
                            
<xsl:otherwise>
                                
<td><font color="red"><xsl:value-of select="score"/></font></td>
                            
</xsl:otherwise>
                        
</xsl:choose>
                    
</tr>
                
</xsl:for-each>
            
</table>
            
<br/>
            
<table border="1">
                
<caption>l计表格</caption>
                
<tr><td>d</td><td><xsl:value-of select="sum(//score)"/></td></tr>
                
<tr><td>个数</td><td><xsl:value-of select="count(/students/student)"/></td></tr>
                
<tr><td>及格人数</td><td><xsl:value-of select="count(/students/student[score > 60])"/></td></tr>    
                
<tr><td>q_?/span></td><td><xsl:value-of select="sum(//score) div count(/students/student)"/></td></tr>                            
            
</table>
        
</body>
        
</html>
    
</xsl:template>
    
</xsl:stylesheet>

用IE打开数据源文件的效果Q?br />

XSLT相关知识请参考:
http://soft-app.iteye.com/blog/916652

何杨 2011-12-12 21:26 发表评论
]]>
WMB入门之十五:使用XMLTransformation节点q行XML转换http://www.aygfsteel.com/heyang/archive/2011/12/12/366174.html何杨何杨Mon, 12 Dec 2011 11:44:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/12/12/366174.htmlhttp://www.aygfsteel.com/heyang/comments/366174.htmlhttp://www.aygfsteel.com/heyang/archive/2011/12/12/366174.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/366174.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/366174.html
XMLTransformation节点在Transformation选择下Q需要指定XSL文g的位|,可以通过其StylesheetName和StyleSheetDirectory来指定。以下是一个{换的例子Q?br />
输入Q?br />
<employees><employee id="001">Andy</employee><employee id="002">Bill</employee><employee id="034">Cindy</employee></employees>

转换XSLQ?br />
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
    
<xsl:template match="/">
        
<users>
        
<xsl:for-each select="employees/employee">
            
<user>
                
<sn><xsl:value-of select="position()"/></sn>
                
<id><xsl:value-of select="@id"/></id>
                
<name><xsl:value-of select="text()"/></name>
                
<pswd><xsl:value-of select="concat(@id,'_',text())"/></pswd>
            
</user>
        
</xsl:for-each>
        
</users>
    
</xsl:template>
    
</xsl:stylesheet>

输出Q?br />
<?xml version="1.0" encoding="UTF-8"?><users><user><sn>1</sn><id>001</id><name>Andy</name><pswd>001_Andy</pswd></user><user><sn>2</sn><id>002</id><name>Bill</name><pswd>002_Bill</pswd></user><user><sn>3</sn><id>034</id><name>Cindy</name><pswd>034_Cindy</pswd></user></users>


何杨 2011-12-12 19:44 发表评论
]]>
WMB入门之十四:在JavaCompute节点中删除输入XML中特定属性及自定义NameSpace节点后再输出http://www.aygfsteel.com/heyang/archive/2011/12/09/366004.html何杨何杨Fri, 09 Dec 2011 15:40:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/12/09/366004.htmlhttp://www.aygfsteel.com/heyang/comments/366004.htmlhttp://www.aygfsteel.com/heyang/archive/2011/12/09/366004.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/366004.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/366004.html
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;

import com.ibm.broker.javacompute.MbJavaComputeNode;
import com.ibm.broker.plugin.MbElement;
import com.ibm.broker.plugin.MbException;
import com.ibm.broker.plugin.MbMessage;
import com.ibm.broker.plugin.MbMessageAssembly;
import com.ibm.broker.plugin.MbOutputTerminal;


public class subflow_JavaCompute extends MbJavaComputeNode {

    
public void evaluate(MbMessageAssembly inAssembly) throws MbException {
        MbOutputTerminal out 
= getOutputTerminal("out");
        MbOutputTerminal alt 
= getOutputTerminal("alternate");

        MbMessage inMessage 
= inAssembly.getMessage();
        MbMessage outMessage 
= new MbMessage(inMessage);
        MbMessageAssembly outAssembly
=new MbMessageAssembly(inAssembly,outMessage);
        
        MbElement document
=outMessage.getRootElement();
        MbElement root
=document.getLastChild().getFirstChild();

        
try{
            Set
<String> selfDefNSSet=new HashSet<String>();// 用来存储自定义的名称I间?br />            traverseAndRemoveNils(root,selfDefNSSet);// 遍历节点删除特定属?br />            
            
if(selfDefNSSet.size()>0){
                traverseAndRemoveSelfDefNSNode(root,selfDefNSSet);// 遍历节点删除自定义名U空间节?br />            }
        }
        
catch(Exception ex){
            ex.printStackTrace();
        }
        
        out.propagate(outAssembly);
    }

    
    
private void traverseAndRemoveNils(MbElement elm,Set<String> selfDefNSSet) throws Exception{
        
// get all the attributes of current element
        List <MbElement> attrSet = (List <MbElement>)elm.evaluateXPath("@*"); 
        
for(MbElement attr:attrSet){
            String name
=attr.getName().toString();
            String value
=attr.getValue().toString();
            
            
if(isNillAttr(name,value)){
                attr.detach();
            }
            
            
if(isSelfDefNS(name,value)){
                String[] arr
=name.split(":");
                selfDefNSSet.add(arr[
1]);
                attr.detach();
            }
        }
        
        
// get all sub elements of current element
        List <MbElement> nodeset = (List <MbElement>)elm.evaluateXPath("*"); 
        
for(MbElement childElm:nodeset){
            
// recursion
            traverseAndRemoveNils(childElm,selfDefNSSet);
        }
    }
    
    // 判断是否特定属性,a:nilQbQnil都算
    
private boolean isNillAttr(String name,String value){
        String patternStr
="(\\w+)(:nil)";
          
        
boolean result1 = Pattern.matches(patternStr, name);
        
boolean result2="true".equals(value);
        
        
return result1&&result2;
    }
    // 判断是否自定义名U空?br />    
private boolean isSelfDefNS(String name,String value){
        String patternStr
="(xmlns:)(\\w+)";
          
        
boolean result = Pattern.matches(patternStr, name);
        
        
return result;
    }
   
    
private void traverseAndRemoveSelfDefNSNode(MbElement elm,Set<String> selfDefNSSet) throws Exception{
        String name
=elm.getName().toString();
        
        
if(isSelfDefNSNode(name,selfDefNSSet)){
            elm.detach();
        }
        
        
// get all sub elements of current element
        List <MbElement> nodeset = (List <MbElement>)elm.evaluateXPath("*"); 
        
for(MbElement childElm:nodeset){
            
// recursion
            traverseAndRemoveSelfDefNSNode(childElm,selfDefNSSet);
        }
    }
    // 判读节点是否自定义名U空间的限定?br />    
private boolean isSelfDefNSNode(String name,Set<String> selfDefNSSet){
        String[] arr
=name.split(":");
        
        
if(arr.length==2){
            String ns
=arr[0];
            
            
return selfDefNSSet.contains(ns);
        }
else{
            
return false;
        }
    }
}

输入Q?br />
<contactInfo xmlns:ns1="http://tbccorp.com/Services/CustomerMgt/v1/"><homePhoneNumber as:b="c"><key xsi:nil="true"/><value></value></homePhoneNumber><workPhoneNumber><ns1:a>1644</ns1:a><key xsi:nil="true"/><value ns1:nil="true">5</value></workPhoneNumber><ns1:b>1949</ns1:b><mobilePhoneNumber xmlns:ns1="http://tbccorp.com/Services/CustomerMgt/v1/"><key xsi:nil="true"/><value>3159867097</value></mobilePhoneNumber></contactInfo>

输出Q?br />
<contactInfo><homePhoneNumber as:b="c"><key/><value/></homePhoneNumber><workPhoneNumber><key/><value>5</value></workPhoneNumber><mobilePhoneNumber><key/><value>3159867097</value></mobilePhoneNumber></contactInfo>


何杨 2011-12-09 23:40 发表评论
]]>
WMB入门之十?使用在Subflow中比较简陋的Cache设计 增加时效处理http://www.aygfsteel.com/heyang/archive/2011/09/27/359618.html何杨何杨Tue, 27 Sep 2011 07:32:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/27/359618.htmlhttp://www.aygfsteel.com/heyang/comments/359618.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/27/359618.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359618.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359618.html阅读全文

何杨 2011-09-27 15:32 发表评论
]]>
WMB入门之十?使用在Subflow中比较简陋的Cache设计http://www.aygfsteel.com/heyang/archive/2011/09/27/359580.html何杨何杨Tue, 27 Sep 2011 02:00:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/27/359580.htmlhttp://www.aygfsteel.com/heyang/comments/359580.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/27/359580.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359580.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359580.htmlpackage cachemap.base;/** *&nb...  阅读全文

何杨 2011-09-27 10:00 发表评论
]]>
WMB入门之十一:Subflowhttp://www.aygfsteel.com/heyang/archive/2011/09/23/359322.html何杨何杨Fri, 23 Sep 2011 01:40:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/23/359322.htmlhttp://www.aygfsteel.com/heyang/comments/359322.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/23/359322.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359322.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359322.html
Subflow卛_程Q当LE的某个分支较有独立性且复杂是可以采用子程的Ş式?br />子流E必d备一个Input和Output节点作ؓ输入和输出,而主程可以通过“Add Subflow”的方式将定义好的子流E加入进来,当作一个普通节Ҏ(gu)使用?br />
Input和Output节点在Contruction中,以下是用子程的一个例子?/div>
使用了子程的主程Q?br />

定义的子程Q?br />

例程Q?br />

何杨 2011-09-23 09:40 发表评论
]]>WMB入门之十:Java Compute节点http://www.aygfsteel.com/heyang/archive/2011/09/22/359264.html何杨何杨Thu, 22 Sep 2011 08:21:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/22/359264.htmlhttp://www.aygfsteel.com/heyang/comments/359264.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/22/359264.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359264.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359264.html
一.如图建立Flow


?~辑JavaCompute节点的Java代码如下Q?br />
import com.ibm.broker.javacompute.MbJavaComputeNode;
import com.ibm.broker.plugin.*;


public class flow_JavaCompute extends MbJavaComputeNode {

    
public void evaluate(MbMessageAssembly inassembly) throws MbException {
        MbOutputTerminal out 
= getOutputTerminal("out");
        
// MbOutputTerminal alt = getOutputTerminal("alternate");

        MbMessage inMessage 
= inassembly.getMessage();
        MbMessage outMessage 
= new MbMessage(inMessage);
        MbMessageAssembly outAssembly
=new MbMessageAssembly(inassembly,outMessage);
        
        MbElement root
=outMessage.getRootElement();
        MbElement rootElm
=root.getLastChild().getFirstChild();

        MbElement employee1
=rootElm.createElementAsLastChild(MbElement.TYPE_NAME,"empoyee",null);
        employee1.setValue(
"Andy");
        
        MbElement employee2
=rootElm.createElementAsLastChild(MbElement.TYPE_NAME,"empoyee",null);
        employee2.setValue(
"Bill");
        MbElement id 
= employee2.createElementAsFirstChild(MbElement.TYPE_NAME_VALUE,"id""221415");
        
        out.propagate(outAssembly);
        outMessage.clearMessage();
    }

}

?输入XML如下
<employees><employee>Hy</employee></employees>

?输出XML如下Q?br />
<employees><employee>Hy</employee><empoyee>Andy</empoyee><empoyee id="221415">Bill</empoyee></employees>
注意q里面的代码操作与我们常见XML很不一P一个是取根节点处,一个是l节点设|值处Q一个是l节点增加属性处?br />
?工程从这里下?br />http://www.aygfsteel.com/Files/heyang/JavaCompute0922_01.rar

何杨 2011-09-22 16:21 发表评论
]]>
WMB入门之九(ji):XML 节点全操?增补 如何得到UUIDhttp://www.aygfsteel.com/heyang/archive/2011/09/21/359170.html何杨何杨Wed, 21 Sep 2011 08:52:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/21/359170.htmlhttp://www.aygfsteel.com/heyang/comments/359170.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/21/359170.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359170.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359170.html
CREATE COMPUTE MODULE flow_Compute
    
CREATE FUNCTION Main() RETURNS BOOLEAN
    
BEGIN
        
SET OutputRoot.XML.employee.uuid = UUIDASCHAR;
        
SET OutputRoot.XML.employee.uuid2 = UUIDASBLOB;
        
        
SET OutputRoot.XML.employee.(XML.Attribute)id ='123';
        
SET OutputRoot.XML.employee.name = 'Felix';
        
SET OutputRoot.XML.employee.age = 33;

        
SET OutputRoot.XML.employee.address[1] = 'Dalian 88';
        
SET OutputRoot.XML.employee.address[2] = 'Beijing 188';
        
SET OutputRoot.XML.employee.address[3] = 'Shanghai 288';

        
SET OutputRoot.XML.employee.title.VALUE = NULL;
        
        
SET OutputRoot.XML.employee.salary VALUE = NULL;

        
SET OutputRoot.XML.employee.Comments.(XML.Content)=NULL;

        
RETURN TRUE;
    
END;
END MODULE;

Result XML:
<employee id="123"><uuid>1d1932fe-b2a9-484d-8d32-e70440288914</uuid><uuid2>239143b0384e46ff9bb50a34c8b28732</uuid2><name>Felix</name><age>33</age><address>Dalian 88</address><address>Beijing 188</address><address>Shanghai 288</address><title/><salary></salary><Comments/></employee>


何杨 2011-09-21 16:52 发表评论
]]>
WMB入门之九(ji):XML 节点全操?/title><link>http://www.aygfsteel.com/heyang/archive/2011/09/21/359167.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Sep 2011 08:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/heyang/archive/2011/09/21/359167.html</guid><wfw:comment>http://www.aygfsteel.com/heyang/comments/359167.html</wfw:comment><comments>http://www.aygfsteel.com/heyang/archive/2011/09/21/359167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/heyang/comments/commentRss/359167.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/heyang/services/trackbacks/359167.html</trackback:ping><description><![CDATA[Compute节点的ESQL是:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">CREATE</span><span style="color: #000000;"> </span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;"> MODULE flow_Compute<br />    </span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;"> </span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;"> Main() </span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;"> BOOLEAN<br />    </span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> XML操作CZ</span><span style="color: #008080;"><br /></span><span style="color: #000000;"><br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.(XML.Attribute)id </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">001</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.name </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Felix</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.age </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">33</span><span style="color: #000000;">;<br /><br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">1</span><span style="color: #ff0000;">]</span><span style="color: #000000;"> </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Dalian 88</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">2</span><span style="color: #ff0000;">]</span><span style="color: #000000;"> </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Beijing 188</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">3</span><span style="color: #ff0000;">]</span><span style="color: #000000;"> </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Shanghai 288</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br /><br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.title.VALUE </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br />        <br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.salary VALUE </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br /><br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.employee.Comments.(XML.Content)</span><span style="color: #808080;">=</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br /><br />        </span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;"> TRUE;<br />    </span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;"> MODULE;</span></div><br />最l得到的XML是:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;"><</span><span style="color: #800000;">employee </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="001"</span><span style="color: #0000ff;">><</span><span style="color: #800000;">name</span><span style="color: #0000ff;">></span><span style="color: #000000;">Felix</span><span style="color: #0000ff;"></</span><span style="color: #800000;">name</span><span style="color: #0000ff;">><</span><span style="color: #800000;">age</span><span style="color: #0000ff;">></span><span style="color: #000000;">33</span><span style="color: #0000ff;"></</span><span style="color: #800000;">age</span><span style="color: #0000ff;">><</span><span style="color: #800000;">address</span><span style="color: #0000ff;">></span><span style="color: #000000;">Dalian 88</span><span style="color: #0000ff;"></</span><span style="color: #800000;">address</span><span style="color: #0000ff;">><</span><span style="color: #800000;">address</span><span style="color: #0000ff;">></span><span style="color: #000000;">Beijing 188</span><span style="color: #0000ff;"></</span><span style="color: #800000;">address</span><span style="color: #0000ff;">><</span><span style="color: #800000;">address</span><span style="color: #0000ff;">></span><span style="color: #000000;">Shanghai 288</span><span style="color: #0000ff;"></</span><span style="color: #800000;">address</span><span style="color: #0000ff;">><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">/><</span><span style="color: #800000;">salary</span><span style="color: #0000ff;">></</span><span style="color: #800000;">salary</span><span style="color: #0000ff;">><</span><span style="color: #800000;">Comments</span><span style="color: #0000ff;">/></</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">></span></div><br />工程下蝲Q?br /><div><a title="http://www.aygfsteel.com/Files/heyang/ESqlTest0921_02.rar" href="http://www.aygfsteel.com/Files/heyang/ESqlTest0921_02.rar">http://www.aygfsteel.com/Files/heyang/ESqlTest0921_02.rar</a></div><img src ="http://www.aygfsteel.com/heyang/aggbug/359167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/heyang/" target="_blank">何杨</a> 2011-09-21 16:13 <a href="http://www.aygfsteel.com/heyang/archive/2011/09/21/359167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之八:XML 节点之Attribute操作http://www.aygfsteel.com/heyang/archive/2011/09/21/359151.html何杨何杨Wed, 21 Sep 2011 05:22:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/21/359151.htmlhttp://www.aygfsteel.com/heyang/comments/359151.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/21/359151.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359151.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359151.html
步骤Q?br />仍然是用一个MQ input节点Q一个MQ output节点和一个Compute节点QCompute节点的ESql如下Q?br />
CREATE COMPUTE MODULE flow_Compute
    
CREATE FUNCTION Main() RETURNS BOOLEAN
    
BEGIN
        
SET OutputRoot = InputRoot;
        
        
DECLARE Count Integer 0;
        
SET Count=CARDINALITY(InputRoot.XML.employees.employee[]);
        
        
SET OutputRoot.XML.employees.(XML.Attribute)count=Count;
        
        
RETURN TRUE;
    
END;
END MODULE;

上图_体部分为关键,它的作用是给employees节点增加了一个属性Count.

输入的XML分别如下Q?br />
<employees><employee><id>001</id><name>张飞</name><age>28</age></employee><employee><id>002</id><name>关羽</name><age>29</age></employee><employee>    <id>003</id><name>赵云</name><age>30</age></employee></employees>

输入和输出的XML分别如下Q?/div><employees count="3"><employee><id>001</id><name>张飞</name><age>28</age></employee><employee><id>002</id><name>关羽</name><age>29</age></employee><employee>    <id>003</id><name>赵云</name><age>30</age></employee></employees>

工程下蝲Q?br />

何杨 2011-09-21 13:22 发表评论
]]>WMB入门之七:XML遍历 Q用For 循环Q?/title><link>http://www.aygfsteel.com/heyang/archive/2011/09/21/359141.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Sep 2011 03:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/heyang/archive/2011/09/21/359141.html</guid><wfw:comment>http://www.aygfsteel.com/heyang/comments/359141.html</wfw:comment><comments>http://www.aygfsteel.com/heyang/archive/2011/09/21/359141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/heyang/comments/commentRss/359141.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/heyang/services/trackbacks/359141.html</trackback:ping><description><![CDATA[其它和前例一P但遍历代码如下:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;"> </span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;"> MODULE flow_Compute<br />    </span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;"> </span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;"> Main() </span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;"> BOOLEAN<br />    </span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> 员工L</span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;"> </span><span style="color: #ff00ff;">Count</span><span style="color: #000000;"> </span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> 得到XML中员工L</span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> </span><span style="color: #ff00ff;">Count</span><span style="color: #808080;">=</span><span style="color: #000000;">CARDINALITY(InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[]</span><span style="color: #000000;">);<br />        <br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> 员工姓名汇?/span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;"> Names </span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> Names</span><span style="color: #808080;">=</span><span style="color: #ff0000;">''</span><span style="color: #000000;">;<br />                <br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> 最大年?/span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;"> MaxAge </span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />        <br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> q龄合计</span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;"> SumAge </span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />        <br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> 当前q龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;"> CurrAge </span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;"> </span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />        <br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> 循环变量        </span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><strong><span style="color: #0000ff;">FOR</span><span style="color: #000000;"> CurrItem </span><span style="color: #0000ff;">AS</span><span style="color: #000000;"> InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[]</span></strong><span style="color: #000000;"><strong> DO</strong><br />            </span><span style="color: #008080;">--</span><span style="color: #008080;"> 字符串拼?nbsp;</span><span style="color: #008080;"><br /></span><span style="color: #000000;">            </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> Names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names </span><span style="color: #808080;">||</span><span style="color: #000000;"> CurrItem.name ;<br />            </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> Names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names </span><span style="color: #808080;">||</span><span style="color: #000000;"> </span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">,</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />            <br />            </span><span style="color: #008080;">--</span><span style="color: #008080;"> 字符串{换成整数再进行年龄合?nbsp;</span><span style="color: #008080;"><br /></span><span style="color: #000000;">            </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> CurrAge </span><span style="color: #808080;">=</span><span style="color: #000000;"> </span><span style="color: #ff00ff;">CAST</span><span style="color: #000000;">(CurrItem.age </span><span style="color: #0000ff;">AS</span><span style="color: #000000;"> </span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">);<br />            </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> SumAge</span><span style="color: #808080;">=</span><span style="color: #000000;">SumAge</span><span style="color: #808080;">+</span><span style="color: #000000;">CurrAge;<br />            <br />            </span><span style="color: #008080;">--</span><span style="color: #008080;"> 得到最大年?/span><span style="color: #008080;"><br /></span><span style="color: #000000;">            </span><span style="color: #0000ff;">IF</span><span style="color: #000000;"> MaxAge</span><span style="color: #808080;"><</span><span style="color: #000000;">CurrAge </span><span style="color: #0000ff;">THEN</span><span style="color: #000000;"><br />                </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> MaxAge</span><span style="color: #808080;">=</span><span style="color: #000000;">CurrAge;<br />            </span><span style="color: #0000ff;">END</span><span style="color: #000000;"> </span><span style="color: #0000ff;">IF</span><span style="color: #000000;">;<br />        </span><strong><span style="color: #0000ff;">END</span><span style="color: #000000;"> </span><span style="color: #0000ff;">FOR</span></strong><span style="color: #000000;"><strong>;</strong><br />        <br />        <br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> q_q龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;"> AvgAge </span><span style="color: #000000; font-weight: bold;">FLOAT</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> AvgAge</span><span style="color: #808080;">=</span><span style="color: #000000;">SumAge</span><span style="color: #808080;">/</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">;<br />        <br />        </span><span style="color: #008080;">--</span><span style="color: #008080;"> 拼接输出XML</span><span style="color: #008080;"><br /></span><span style="color: #000000;">        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.summary.</span><span style="color: #ff00ff;">count</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.summary.names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.summary.maxAge</span><span style="color: #808080;">=</span><span style="color: #000000;">MaxAge;<br />        </span><span style="color: #0000ff;">SET</span><span style="color: #000000;"> OutputRoot.XML.summary.avgAge</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">CAST</span><span style="color: #000000;">(AvgAge </span><span style="color: #0000ff;">AS</span><span style="color: #000000;"> </span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">);<br />        <br />        </span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;"> TRUE;<br />    </span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /><br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;"> MODULE;<br /></span></div><br />相比较而言Q这U方式更z方ѝ?br /><br />下蝲地址Q?br /><a href="http://www.aygfsteel.com/Files/heyang/ESqlTest0920_02.rar" title="http://www.aygfsteel.com/Files/heyang/ESqlTest0920_02.rar">http://www.aygfsteel.com/Files/heyang/ESqlTest0920_02.rar</a><img src ="http://www.aygfsteel.com/heyang/aggbug/359141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/heyang/" target="_blank">何杨</a> 2011-09-21 11:29 <a href="http://www.aygfsteel.com/heyang/archive/2011/09/21/359141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之七:XML遍历http://www.aygfsteel.com/heyang/archive/2011/09/21/359135.html何杨何杨Wed, 21 Sep 2011 02:59:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/21/359135.htmlhttp://www.aygfsteel.com/heyang/comments/359135.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/21/359135.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359135.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359135.html输入XMLQ?br />
<employees><employee><id>001</id><name>张飞</name><age>28</age></employee><employee><id>002</id><name>关羽</name><age>29</age></employee><employee>    <id>003</id><name>赵云</name><age>30</age></employee></employees>

输出XMLQ?br />
<summary><count>3</count><names>张飞,关羽,赵云,</names><maxAge>30</maxAge><avgAge>2.9E+1</avgAge></summary>

我们需要做一个Input节点和一个Output节点以及一个Comput节点Qƈ讄Compute节点的ESQL如下Q?br />
CREATE COMPUTE MODULE flow_Compute
    
CREATE FUNCTION Main() RETURNS BOOLEAN
    
BEGIN
        
-- 员工L
        DECLARE Count INTEGER 0;
        
-- 得到XML中员工L
        SET Count=CARDINALITY(InputRoot.XML.employees.employee[]);
        
        
-- 员工姓名汇?/span>
        DECLARE Names CHARACTER;
        
SET Names='';
                
        
-- 最大年?/span>
        DECLARE MaxAge INTEGER 0;
        
        
-- q龄合计
        DECLARE SumAge INTEGER 0;
        
        
-- 当前q龄
        DECLARE CurrAge INTEGER 0;
        
        
-- 循环变量        
        DECLARE I INTEGER 1;
        
WHILE I<=Count DO
            
-- 字符串拼?/span>
            SET Names=Names || InputRoot.XML.employees.employee[I].name ;
            
SET Names=Names || ',';
            
            
-- 字符串{换成整数再进行年龄合?/span>
            SET CurrAge = CAST(InputRoot.XML.employees.employee[I].age AS INTEGER);
            
SET SumAge=SumAge+CurrAge;
            
            
-- 得到最大年?/span>
            IF MaxAge<CurrAge THEN
                
SET MaxAge=CurrAge;
            
END IF;
            
            
SET I=I+1;
        
END WHILE;
        
        
-- q_q龄
        DECLARE AvgAge FLOAT;
        
SET AvgAge=SumAge/Count;
        
        
-- 拼接输出XML
        SET OutputRoot.XML.summary.count=Count;
        
SET OutputRoot.XML.summary.names=Names;
        
SET OutputRoot.XML.summary.maxAge=MaxAge;
        
SET OutputRoot.XML.summary.avgAge=CAST(AvgAge AS CHARACTER);
        
        
RETURN TRUE;
    
END;

END MODULE;

本例工程下蝲地址Q?br />http://www.aygfsteel.com/Files/heyang/ESqlTest0920_01.rar

何杨 2011-09-21 10:59 发表评论
]]>
WMB入门之六:RouteToLabel节点之多Label导向 增补http://www.aygfsteel.com/heyang/archive/2011/09/20/359054.html何杨何杨Tue, 20 Sep 2011 02:51:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/20/359054.htmlhttp://www.aygfsteel.com/heyang/comments/359054.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/20/359054.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359054.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359054.html<address>大连/上v</address>变成<address>大连</address>?lt;address>上v</address>的Ş式?br />
1.修改Compute节点的ESQLQ增加修改输出XML的一句:


CREATE COMPUTE MODULE flow_Compute
    
CREATE FUNCTION Main() RETURNS BOOLEAN
    
BEGIN
        
        
DECLARE Address CHARACTER;
        
DECLARE Addresses CHARACTER InputRoot.XML.mail.address;
        
DECLARE I INTEGER 0;
        
DECLARE J INTEGER;
        
DECLARE LEN INTEGER LENGTH(Addresses);
        
        
WHILE (I<LEN) DO
            
SET OutputRoot = InputRoot;
            
SET J=I+1;
            
SET Address=SUBSTRING(Addresses FROM J FOR 2);
            
            
SET OutputRoot.XML.mail.address=Address;-- 修改输出的地址部分
            SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = Address;
        
            PROPAGATE;
            
SET I=J+2;
        
END WHILE;
        
        
RETURN FALSE;
    
END;

END MODULE;


2.下图昄了修改地址后的l果Q?br />

-The End-


何杨 2011-09-20 10:51 发表评论
]]>
WMB入门之六:RouteToLabel节点之多Label导向http://www.aygfsteel.com/heyang/archive/2011/09/20/359052.html何杨何杨Tue, 20 Sep 2011 02:34:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/20/359052.htmlhttp://www.aygfsteel.com/heyang/comments/359052.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/20/359052.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359052.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359052.html

1.l箋沿用上次的工E,注意修改两个Label节点的Label Name为汉字Ş式,q改写Compute节点的ESQL如下Q?br />
CREATE COMPUTE MODULE flow_Compute
    
CREATE FUNCTION Main() RETURNS BOOLEAN
    
BEGIN
        
        
DECLARE Address CHARACTER;
        
DECLARE Addresses CHARACTER InputRoot.XML.mail.address;
        
DECLARE I INTEGER 0;
        
DECLARE J INTEGER;
        
DECLARE LEN INTEGER LENGTH(Addresses);
        
        
WHILE (I<LEN) DO
            
SET OutputRoot = InputRoot;
            
SET J=I+1;
            
SET Address=SUBSTRING(Addresses FROM J FOR 2);
            
SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = Address;
        
            PROPAGATE;
            
SET I=J+2;
        
END WHILE;
        
        
RETURN FALSE;
    
END;

END MODULE;

2.以下文本传入InQQ?br />
<mail><id>0001</id><address>大连/上v</address></mail>

3.OutQ和OutQ1都将收到信息Q如下图昄?br />



4.本例工程下蝲地址
http://www.aygfsteel.com/Files/heyang/InputOutputTest0919.rar

-The End-

何杨 2011-09-20 10:34 发表评论
]]>
WMB入门之五:RouteToLabel节点http://www.aygfsteel.com/heyang/archive/2011/09/19/359004.html何杨何杨Mon, 19 Sep 2011 09:13:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/19/359004.htmlhttp://www.aygfsteel.com/heyang/comments/359004.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/19/359004.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/359004.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/359004.html
1.RouteToLabel节点在Routing下,与Filter节点在一Plabel节点也在里面。如下图拖拽Z个RouteToLabel节点Q两个Label节点?br />

2.再增加一个MQ Output节点Mq output2Q关联到OutQ3。这个节点作用是当Compute导向出现异常Q如address是深圻I时将信息发到OutQ3上。注意MQ
Mq output2到Mq Input的连U的L和终炏V?/div>

3.讄Compute节点的Compute Modecd为ALLQ这是ؓ了在其中书写新的ESQL做的准备?br />

4.~辑Compute节点的新的ESQL?br />
SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = InputRoot.XML.mail.address;
q条语句会查看输入XML的mail节点的address节点的内容,如果能找到对应(mail节点的address节点的内?=Label节点的Label NameQ的Label节点Q则消息导向到q个Label的后端;如果找不到的话,则将信息导向到Compute节点来源节点的catch端?br />
5.讄Label节点一Q大q)的Label Name?br />

6.讄Label节点二(上vQ的Label Name?br />

7.l各条连U加上断点,用以观察消息的流向?br />

8.当消息ؓ“<mail><id>0001</id><address>dalian</address></mail>”Ӟ如愿Q消息被导向CMQ Output?br />

-The End-

何杨 2011-09-19 17:13 发表评论
]]>WMB入门之四:Filter节点http://www.aygfsteel.com/heyang/archive/2011/09/19/358993.html何杨何杨Mon, 19 Sep 2011 07:42:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/19/358993.htmlhttp://www.aygfsteel.com/heyang/comments/358993.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/19/358993.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/358993.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/358993.html
1.Filter节点在Routing菜单下?br />

2.增加一个Filter节点和一个Output节点Q与OutQ1兌Q,q如下连Uѝ注意Filter的出口,MQ output是连到False口,而MQ Output1是连到true口?br />

3.q线完毕后Filter节点出现错误状态,此时我们需要编辑其ESQLQ附带也把Compute节点的ESQL也编辑一下?br />

4.以下是Compute节点和Filter节点的新SQL?br />

5.启动试后,向InQ输入XML文本如下Q?br />


6.OutQ1收到了{化分后的结果,其内Ҏ(gu)是我们想要的?br />

7.让我们改变一下小明的分数再测试一下:


8.l果如ESQL所料,OutQ得到了最l的信息?br />

-The end-

何杨 2011-09-19 15:42 发表评论
]]>
WMB入门之三:Compute节点http://www.aygfsteel.com/heyang/archive/2011/09/19/358992.html何杨何杨Mon, 19 Sep 2011 06:53:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/19/358992.htmlhttp://www.aygfsteel.com/heyang/comments/358992.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/19/358992.html#Feedback6http://www.aygfsteel.com/heyang/comments/commentRss/358992.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/358992.html注意Q本节其它节点属性和上一节一栗?br />
1.Compute节点在Transformation菜单下:


2.在MQInput节点和MQ Output节点之间插入一个Compute节点。由于没有设|节点属性,此时节点带有错误图标?br />

3.右键点击Compute节点Q点?#8220;Open ESQL”菜单?br />

4.在打开的窗口中输入下面文字?br />
W一句意思是从输入内容赋值到输出内容?br />W二句意思是在employee节点下增加cnname节点
W三句意思是删除原有employee节点下的name节点
其它语句都是固定写法?br />
5.在InQ中输入XML文本Q待会看看进qCompute节点转化后这D|本会变成什么样子?br />

6.查看OutQ中的输出l果Q确实达CESQL语句的目的?br />

7.使用rfhutil.exedOutQ中的内容?br />

-The end-

何杨 2011-09-19 14:53 发表评论
]]>
WMB入门之二:Input与Output节点http://www.aygfsteel.com/heyang/archive/2011/09/19/358983.html何杨何杨Mon, 19 Sep 2011 05:09:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/19/358983.htmlhttp://www.aygfsteel.com/heyang/comments/358983.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/19/358983.html#Feedback1http://www.aygfsteel.com/heyang/comments/commentRss/358983.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/358983.html
1.右键点击目区,选择新徏“Message Flow Project”.


2.右键点击刚才创徏的项目,在其下徏立一?#8220;Message Flow”?br />

3.点击刚才创徏的flow.msgflowQ拖曛_一个MQInput节点和MQOutput节点?br />

4.点击下图U框中的图标Q将两个节点q接h?br />

5.如下图所C,注意头的v点位|。下囑֛标显CZ错误和警告,q表C应该设|它们的属性,使其能和Queue对应h?br />

6.打开Websphere MQ ExplorerQ在Queue manager "MB7QMGR"下徏立两个消息队列,取名为InQ和OutQ?br />

7.右键点击MQ Input节点Q点d性,在下面的Q name处写入InQ?br />

8.邮g点击MQ Output节点Q在属性中指定Queue manager name和Queue Name?br />

9.在项目下创徏一个Message Broker Archive.q个用来项目打包发布?br />

10.点击刚才创徏的bar.barQ在双点击按钮“Build Broker Archive”?br />

11.在IBM Websphere MQ Explorer中,右键点击InQQ选择“Put Test meesage”菜单。断点状态显CZ息已l从MQ Input节点发送了出来?br />

12.断点跑完,再在MQ Explorer中右键点击OutQQ选择“browse message”菜单Q在弹出的窗口中可以看到Q信息已l发送到了OutQ中?br />

-The End-

何杨 2011-09-19 13:09 发表评论
]]>
WMB入门之一:相关软g介绍http://www.aygfsteel.com/heyang/archive/2011/09/18/358914.html何杨何杨Sun, 18 Sep 2011 08:31:00 GMThttp://www.aygfsteel.com/heyang/archive/2011/09/18/358914.htmlhttp://www.aygfsteel.com/heyang/comments/358914.htmlhttp://www.aygfsteel.com/heyang/archive/2011/09/18/358914.html#Feedback0http://www.aygfsteel.com/heyang/comments/commentRss/358914.htmlhttp://www.aygfsteel.com/heyang/services/trackbacks/358914.html本节d:
     熟?zhn)q行WMB开发需要用到的软g及环?
 
1.WebSphere MQ及其操作工具WebSphere MQ Explorer:
       MB 的运行依赖于 MQQ所以首先要安装 MQQMQ是就?IBM 的消息中间g产品QIBM 几乎所?SOA 相关的品,都是构徏?MQ 之上的,没有 MQ 强大的消息传输能力,那么 IBM 很多产品都做不v来。你可以把MQ当成一个传输通道Q只要往里面放东西,MQ ׃把消息传到目的地?nbsp;     
       WebSphere MQ Explorer是用来操作MQ的工?我们需要利用它来徏立队列管理器及队?下图是WebSphere MQ Explorer的操作界?
      

2.IBM WebSphere Message Broker Explorer:    
      IBM WebSphere Message BrokerQ以下称?Message BrokerQ可以作Z业服务ȝ使用Q提供用于各U协议的通用q接以及Z用结构化和非l构化数据的应用E序提供数据转换功能。WebSphere Message Broker(代理)的两个核心功能就是:“消息路由”?#8220;消息格式转换”。它相当于一个公共服务中心。MB 接收所有消息,然后自动分析其中的内容,扑ֈ相应的目的地Q进行\p{?此外QMB q可以进行消息{换,q就像是自动译信g. MB本质上也是一个服务ȝQ所有的服务lg接入到MB中,服务消息塞lMBQMB来决定怎么转发Q这栯服务愈加成ؓ一个独立的实体Q和其他服务的耦合性进一步降低,从而达?SOA 的境界?题外?我个?SOA把业务分d来的x是好?奈何当前所有模拟业务流E的工作从根基上来说就是背ȝ实的,q就是SOA赖以生存的基.因此SOA做得再好也只是修补性工?.
       下图是WMB的整体架构图:
          

3.WebSphere Message Broker Toolkit 7.0:
       q是操作WebSphere Message Broker的开发环?它是ZEclipse做成?因此上手很快.我们大部分的工作都要依赖它来完成.
      
       以下是WebSphere Message Broker Toolkit的界面介l:
             
      1 号区域是一个消息流Q可以看到非常直观:?MQ d—  —  计算Q{换成 web service 格式Q?#8212;  —发?http h?web service ?url—  —  计算Q{换回 MQ 消息格式Q?#8212;  —  攑օ MQ?br />      2 号区域是节点选择面板QMB 自带了几十种节点l我们选择Q同时我们也可以自己创徏节点?br />      3 号区域是属性面板,当你选择某个节点Ӟ可以在其中编辑节点的属性?br />      4 号区域是域连接面板,开发好的消息流和消息格式,必须首先?MBT 中连接到对应的配|管理器Q再打包好的流E部|到对应?broker 中,q个q程也可以由命o行完成?br />      5 号区域则cM eclipse 的项目集合,里面是所有的 MB 目?/div>

4.rfhutil.exe:

       q个工具用来往队列上发送消息以及读取消?它是可选的,没有它我们也可以依靠WebSphere MQ Explorer来完成同L工作.
      

本节l束?img src ="http://www.aygfsteel.com/heyang/aggbug/358914.html" width = "1" height = "1" />

何杨 2011-09-18 16:31 发表评论
]]> վ֩ģ壺 | ɽ| | | | ˮ| Դ| | ɽ| | | | ÷| ͼƬ| | Ϫ| | | ¡| | | ½| Ĭ| ɽ| | ӱ| Ϫ| | | | | | ػ| е| | | | | | ˾| γ|