| Author | Message | 
		
		  | raj12121 | 
			  
				|  Posted: Wed Mar 09, 2011 8:57 pm    Post subject: UDP Saga |   |  | 
		
		  | Newbie
 
 
 Joined: 09 Mar 2011Posts: 8
 
 
 | 
			  
				| I have two message flows (udp1.msgflow and udp2.msgflow) in the same schema (project.test). 
 Requirement : Set up a UDP (e.g database schema ) which will be visible to all the flows inthe same schema.
 
 
 Experiment:
 
 Created an UDP (V1) in the flow edtitor and specified the UDP DECLARE ** syntax in the esql of flow1 (udp1.msgflow) with a default value DEFV1.
 The value of UDP on udp1.msgflow is set to MYV1.
 
 UDP variable is accessed from second flow.
 
 Issue :
 UDP variable  V1 in udp1.msgflow correctly display the customised value i.e MYV1
 Where as UDP variable  V1 in udp2.msgflow displays the default value DEFV1.
 
 
 Any ideas.
 
 udp2.esql
 
 
   
	| Code: |  
	| BROKER SCHEMA project.test 
 
 CREATE COMPUTE MODULE udp2_Compute
 CREATE FUNCTION Main() RETURNS BOOLEAN
 BEGIN
 CALL CopyMessageHeaders();
 CALL CopyEntireMessage();
 SET OutputRoot.XML.UDP.V1 = V1;
 RETURN TRUE;
 END;
 
 CREATE PROCEDURE CopyMessageHeaders() BEGIN
 DECLARE I INTEGER 1;
 DECLARE J INTEGER;
 SET J = CARDINALITY(InputRoot.*[]);
 WHILE I < J DO
 SET OutputRoot.*[I] = InputRoot.*[I];
 SET I = I + 1;
 END WHILE;
 END;
 
 CREATE PROCEDURE CopyEntireMessage() BEGIN
 SET OutputRoot = InputRoot;
 END;
 END MODULE;
 
 |  udp1.esql
 
 
   
	| Code: |  
	| BROKER SCHEMA project.test DECLARE V1 EXTERNAL CHARACTER 'DEFV1' ;
 
 CREATE COMPUTE MODULE upd_Compute
 
 CREATE FUNCTION Main() RETURNS BOOLEAN
 BEGIN
 CALL CopyMessageHeaders();
 CALL CopyEntireMessage();
 SET OutputRoot.XML.UDP.V1 = V1;
 RETURN TRUE;
 END;
 
 CREATE PROCEDURE CopyMessageHeaders() BEGIN
 DECLARE I INTEGER 1;
 DECLARE J INTEGER;
 SET J = CARDINALITY(InputRoot.*[]);
 WHILE I < J DO
 SET OutputRoot.*[I] = InputRoot.*[I];
 SET I = I + 1;
 END WHILE;
 END;
 
 CREATE PROCEDURE CopyEntireMessage() BEGIN
 SET OutputRoot = InputRoot;
 END;
 END MODULE;
 
 |  
 [/img][/code]
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | MQEnthu | 
			  
				|  Posted: Wed Mar 09, 2011 9:41 pm    Post subject: |   |  | 
		
		  |  Partisan
 
 
 Joined: 06 Oct 2008Posts: 329
 Location: India
 
 | 
			  
				| AFAIK... if you edit the UDP values using the Message Flow editor in a flow, the newly edited value is available to all the nodes in that flow....And the new value is not available to the other flow even though they are in same schema... _________________
 -----------------------------------------------
 It is good to remember the past,
 but don't let past capture your future
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | raj12121 | 
			  
				|  Posted: Thu Mar 10, 2011 11:50 am    Post subject: |   |  | 
		
		  | Newbie
 
 
 Joined: 09 Mar 2011Posts: 8
 
 
 | 
			  
				| The value was edited using bar editor. How can this be achieved ? Any solution ? |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqjeff | 
			  
				|  Posted: Thu Mar 10, 2011 12:47 pm    Post subject: |   |  | 
		
		  | Grand Master
 
 
 Joined: 25 Jun 2008Posts: 17447
 
 
 | 
			  
				| I do not believe that user defined properties exist outside the context of a given flow. 
 Likewise, ESQL SHARED variables are not shared between flows.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | raj12121 | 
			  
				|  Posted: Thu Mar 10, 2011 4:59 pm    Post subject: |   |  | 
		
		  | Newbie
 
 
 Joined: 09 Mar 2011Posts: 8
 
 
 | 
			  
				| Thanks mqjeff, 
 what is the solution for the below requirement .
 
 Multiple flows in same schema requires a customisable property (e.g database schema) at deploy time. Instead of exposing UDPs for each and every flow .. is there a way to define one customisable property which will be visible to all the flows in the same schema.
 
 Thanks
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | smdavies99 | 
			  
				|  Posted: Thu Mar 10, 2011 10:20 pm    Post subject: |   |  | 
		
		  |  Jedi Council
 
 
 Joined: 10 Feb 2003Posts: 6076
 Location: Somewhere over the Rainbow this side of Never-never land.
 
 | 
			  
				| do you really mean 
 and not run time?
 _________________
 WMQ User since 1999
 MQSI/WBI/WMB/'Thingy' User since 2002
 Linux user since 1995
 
 Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | raj12121 | 
			  
				|  Posted: Fri Mar 11, 2011 3:15 am    Post subject: |   |  | 
		
		  | Newbie
 
 
 Joined: 09 Mar 2011Posts: 8
 
 
 | 
			  
				| yes, my bad also should be visible at run time. |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | mqjeff | 
			  
				|  Posted: Fri Mar 11, 2011 3:29 am    Post subject: |   |  | 
		
		  | Grand Master
 
 
 Joined: 25 Jun 2008Posts: 17447
 
 
 | 
			  
				| You are not asking how to define a variable that is visible to many flows - you already have that. 
 You are asking how to ensure that all of the flows access the same instance of that variable.
 
 I don't think you can do that from ESQL, because the ESQL runtime is not constructed the same way that a JVM is constructed.
 
 But I don't think you need to do this, really.  How often is this variable really going to change?  Does it really need to be changed without redeploying things?
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | raj12121 | 
			  
				|  Posted: Fri Mar 11, 2011 3:36 am    Post subject: |   |  | 
		
		  | Newbie
 
 
 Joined: 09 Mar 2011Posts: 8
 
 
 | 
			  
				| thanks mqjeff, i will go with defining udp for every flow. |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  | terminator_xyz | 
			  
				|  Posted: Tue Aug 19, 2014 4:16 pm    Post subject: one question |   |  | 
		
		  | Novice
 
 
 Joined: 29 Jul 2014Posts: 15
 
 
 | 
			  
				| sorry to reopen this topic. 
 If i need to use the UDP V1 in 2nd flow, should I still declare this UDP in 2nd flow, and not need to declare in 2nd esql using DECLARE EXTERNAL....?
 |  | 
		
		  | Back to top |  | 
		
		  |  | 
		
		  |  |