ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Use of common DFDL schema(shared library) for MQOutput node

Post new topic  Reply to topic
 Use of common DFDL schema(shared library) for MQOutput node « View previous topic :: View next topic » 
Author Message
MizukiYamato
PostPosted: Tue Aug 04, 2015 5:24 am    Post subject: Use of common DFDL schema(shared library) for MQOutput node Reply with quote

Apprentice

Joined: 16 Dec 2009
Posts: 45
Location: Japan

Hi,all.

We have to use a DFDL schema in shared library for MQOutput node.
In order to specify the DFDL in the shared library, we wrote as berow:

Code:

<Application container 'App' (reference to Shared Library 'AplLib')>
(message flow)
MQInput(BLOB) -> Compute(ESQL1) -> MQOutput

(ESQL1)
SET OutputRoot.Properties.MessageSet = '{AppLib}';
SET OutputRoot.DFDL.ns:aplMsg.ns1:comMsg.com = 'c';
SET OutputRoot.DFDL.ns:aplMsg.apl = 'a';

<Shared Library 'AppLib' (reference to Shared Library 'ComLib')>
(DFDL)
aplMsg

<Shared Library 'ComLib'>
(DFDL)
comMsg



<case01>
When message flow is witten as
Code:

<Application container 'App' (reference to Shared Library 'AplLib')>
(message flow)
MQInput(BLOB) -> Compute(ESQL1) -> MQOutput

(ESQL1)
SET OutputRoot.Properties.MessageSet = '{AppLib}';
SET OutputRoot.DFDL.ns:aplMsg.ns1:comMsg.com = 'c';
SET OutputRoot.DFDL.ns:aplMsg.apl = 'a';


<Shared Library 'AppLib' (reference to Shared Library 'ComLib')>
(DFDL)
aplMsg


<Shared Library 'ComLib'>
(DFDL)
comMsg

, We can get output message.


<case02>
When message flow is witten as
Code:

<Application container 'App' (reference to Shared Library 'AplLib')>
(message flow)
MQInput(BLOB) -> Compute(ESQL1) -> SubFlow(On Shared Library2) -> MQOutput

(ESQL1)
SET OutputRoot.Properties.MessageSet = '{AppLib}';
SET OutputRoot.DFDL.ns:aplMsg.ns1:comMsg.com = 'c';
SET OutputRoot.DFDL.ns:aplMsg.apl = 'a';


<Shared Library 'AppLib' (reference to Shared Library 'ComLib')>
(DFDL)
aplMsg


<Shared Library 'ComLib'>
(DFDL)
comMsg

(SubFlow)
Input -> Compute(ESQL2) -> Output

(ESQL2)
SET OutputRoot = InputRoot;

, We get Error as below
Code:

Timestamp:TIMESTAMP '2015-08-04 21:23:31.371836'
ExceptionList:( ['MQROOT' : 0x1839d030]
  (0x01000000:Name):RecoverableException = (
    (0x03000000:NameValue):File            = 'F:\build\slot1\S000_P\src\DataFlowEngine\TemplateNodes\ImbOutputTemplateNode.cpp' (CHARACTER)
    (0x03000000:NameValue):Line            = 303 (INTEGER)
    (0x03000000:NameValue):Function        = 'ImbOutputTemplateNode::processMessageAssemblyToFailure' (CHARACTER)
    (0x03000000:NameValue):Type            = 'ComIbmMQOutputNode' (CHARACTER)
    (0x03000000:NameValue):Name            = 'aplflow/flow#FCMComposite_1_6' (CHARACTER)
    (0x03000000:NameValue):Label           = 'aplflow.flow.QL02.OUT' (CHARACTER)
    (0x03000000:NameValue):Catalog         = 'BIPmsgs' (CHARACTER)
    (0x03000000:NameValue):Severity        = 3 (INTEGER)
    (0x03000000:NameValue):Number          = 2230 (INTEGER)
    (0x03000000:NameValue):Text            = 'Caught exception and rethrowing' (CHARACTER)
    (0x01000000:Name     ):Insert          = (
      (0x03000000:NameValue):Type = 14 (INTEGER)
      (0x03000000:NameValue):Text = 'aplflow.flow.QL02.OUT' (CHARACTER)
    )
    (0x01000000:Name     ):ParserException = (
      (0x03000000:NameValue):File                 = 'F:\build\slot1\S000_P\src\MTI\MTIforBroker\DfdlParser\ImbDFDLWriter.cpp' (CHARACTER)
      (0x03000000:NameValue):Line                 = 288 (INTEGER)
      (0x03000000:NameValue):Function             = 'ImbDFDLWriter::getDFDLSerializer' (CHARACTER)
      (0x03000000:NameValue):Type                 = 'ComIbmMQInputNode' (CHARACTER)
      (0x03000000:NameValue):Name                 = 'aplflow/flow#FCMComposite_1_4' (CHARACTER)
      (0x03000000:NameValue):Label                = 'aplflow.flow.QL02.IN' (CHARACTER)
      (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
      (0x03000000:NameValue):Severity             = 3 (INTEGER)
      (0x03000000:NameValue):Number               = 1312 (INTEGER)
      (0x03000000:NameValue):Text                 = 'Shared library specified but can't access shared library' (CHARACTER)
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = 'DFDL' (CHARACTER)
      )
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = '{AppLib}' (CHARACTER)
      )
      (0x01000000:Name     ):Insert               = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = 'AppLib' (CHARACTER)
      )
      (0x01000000:Name     ):RecoverableException = (
        (0x03000000:NameValue):File     = 'F:\build\slot1\S000_P\src\DataFlowEngine\MessageServices\ImbDeployedResourceGroup.cpp' (CHARACTER)
        (0x03000000:NameValue):Line     = 7197 (INTEGER)
        (0x03000000:NameValue):Function = 'ImbDeployedResourceGroup::findSharedLibrary' (CHARACTER)
        (0x03000000:NameValue):Type     = 'Library' (CHARACTER)
        (0x03000000:NameValue):Name     = '1eeeb96a-8f8b-455e-ae49-9ca2e0a99e75' (CHARACTER)
        (0x03000000:NameValue):Label    = 'ComLib' (CHARACTER)
        (0x03000000:NameValue):Catalog  = 'BIPmsgs' (CHARACTER)
        (0x03000000:NameValue):Severity = 3 (INTEGER)
        (0x03000000:NameValue):Number   = 1306 (INTEGER)
        (0x03000000:NameValue):Text     = 'The required shared library is not explicitly referenced' (CHARACTER)
        (0x01000000:Name     ):Insert   = (
          (0x03000000:NameValue):Type = 5 (INTEGER)
          (0x03000000:NameValue):Text = 'ComLib' (CHARACTER)
        )
        (0x01000000:Name     ):Insert   = (
          (0x03000000:NameValue):Type = 5 (INTEGER)
          (0x03000000:NameValue):Text = 'AppLib' (CHARACTER)
        )
      )
    )
  )
)  ---------------------------------------------------------------------------


<case03>
When message flow is witten as
Code:

<Application container 'App' (reference to Shared Library 'AplLib')>
(message flow)
MQInput(BLOB) -> Compute(ESQL1) -> SubFlow(On Shared Library2) -> Compute(ESQL3) -> MQOutput

(ESQL1)
SET OutputRoot.Properties.MessageSet = '{AppLib}';
SET OutputRoot.DFDL.ns:aplMsg.ns1:comMsg.com = 'c';
SET OutputRoot.DFDL.ns:aplMsg.apl = 'a';

(ESQL3)
SET OutputRoot = InputRoot;

<Shared Library 'AppLib' (reference to Shared Library 'ComLib')>
(DFDL)aplMsg


<Shared Library 'ComLib'>
(DFDL)
comMsg

(SubFlow)
Input -> Compute(ESQL2) -> Output

(ESQL2)
SET OutputRoot = InputRoot;

, We get output message.


We want to know:
Whether this way is correct to specify the Shared Library for MQOutput node?
> SET OutputRoot.Properties.MessageSet = '{AppLib}';

And, how to avoid this problem commonly?
Back to top
View user's profile Send private message
mqjeff
PostPosted: Tue Aug 04, 2015 6:23 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

As far as I know, DFDL identifies the message model to use based on the root element of the message - name and namespace. In the same way that XMLNSC does.

So if you have OutputRoot.DFDL."ABC", then DFDL should find the schema for a message that has ABC as the top element. Without needing to set the MessageSet.
Back to top
View user's profile Send private message
MizukiYamato
PostPosted: Tue Aug 04, 2015 6:50 am    Post subject: Reply with quote

Apprentice

Joined: 16 Dec 2009
Posts: 45
Location: Japan

Thank you, MQjeff.

From IIBv10, 'Shared Libraries' specification is added.
For MQInput/MQOutput node, To choosing the Shared Library's DFDL(or WSDL) on Toolkit, we have to set node properties:

Code:

<e.g. MQInput node properties>
Message Domain = DFDL
Message model = {AppLib}
Message = {http://apl}:aplMsg


So, We guess there is a way to set this information by ESQL for MQOutput node. And we think <case01> is succeed.

(But, we cannot find the way about MQOutput in the knowledge center .
(and MQInput/MQGet).)
Back to top
View user's profile Send private message
stoney
PostPosted: Tue Aug 04, 2015 6:52 am    Post subject: Reply with quote

Centurion

Joined: 03 Apr 2013
Posts: 140

Quote:
We want to know:
Whether this way is correct to specify the Shared Library for MQOutput node?
> SET OutputRoot.Properties.MessageSet = '{AppLib}';

And, how to avoid this problem commonly?


I believe that your second example (case 02) should work, but currently doesn't due to what looks like a product defect.
Please could you raise a PMR and ask for it to be routed directly to IIB L3 support (reference this thread).

Quote:
As far as I know, DFDL identifies the message model to use based on the root element of the message - name and namespace. In the same way that XMLNSC does.

So if you have OutputRoot.DFDL."ABC", then DFDL should find the schema for a message that has ABC as the top element. Without needing to set the MessageSet.


This is only true if you do not use shared libraries.

When you deploy XML and DFDL schemas, they get compiled into a message model.
You may have seen that message model is the new name of the message set field on the node properties (however, the name in the Properties tree remains as MessageSet).

Each application has a message model that consists of all of the XML and DFDL schemas within that application and its included static libraries.
By leaving the message model field as blank, you are saying that you want to use the applications message model, and that your message is modelled by an XML or DFDL schema in that application.
Before V10, you only needed to fill out the message model field if you wished to specify the name of an MRM message set.

However, in V10, we have introduced shared libraries.
Each shared library has its own message model that consists of all the XML and DFDL schemas within that shared library, as well as all of the schemas in any referenced shared libraries.
If you leave the message model field as blank on a node in a subflow in a shared library, then you are saying that you want to use the message model for that shared library.

If an application wishes to use XML or DFDL schemas from a referenced shared library, then that application must specify "{shlibName}" as the message model field.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Tue Aug 04, 2015 7:05 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

stoney wrote:
However, in V10, we have introduced shared libraries.


I knew that much. I wasn't entirely sure that MizukiYamato was using v10. It's easy enough for "shared library" to have multiple meanings that don't include runtime behavior.

I also haven't worked with v10 or shared libraries. So. But I figured someone smarter than me would be along to provide useful information and correct me if I got it wrong.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » Use of common DFDL schema(shared library) for MQOutput node
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.