목차 >> Core 
+- Glue Service  
+- GlueContext  
+- GlueActivity  
----+- Activity Property  
----+- Activity 분기 : <transition>  
----+- Reuse Activity

5장 Core

GlueActivity

GlueActivity 는 추상 Class로써, 모든 Activity가 상속해야 할 Class입니다 (GlueAPI 참고).

Activity는 다음과 같이 정의 할 수 있습니다. <activity>는 name 속성과 class 속성 갖습니다.
class 속성에 해당하는 것은 GlueActivity를 상속받은 클래스여야 합니다.

<activity name="HelloActivity" class="sample.activity.HelloActivity">
    <transition name="success" value="end"/>
</activity>
  1. GlueActivity를 상속합니다.
  2. 추상메소드를 구현합나다. activity에서 수행해야할 로직이 구현됩니다.
  3. runActivity()의 return 값은 <transition>의 name 속성 값과 일치합니다.
  4. Class 멤버변수는 사용하지 않습니다.
  5. Activity 간의 Data 전달(공유)는 GlueContext를 이용합니다.
    //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 Property

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>

다음 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;
    }
}

Reuse Activity

Activity를 재사용할 수 있도록 제공하고 있으며, 제공되는 Reuse Activity는 GlueAPI 에서 확인할 수 있습니다.

  • Router Activity
    • com.poscoict.glueframework.biz.activity.GlueDefaultRouter
  • SubService Activity (상세)
    • com.poscoict.glueframework.biz.activity.GlueSubService (GlueAPI)
  • JdbcDao 사용 Activity
    • com.poscoict.glueframework.biz.activity.GlueJdbcDelete
    • com.poscoict.glueframework.biz.activity.GlueJdbcInsert
    • com.poscoict.glueframework.biz.activity.GlueJdbcModify
    • com.poscoict.glueframework.biz.activity.GlueJdbcSearch
  • MyBatisDao 사용 Activity
    • com.poscoict.glueframework.biz.activity.mybatis.GlueMybatisDelete
    • com.poscoict.glueframework.biz.activity.mybatis.GlueMybatisInsert
    • com.poscoict.glueframework.biz.activity.mybatis.GlueMybatisModify
    • com.poscoict.glueframework.biz.activity.mybatis.GlueMybatisSearch
  • HibernateDao 사용 Activity
    • com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateDelete
    • com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateSearch
    • com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateUpdate
    • com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateEntityCreator
    • com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateEntityModifier
    • com.poscoict.glueframework.biz.activity.hibernate.GlueHibernateEntityRemover
  • File 관련 Activity
    • com.poscoict.glueframework.biz.activity.GlueFileDelete
    • com.poscoict.glueframework.biz.activity.GlueFileDown
    • com.poscoict.glueframework.biz.activity.GlueFileList
    • com.poscoict.glueframework.biz.activity.GlueFileSave
  • Message파싱/생성 Activity
    • com.poscoict.glueframework.biz.activity.GlueMessageCreate
    • com.poscoict.glueframework.biz.activity.GlueMessageParse
  • 기타 Activity
    • com.poscoict.glueframework.biz.activity.GlueContextClear
    • com.poscoict.glueframework.biz.activity.GlueResultKeyList
    • com.poscoict.glueframework.biz.activity.GlueWebPageTag

Reuse Activity는 향후 추가 삭제 될 수 있으며 각 Site에서 별도의 Reuse Activity를 만들어 사용할 수도 있습니다. 제공되는 Reuse Activity의 사용법은 GlueAPI를 참고하십시요.

그림 : Reuse Activity list
Reuse Activity list ^L
Prev Home Next