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 IndexWebSphere Message Broker SupportApplication with subflow can't reference ESQL in static lib

Post new topicReply to topic
Application with subflow can't reference ESQL in static lib View previous topic :: View next topic
Author Message
avieira
PostPosted: Wed May 17, 2017 11:43 pm Post subject: Application with subflow can't reference ESQL in static lib Reply with quote

Newbie

Joined: 11 Aug 2016
Posts: 5

Using IIB 10.0.0.7 I've got an application composed of a main msgflow, which references a subflow.

This subflow has a compute node, which references a function not defined in this application. This function is defined in an ESQL file within a static library, which is reference by the application. The subflow's compute node is using top level PATH to locate the function's package.

- application
-- msgflow
--- subflow
---- esql

referencing

- static lib
-- esql

Strangely, when I build a bar file within the Toolkit, which has ticked the "Compile and in-line resources", I end up with an error upon deployment, stating that the function I am calling is Undefined: "The program is attempting to call a function which is not defined or is not in the schema path". Using the library's function in the message flow directly works fine, but not in the subflow.

What makes it even more unusual is that, if I build a bar file unticking the "compile" option, the bar deploys fine, even though in both scenarios both the subflow and esql files are included directly in the bar file.

This leads me to believe that this is related with the fact that msgflows are compiled into .cmf files, but subflows aren't, which is described in the infocenter, but should this affect references to libraries?

Am I missing something here?

Thank you
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu May 18, 2017 3:02 am Post subject: Reply with quote

Grand Poobah

Joined: 18 Nov 2003
Posts: 19310
Location: LI,NY

Yes you are missing the fact that your subflows need to be "old school" to compile in line...
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
avieira
PostPosted: Thu May 18, 2017 7:05 am Post subject: Reply with quote

Newbie

Joined: 11 Aug 2016
Posts: 5

fjb_saper wrote:
Yes you are missing the fact that your subflows need to be "old school" to compile in line...


I didn't forget that, which is why I included it in the original thread. Sorry if that part wasn't clear:

Quote:
This leads me to believe that this is related with the fact that msgflows are compiled into .cmf files, but subflows aren't


What I'm failing to understand is why my subflow's ESQL can't locate my function's ESQL function.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu May 18, 2017 11:05 am Post subject: Reply with quote

Grand Poobah

Joined: 18 Nov 2003
Posts: 19310
Location: LI,NY

Is your function path relative or absolute?
And the functions better be in an ESQL Schema. IIB does not like them to be in the default schema...

Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
rekarm01
PostPosted: Thu May 18, 2017 1:58 pm Post subject: Re: Application with subflow can't reference ESQL in static Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 1256

avieira wrote:
I didn't forget that, which is why I included it in the original thread.

"old school", in this case, means subflows in .msgflow files, rather than in .subflow files.

It is generally a good idea to avoid mixing and matching old-style barfile resources with new-style resources. That means:
  • Either message flows compiled in-line, subflows in .msgflow files, no libraries, no applications, old Mapping node with .msgmap files, etc.,
  • or message flows deployed as source, subflows in .subflow files, libraries, applications, new Mapping node with .map files, etc.

They're not always interchangeable, so the results can sometimes be unexpected.

avieira wrote:
What I'm failing to understand is why my subflow's ESQL can't locate my function's ESQL function.

Functions inside a .cmf are not visible outside the .cmf .

That's sort of what "in-line" means.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu May 18, 2017 7:34 pm Post subject: Reply with quote

Grand Poobah

Joined: 18 Nov 2003
Posts: 19310
Location: LI,NY


_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
avieira
PostPosted: Thu May 18, 2017 11:28 pm Post subject: Reply with quote

Newbie

Joined: 11 Aug 2016
Posts: 5

@fjb_saper, I've tried relative and absolute paths and all resources have their own schema.

@rekarm01, my function is declared in an esql file, part of a library, and it is requested from an esql file used in a .subflow, i.e. the function is not inside a .cmf.

Quote:
It is generally a good idea to avoid mixing and matching old-style barfile resources with new-style resources. That means:
Either message flows compiled in-line, subflows in .msgflow files, no libraries, no applications, old Mapping node with .msgmap files, etc.,
or message flows deployed as source, subflows in .subflow files, libraries, applications, new Mapping node with .map files, etc.


Thanks for clarifying this. I didn't know message flows compiled in-line were considered old school.

As mentioned previously, my interface works fine if deployed as source. I'm just trying to understand why it doesn't work when the message flow is compiled in-line.

Thank you all
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Fri May 19, 2017 10:53 am Post subject: Reply with quote

Grand Poobah

Joined: 18 Nov 2003
Posts: 19310
Location: LI,NY

avieira wrote:

As mentioned previously, my interface works fine if deployed as source. I'm just trying to understand why it doesn't work when the message flow is compiled in-line.

Thank you all

To compile in-line change the extension of the .subflow to .msgflow and try again...

Note: there is no guarantee that this works with compile in line at all as you are using IIB 10 functionality.

If it weren't working with deploy as source, I'd be worried.
Note that changing the .subflow to .msgflow will break the deploy as source...

_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
rekarm01
PostPosted: Sun May 21, 2017 5:23 pm Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 1256

avieira wrote:
my function is declared in an esql file, part of a library, and it is requested from an esql file used in a .subflow, i.e. the function is not inside a .cmf.

The barfile is in zip/jar format. You can unzip/unjar it, and examine the .cmf directly, to confirm what is or is not inside it.
Back to top
View user's profile Send private message
Display posts from previous:
Post new topicReply to topic Page 1 of 1

MQSeries.net Forum IndexWebSphere Message Broker SupportApplication with subflow can't reference ESQL in static lib
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.