XMLParserService Example 1

LANSA Integrator

XMLParserService Example 1

Loads XMLParserService service. Loads xml directly from a file or from an HTTP connected host or from an FTP connected host or from a POP3 post office message. Transforms the received xml to FunctionXML using a stylesheet (created using the XML Transformation Wizard) and binds to the LANSA function fields and list.

Windows Users Note: You will need to add the following line (replacing the LANSA INSTALLATION DIRECTORY with the appropriate directory) following the existing systemid.file line in the DTD Entity Resolver list in the XMLFileService.Properties, XMLParserService.Properties and XMLQueueService.Properties:

systemid.file:///C:/<LANSA INSTALLATION DIRECTORY>/Integrator/JSMInstance/order.dtd=file:dtd/order.dtd

 

For further information, refer to XML Entity Resolver.

 
********** Beginning of RDML commands **********                
FUNCTION   OPTIONS(*DIRECT)                                     
**********                                                      
DEFINE     FIELD(#JSMSTS) TYPE(*CHAR) LENGTH(20)                
DEFINE     FIELD(#JSMMSG) TYPE(*CHAR) LENGTH(255)               
DEFINE     FIELD(#JSMCMD) TYPE(*CHAR) LENGTH(255)
**********                                                      
DEFINE     FIELD(#ORDER) TYPE(*CHAR) LENGTH(10)                 
DEFINE     FIELD(#NAME) TYPE(*CHAR) LENGTH(50)                  
DEFINE     FIELD(#STREET) TYPE(*CHAR) LENGTH(50)                
DEFINE     FIELD(#CITY) TYPE(*CHAR) LENGTH(50)                  
DEFINE     FIELD(#STATE) TYPE(*CHAR) LENGTH(5)                  
DEFINE     FIELD(#ZIP) TYPE(*CHAR) LENGTH(5)                    
**********                                                      
DEFINE     FIELD(#LINENUM) TYPE(*DEC) LENGTH(3) DECIMALS(0)        
DEFINE     FIELD(#PARTNUM) TYPE(*DEC) LENGTH(3) DECIMALS(0)        
DEFINE     FIELD(#PARTDSC) TYPE(*CHAR) LENGTH(50)                  
DEFINE     FIELD(#PARTAMT) TYPE(*DEC) LENGTH(10) DECIMALS(2)       
DEFINE     FIELD(#PARTQTY) TYPE(*DEC) LENGTH(3) DECIMALS(0)        
**********                                                         
DEF_LIST   NAME(#WRKLST) FIELDS((#LINENUM) (#PARTNUM) (#PARTDSC) ( 
            #PARTAMT) (#PARTQTY)) TYPE(*WORKING)                    
**********                                                         
********** 'Open service'                                          
**********                                                         
USE        BUILTIN(JSM_OPEN) TO_GET(#JSMSTS #JSMMSG)               
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)          
**********                                                        
********** 'Load service'                                         
**********                                                        
USE        BUILTIN(JSM_COMMAND) WITH_ARGS('SERVICE_LOAD SERVICE(XM
           LPARSERSERVICE)') TO_GET(#JSMSTS #JSMMSG)              
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)          
**********                                                        
********** Load XML from required source.                 
********** Select required CHANGE command according to XML source.
**********  
********** Load directly from a file                      
CHANGE     FIELD(#JSMCMD) TO('LOAD METHOD(*FILE) FILE(order.xml)')
**********  
********** OR Load from an HTTP source                    
CHANGE     FIELD(#JSMCMD) TO('LOAD METHOD(*HTTP) HOST(LOCALHOST:84
           ) FILE(/order.xml)')    
********** OR Load from an FTP source
CHANGE     FIELD(#JSMCMD) TO('LOAD METHOD(*FTP) HOST(LOCALHOST) FI 
           LE(/jsm/instance/order.xml) USER(user) PASSWORD(passwor 
            d)')
********** OR Load from a POP3 mail source                
CHANGE     FIELD(#JSMCMD) TO('''LOAD METHOD(*POP3) SERVER(10.2.0.1
            2) USER(testuser) PASSWORD(testuser)''')       
**********                                                        
USE        BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS 
          #JSMMSG)                                               
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)          
**********                                                        
********** 'Transform to FunctionXML and bind to function         
**********                                                        
CHANGE     FIELD(#JSMCMD) TO('TRANSFORM XSL(ORDER) SERVICE_LIST(LI
           NENUM,PARTNUM,PARTDSC,PARTAMT,PARTQTY)')               
**********                                                        
USE        BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS 
           #JSMMSG #WRKLST)                                       
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)          
**********                                                        
********** Display XML order data                                  
**********                                                         
DISPLAY    FIELDS((#ORDER) (#NAME) (#STREET) (#CITY) (#STATE) (#ZI 
           P))                                                     
**********                                                         
SELECTLIST NAMED(#WRKLST)                                          
**********                                                         
DISPLAY    FIELDS((#LINENUM) (#PARTNUM) (#PARTDSC) (#PARTAMT) (#PA 
           RTQTY))                                                 
ENDSELECT                                                          
********** 'Unload service'                                        
**********                                                        
USE        BUILTIN(JSM_COMMAND) WITH_ARGS('SERVICE_UNLOAD') TO_GET
           (#JSMSTS #JSMMSG)                                      
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)          
**********                                                        
********** 'Close service'                                        
**********                                                        
USE        BUILTIN(JSM_CLOSE) TO_GET(#JSMSTS #JSMMSG)             
EXECUTE    SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)          
**********                                                        
********** SUB ROUTINES                                           
**********                                                        
SUBROUTINE NAME(CHECK) PARMS((#JSMSTS *RECEIVED) (#JSMMSG *RECEIVE
           D))                                         
IF         COND('#JSMSTS *NE OK')                      
DISPLAY    FIELDS((#JSMSTS) (#JSMMSG))                 
**********                                             
USE        BUILTIN(JSM_CLOSE) TO_GET(#JSMSTS #JSMMSG)  
**********                                             
MENU       MSGTXT('Java service error has occurred')   
**********                                             
ENDIF                                                  
**********                                             
ENDROUTINE                                             
********** End of RDML commands **********