| 목차 >> Core  +- Glue Service +- GlueContext +- GlueActivity ----+- Activity Property ----+- Activity 분기 : <transition> ----+- Reuse Activity  | 
GlueActivity 는 추상 Class로써, 모든 Activity가 상속해야 할 Class입니다 (GlueAPI 참고).
Activity는 다음과 같이 정의 할 수 있습니다. <activity>는 name 속성과 class 속성 갖습니다. 
class 속성에 해당하는 것은 GlueActivity를 상속받은 클래스여야 합니다. 
<activity name="HelloActivity" class="sample.activity.HelloActivity">
    <transition name="success" value="end"/>
</activity>
//GlueActivity를 extends 한다.
public class HelloActivity extends GlueActivity<GlueContext>
{
    //Member 변수를 선언하지 않는다. 
    //runActivity에 business logic를 구현한다.
    public String runActivity( GlueContext ctx )
    {
        . . . 중략 : Biz Logic . . .
        // service.xml 에 지정된 transition name
        return GlueBizControlConstants.SUCCESS;
    }
}
<activity>는 name 속성과 class 속성 외에 <property>와 <transition>을 갖을 수 있습니다.
Activity의 정의에는 transition 외에 property를 포함할 수 있으며, 다음과 같은 Field와 Method를 사용할 수 있습니다 (GlueAPI 참고).
Map<String,String> dynamicProperties : Glue Service에 정의되지 않는 property입니다.
String getProperty(String key) : 아래 예제 참고
Set<String> getPropertyNames()
<activity name="HelloActivity" class="sample.activity.CustomActivity">
    <property name="city" value="Seoul"/>
    <property name="flower" value="choice"/>
    <transition name="success" value="end"/>
</activity>
public class CustomActivity extends GlueActivity<GlueContext>
{
    @Override
    public String runActivity( GlueContext ctx )
    {
        String city = this.getProperty( "city" );
        System.out.println( "city : " + city );
        Object flower = ctx.get( this.getProperty( "flower" ) );
        System.out.println( "flower : " + flower );
        return GlueBizControlConstants.SUCCESS;
    }
}
다음 Activity가 없을 경우 <transition>의 value 속성 값은 "end" 라는 예약어를 사용합니다. 그외의 값은 다음 Activity의 name 속성 값 입니다. 
다음은 <transition>이 여러개인 분기 Activity의 예입니다. 
<activity name="CustomRouter" class="sample.activity.CustomRouter">
    <transition name="add" value="Add"/>
    <transition name="update" value="Update"/>
    <transition name="remove" value="Remove"/>
    <transition name="send" value="Send"/>
    <transition name="success" value="end"/>
</activity>
<activity name="Add" class=  . . . />
<activity name="Update" class=  . . . />
<activity name="Remove" class=  . . . />
<activity name="Send" class=  . . . />
public class CustomActivity extends GlueActivity<GlueContext>
{
    @Override
    public String runActivity( GlueContext ctx )
    {
        Object choice = ctx.get( "choice" );
        // choice's value에 따른 분기
        if( "C".equals( choice's value ) ) {
            return "add";
        }else if( "U".equals( choice's value ) ){
            return "update";
        }else if( "D".equals( choice's value ) ){
            return "remove";
        }else if( "S".equals( choice's value ) ){
            return "send";
        }
        return GlueBizControlConstants.SUCCESS;
    }
}
Activity를 재사용할 수 있도록 제공하고 있으며, 제공되는 Reuse Activity는 GlueAPI 에서 확인할 수 있습니다.
Reuse Activity는 향후 추가 삭제 될 수 있으며 각 Site에서 별도의 Reuse Activity를 만들어 사용할 수도 있습니다. 제공되는 Reuse Activity의 사용법은 GlueAPI를 참고하십시요.
| 그림 : Reuse Activity list | 
| Prev | Home | Next |