1.3.5.3. 示例

  • 监听事件

    import com.seeyon.apps.collaboration.event.CollaborationStartEvent;
    import com.seeyon.ctp.event.EventTriggerMode;
    import com.seeyon.ctp.util.annotation.ListenEvent;
    ...
    public MyCollaborationEventListener{
        // 监听协同发起事件,同步执行
        @listenEvent(event= CollaborationStartEvent.class)1
        public void onCollaborationStart1(CollaborationStartEvent event){
            //event.getSummartId()
        }
        // 监听协同发起事件,异步执行 Since V5.1
        @listenEvent(event= CollaborationStartEvent.class,async=true)2
        public void onCollaborationStart2(CollaborationStartEvent event){
            //event.getSummartId()
        }
        // 监听协同发起事件,事务提交成功后执行 Since V5.1
        @listenEvent(event= CollaborationStartEvent.class,mode=EventTriggerMode.afterCommit)3
        public void onCollaborationStart3(CollaborationStartEvent event){
            //event.getSummartId()
        }
    }

    1

    协同发起时立刻执行,同步模式,如果监听代码出了异常,会导致整个事务回滚,协同发起失败。

    2

    协同发起时立刻执行,异步模式,监听代码出异常不影响协同发起。但如果协同发起自身事务回滚,监听代码仍然会执行。

    3

    协同发起成功提交事务后执行,异步模式。

    如非特定的需求,建议采用第三种模式;

    否则以协同发起后发短信为例,第一种模式如果短信网关出错,会导致整个系统的协同都无法发起;

    第二种模式,协同发起出错,但短信已经发出,无发追回。

    第三种模式,只有协同发起成功了才发出短信。

    <bean id="" class="com.seeyon.apps.form.MyCollaborationEventListener">
        ……
    </bean>