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" );
}