рдЖрдИрдмреАрдПрдо рдбреЗрдЯрд╛рд╕реНрдЯреЗрдЬ рдХреА рдИрдЯреАрдПрд▓ рдХреНрд╖рдорддрд╛рдПрдВ рдбреЗрдЯрд╛ рдПрдХреАрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рд╕реА рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реВрдЯреАрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпрд╛ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рдЗрдВрдЯред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдмреЗрд╕рд┐рдХ рднрд╛рд╖рд╛ рдХреА рд╕реАрдорд┐рдд рд╕реБрд╡рд┐рдзрд╛рдПрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдкреБрд░рд╛рдиреА рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЧрдВрднреАрд░ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, XML рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдпрд╛, рджреВрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЗрд╕рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдордбреА 5 рд╣реИрд╢рд┐рдВрдЧ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧреЗрдЧрд╛ред )ред
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдПрдХ рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛ рдЙрдкрдХрд░рдг рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛рд╕реНрдЯреЗрдЬ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдФрд░ рдХрд░реАрдмреА рджреЛрд╕реНрдд рдХреЛ рдЧреНрд░реВрд╡реА рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдХреНрдпреЛрдВ рдЧреНрд░реЛрд╡реА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рдХрд╛рдлреА рд▓рдЪреАрд▓реА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрдб-рдСрди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
- рдирд┐рдореНрди рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рд╣реИрд╢ (рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгрд┐рдпреЛрдВ) рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕
import java.util.* ; тАж HashMap<String,String> someMap=new HashMap<String,String>() ; someMap.put("Key1", "Value") ; тАж String valFromMap=someMap.get("Key1") ;
рдЖрдк рдирд┐рдореНрди Groovy рдХреЛрдб (java.utilред * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):
HashMap someMap=new HashMap(); someMap.Key1= "Value" ; тАж valFromMap=someMap.Key1;
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ (рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдкреНрд░рдХреНрд╖реЗрдк рдХреНрдпреЛрдВ рдХрд╣ рд░рд╣рд╛ рд╣реИ?):
def NumberOfItems= 10; println "Number of items=$NumberOfItems";
- рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди, рдЖрдк рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ рдореЗрдВ, рдПрдХ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдпрд╛ рд╕рдВрдХрд▓рди рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
def GroovyCode='sum=a+b; println "Sum is $sum"'; Binding binding=new Binding(); binding.setVariable("a", 10); binding.setVariable("b", 20); GroovyShell shell = new GroovyShell(binding); shell.evaluate(GroovyCode);
- рдореВрд▓ XML рдФрд░ JSON рд╕рдорд░реНрдерди:
def writer=new StringWriter() ; def xmlOut=new groovy.xml.MarkupBuilder(writer) ; xmlOut.JobsInfo{ Job(name : 'ODS_MOUVEMENT_C') { precedants { precedant "ODS_ECRITURE_C" precedant "ODS_TEC_DEB" } } } println writer;
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд┐рдореНрди XML рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
<JobsInfo> <Job name='ODS_MOUVEMENT_C'> <precedants> <precedant>ODS_ECRITURE_C</precedant> <precedant>ODS_TEC_DEB</precedant> </precedants> </Job> </JobsInfo>
рдпрджрд┐ рдЖрдк JSON рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ groovy.xml рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред MarkupBuilder рдХреЛ groovy.json.JsonBuilder рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдЧреНрд░реВрд╡реА рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдкреАрдЫреЗ рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдореЗрдВ рдЧреНрд░реВрд╡реА рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЪреВрдВрдХрд┐ рдЗрд╕ рдЪрд░рдг рдореЗрдВ рдХреЛрдб рд╕реАрдзреЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЦреБрдж рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ - рдЧреНрд░реВрд╡реА рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдиреМрдХрд░реА рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдЖрддрд╛ рд╣реИ рдпрд╛ рдЬреЛ рдЖрдк рдЦреБрдж рд▓рд┐рдЦреЗрдВрдЧреЗред
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдЬреЛ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, Java рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдРрд╕реА рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рд╕реНрдЯреЗрдЬ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ:
import com.ascentialsoftware.jds.* ; class MyJavaTransformer extends Stage{ }
рдФрд░ рдЖрдкрдХреЛ рддреАрди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдкреНрд░рд╛рд░рдВрдн (), рдкреНрд░рдХреНрд░рд┐рдпрд╛ () рдФрд░ рд╕рдорд╛рдкреНрдд ()ред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ () рд╡рд┐рдзрд┐ рдХреЛ рд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдЬреАрд╡рди рднрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВред
рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ () рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЖрдкрдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рддрд░реНрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЯрд░реНрдорд┐рдиреЗрдЯ () рдкрджреНрдзрддрд┐ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рд╣рд╛рдВ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдирд╣реАрдВ рд╣реИрдВ, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рдХрдЪрд░рд╛: рдлрд╛рдЗрд▓реЗрдВ, рдЯреЗрдмрд▓, рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ)ред
рд╕рдорд╛рдирд╛рдВрддрд░ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдореЛрдб рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВ: DataStage рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЬрд╛рд╡рд╛ рдорд╢реАрди рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪрд╛рд░ рдиреЛрдб рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рд╕реНрдЯреЗрдЬ рдЪрд╛рд░ рдЬреЗрд╡реАрдПрдо рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рдЕрд▓рдЧ-рдерд▓рдЧ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдереНрд░реЗрдбреНрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рдХрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ:
import com.ascentialsoftware.jds.*; public class MyJavaTransformer extends Stage { public void initialize() { trace("Init"); } public void terminate() { trace("Terminate"); } public int process() { return 0; } }
рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдФрд░ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрдВрдХреНрддрд┐ рд╡рд╕реНрддреБ рдФрд░ рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: readRow () рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдФрд░ рд░рд╛рдЗрдЯрд░ () рд▓рд┐рдЦрдиреЗ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред
рдкрдВрдХреНрддрд┐ рд╡рд╕реНрддреБ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрди рдХреЙрд▓рдореЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рд╕реНрддрдВрднреЛрдВ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╡рд░реНрдХрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ "рдЬрд╛рд╡рд╛ рд╕реЗ рд╣реИрд▓реЛ", рдЕрдиреНрдп рд╕рднреА рд╕реНрддрдВрднреЛрдВ рдХреЛ "рдмрджрд▓рд╛рд╡" рдХреЗ рдмрд┐рдирд╛ "рдмрджрд▓рд╛рд╡" рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
public int process() { Row inputRow=readRow() ; if (inputRow == null)
рдиреЛрдЯ : рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреНрд▓рд╛рд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, tr4j.jar рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреНрд▓рд╛рд╕ рдкрде рдпрд╛ рдЕрдкрдиреЗ IDE рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЧреНрд░реВрд╡реА рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Groovy Transformer рдПрдХ JavaTransformer рд╣реИ рдЬреЛ рдордХреНрдЦреА рдкрд░ Groovy рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдирд┐рдпрдорд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдЧрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдЯреЗрдЬ рдХреНрд▓рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ, рд╣рдорд╛рд░реЗ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдЪрд╛рд╣рд┐рдП:
- рдЬрд╛рд╡рд╛ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЪрд░рдг рдХреЗ рд╕реНрдЯреЗрдЬ-> рдЧреБрдг рдЯреИрдм рд╕реЗ рдЧреНрд░реВрд╡реА рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
- рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ;
- рдХреЙрд▓рдо рдбреЗрдЯрд╛ рдХреЛ рдЙрдирдХреЗ рдирд╛рдо (рдХреЙрд▓рдо рдирдВрдмрд░ рдХреЗ рдмрдЬрд╛рдп) рд╕реЗ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред
рдЗрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЧреНрд░реВрд╡реА рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
http://geckelberryfinn.ru/fr/GroovyTransformer.html ред (рд╕рд╛рд╡рдзрд╛рдиреА! рдпрд╣ рдЬрд╛рд╡рд╛ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЧреНрд░реВрд╡реА = рдореЗрдВ рднреА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ), рдЕрдкрдШрдЯрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреА)ред
рдЧреНрд░реВрд╡реА рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
рд╡рд╕реНрддреБ | рд╡рд┐рд╡рд░рдг | рдЙрджрд╛рд╣рд░рдг |
---|
GTransformer | рд╡рд╕реНрддреБред рдЗрд╕ рд╕реНрдЯреЗрдЬ рдХреНрд▓рд╛рд╕ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред | GTransformer.createOutputRow () |
OutputMatching | HashMapред рдХреЙрд▓рдо рдХреЗ рдирд╛рдо рдФрд░ рдЙрдирдХреЗ рд╕реВрдЪрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред | OutputMatching.get (k); OutputMatching.ID; OutputMatching.LIBL;
|
рдореЗрдЯрд╛ рдбреЗрдЯрд╛ | HashMapред рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЗ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЙрд▓рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред | MetaData.ID.Description; MetaData.ID.Derivation; MetaData.ID.SQLType: MetaData.ID.DataElementName;
|
OutputMetaData | HashMapред рд╡рд┐рдзрд┐рдкреВрд░реНрд╡рдХ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рд╕рдорд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ | OutputMetaData.ID.Description; OutputMetaData.ID.Derivation; OutputMetaData.ID.SQLType: OutputMetaData.ID.DataElementName;
|
InputColumns | HashMapред рд╕рднреА рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЙрд▓рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ | InputColumns.ID; InputColumns.LIBL;
|
OutputRows | рд╕реВрдЪреА <, рд╣рд╢рдкрдк>ред рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕реВрдЪреАред рдЖрдк рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛред | HashMap curRow = рдирдпрд╛ HashMap (); outputRows [0] = curRow; outputRows [0] .ID = 0; outputRows [0] .LIBL = "рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо";
|
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдЖрдЙрдЯрдкреБрдЯрд░реЛрдЬрд╝ рдХреА рд╕реВрдЪреА рднрд░реЗрдВ;
- CreateOutputRow () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж GTransformer рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓рд┐рдЦреЗрдВред
рдХрд┐рд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЧреНрд░реВрд╡реА рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдЪрд░рдг рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдЖрдмрд╛рдж рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:
- рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо: groovytransformer.GroovyTransformer
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдХреНрд▓рд╛рд╕рдкрд╛рде: /рдкрде / //jar/GroovyTransformer.jar
рдиреАрдЪреЗ рдореИрдВ рдЧреНрд░реВрд╡реА рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
- рдЬреЗрдбреАрдмреАрд╕реА рд╕реНрд░реЛрдд рд╕реЗ рдЖрд╕рд╛рди рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо Oracle рдХреЗ DBMS рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ODS.AXE_LOCAL рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЪрд░рдг рд╣реИред рд▓реЗрдХрд┐рди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм "рд╡рд┐рджреЗрд╢реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ" рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ (рдЗрдВрдЯрд░рдмреЗрд╕, рдлреЙрдХреНрд╕рдкреНрд░реЛ, рд╡реЗрдХреНрдЯрд░рд╡рд╛рдЗрдЬ, рдбрд░реНрдмреА, SQLite, H2 рдЖрджрд┐)ред
рдпрд╣ рдЧреНрд░реВрд╡реА рдХреЛрдб рдХрд╛рдлреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ "рдЖрдЙрдЯрдкреБрдЯ" рдЯреИрдм рдореЗрдВ рдХреЗрд╕-рд╕рдВрд╡реЗрджреА рдирд╛рдореЛрдВ рд╡рд╛рд▓реЗ рдХреЙрд▓рдо рдХреА рд╕реВрдЪреА рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВред
sql = Sql.newInstance( 'jdbc:oracle:thin:@oraclehost:1533/nomdebdd', 'user', 'password', 'oracle.jdbc.OracleDriver' ); sql.eachRow('select id, LIBL_AXE_CENTRAL, SYS_CREATED_DAT as DAT_DEB_VALID from ODS.ODS_AXE_CENTRAL') { it -> GRow=GTransformer.createOutputRow(); i=0; it.toRowResult().each{k,v-> i++; if (v instanceof java.sql.Date) GRow.setValueAsSQLTyped(OutputMatching.get(k),it.getTimestamp(i)); else GRow.setValueAsSQLTyped(OutputMatching.get(k),v) ; } GTransformer.writeRow(GRow); }
- рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЕрдиреБрдмрдВрдз (рдЗрд╕рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рддрд╛рд░реАрдЦ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдлрд╛рд░реНрдо рдХреА рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:
"рдЕрдиреБрдмрдВрдз FU-1009 рджрд┐рдирд╛рдВрдХ 10/01/1960"
"рд╕реЗрд╡рд╛ рдЕрдиреБрдмрдВрдз FU-1019 10/01/1961 рдХреЗ рд▓рд┐рдП"
"10/01/1962 рд╕реЗ рдХреЙрди-рдЯреА рдирдВрдмрд░ FU-1001"
рдФрд░ рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рджреЛ рдХреЙрд▓рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ: рдЕрдиреБрдмрдВрдз рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрд╕рдХреЗ рд╕рдорд╛рдкрди рдХреА рддрд╛рд░реАрдЦред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЕрдиреБрдмрдВрдз рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП: [AZ] + (- [AZ]) + (- [0-9] +)
- рдЗрд╕рдХреА рддрд┐рдерд┐ рдХреЗ рд▓рд┐рдП: [0-3]? [0-9] (/ | \\ред) [0-1]? [0-9]? [0-9] (/ | \\ред) (19 | 20)? [0-9] ] {реи}
рдлрд┐рд░ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░реВрд╡реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
String StrIn=InputColumns.contrat contRegExp="[AZ]+(-[AZ])+(-[0-9]+)" datRegExp="[0-3]?[0-9](/|\\.)[0-1]?[0-9](/|\\.)(19|20)?[0-9]{2}" def matchRegEx(str, regExp) { matcher=(str=~regExp); if (matcher.getCount()!=0) return matcher[0][0]; else return null; } def cont=matchRegEx(StrIn, contRegExp); def dat =matchRegEx(StrIn, datRegExp); HashMap curRow=new HashMap(); OutputRows[0]=curRow; OutputRows[0].contrat=StrIn; OutputRows[0].numero=cont; OutputRows[0].date=dat;
рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
- рдЧреНрд░реВрд╡реА рд╣реИрдВрдбрдмреБрдХ: http://groovy.codehaus.org/Documentation
- рдЬрд╛рд╡рд╛ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдЙрджрд╛рд╣рд░рдг: http://www.ibm.com/developerworks/data/library/techarticle/dm-1106etljob/index.html