Job를 호출하기 위해서는 GlueJobEventSender 모듈(bean)을 이용하며, 2가지 방법이 가능합니다.
GlueJobCall(Reuse) Activity 이용
GlueJobEventSender 모듈(bean)을 직접 사용
GlueJobEventSender 모듈(bean)은 applicationContext.xml 에 다음과 같이 추가합니다.
jobEventSender 의 추가 property는 JavaDoc을 참고합니다(GlueAPI).
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="serviceManager" class="com.poscoict.glueframework.biz.control.GlueServiceManagerImpl"> <property name="cacheManager" ref="cacheManager" /> <property name="serviceLoader" ref="serviceLoader" /> </bean> <bean id="cacheManager" class="com.poscoict.glueframework.cache.ehcache.GlueEhCacheManager"/> <bean id="serviceLoader" ... /> <bean id="jobEventSender" class="com.poscoict.glueframework.scheduling.remote.GlueHttpJobEventSender"/> </beans>
GlueService 기반일 경우는 GlueJobCall Activity를 이용할 수 있습니다.
GlueJobCall(Reuse) Activity의 Property는 다음과 같이 설정합니다.
GlueJobCall Activity의 property는 JavaDoc을 참고합니다(GlueAPI).
sender property 에 jobEventSender bean 이 사용됩니다.
result-key property에 담기는 값은 JOB 실행 이력 관리 ID 값입니다(참고).
<?xml version="1.0" encoding="UTF-8"?> <service name="biz-service" initial="Init" xmlns="http://www.poscoict.com/glueframework/service"> <activity name="Init" ... /> <activity name="FireJob" class="com.poscoict.glueframework.scheduling.activity.GlueJobCall"> <transition name="success" value="Next" /> <property name="sender" value="jobEventSender" /> <property name="server-address" value="schedulerServer" /> <property name="job-name" value="jobName" /> <property name="job-params" value="OPER_FLAG=operFlag|USER_EMP_NO=userNo" /> <property name="result-key" value="requestId" /> </activity> <activity name="Next" ... /> </service>
GlueService가 아닌 경우, GlueJobEventSender 모듈(bean)을 직접 사용할 수있습니다.
GlueJobDefinition 을 생성해서 GlueJobEventSender 모듈(bean)의 sendJobEvent api를 사용합니다.
GlueJobDefinition 은 JavaDoc을 참고합니다.(GlueAPI).
String jobNumber = "-1"; String JobKey = "JOB.GR"; Map<String, Object> jobData = new HashMap<String, Object>(); jobData.put(key, value); GlueJobDefinition def = new GlueJobDefinition( jobNumber, jobKey ); def.setParameters( jobData ); String serverAddress = GlueStaticContext.getGlueProperty("scheduler.address"); GlueJobEventSender sender = GlueStaticContext.getBeanFactory().getBeanObject( "jobEventSender", GlueJobEventSender.class ); String historyId = sender.sendJobEvent( def, serverAddress + "/scheduler" );
glue.properties 의 내용 일부입니다.
scheduler.address=http://172.31.47.161:8805
GlueJobStatusCheck 클래스의 getJobStatus api를 이용합니다.
com.poscoict.app.job.GlueJobStatusCheck 입니다.
public class SampleActivity extends GlueActivity { public String runActivity( GlueContext ctx ) { String serverAddress = ... // String serverAddress = GlueStaticContext.getGlueProperty("scheduler.address"); // String serverAddress = (String)ctx.get("schedulerServer"); String historyId = (String)ctx.get("requestId"); String JobKey = ... // String JobKey = "JOB.GR"; // String jobKey = (String)ctx.get("jobName"); String status = GlueJobStatusCheck.getJobStatus(serverAddress, historyId, JobKey ); ... status 값에 따른 로직 수행 return GlueBizControlConstants.SUCCESS; } }
다음은 GlueService 실행용 main method를 만들어 실행하는 예제입니다.
public static void main(String args[]) { GlueContext ctx = new GlueDefaultContext(); ctx.put(GlueBizControlConstants.SERVICE_NAME, "biz-service"); ctx.put("schedulerServer", "http://172.31.47.161:8805"); ctx.put("jobName", "M27.POS_TARGET_EXTRACT"); ctx.put("operFlag", "A"); ctx.put("userNo", "PD262892"); GlueBizProvider.getController().doAction(ctx); }
다음은 main method를 만들어 실행하는 예제입니다.
public static void main(String args[]) { GlueJobEventSender sender = GlueStaticContext.getBeanFactory().getBeanObject( "jobEventSender", GlueJobEventSender.class ); GlueJobDefinition def = new GlueJobDefinition( "-1", "GR.JOB" ); String historyId = sender.sendJobEvent( def, "http://172.31.47.161:8805/scheduler" ); String status = GlueJobStatusCheck.getJobStatus(serverAddress, historyId, "GR.JOB" ); }