首页 > 其他分享 >Event和Activity

Event和Activity

时间:2024-09-27 21:49:49浏览次数:11  
标签:活动 Event 事件 Activity SLEE 上下文 呼叫

在 JAIN SLEE 中,Event(事件)和 Activity(活动)是两个核心概念,它们共同作用于系统的执行过程,但它们代表不同的含义和职责。让我们从最基础的层面来讲解它们的区别、联系,以及它们在 JAIN SLEE 框架中的角色。


1. Event(事件)

1.1 概念

事件(Event) 是 JAIN SLEE 中的一个基本单元,用来通知系统某个动作或状态变化。事件可以由外部信号(例如电话呼叫、消息到达)或内部触发(例如定时器触发)生成。它类似于我们熟知的事件驱动系统中的事件概念。

1.2 事件的作用
  • 通知变化:当某个状态发生改变时,系统通过事件将这个变化传递给 SBB(Service Building Block),以触发相应的逻辑处理。
  • 系统交互:事件是 SLEE 系统与外部世界交互的主要方式。例如,当一个电话呼入时,系统会产生一个呼叫到达的事件,SBB 会根据该事件作出反应。
1.3 示例:事件处理
public void onCallArrivalEvent(CallEvent event, ActivityContextInterface aci) {
    System.out.println("Received call event for call ID: " + event.getCallId());
}

在这个例子中,onCallArrivalEvent 方法处理一个电话呼叫事件。当呼叫到达时,系统将生成 CallEvent,并将其传递给相关的 SBB 进行处理。


2. Activity(活动)

2.1 概念

活动(Activity) 是 JAIN SLEE 中的另一个核心概念,它代表系统中一个长期存在的上下文或交互过程。一个活动通常与多个事件相关联,并且它可以跨越多个事件周期。例如,一个电话呼叫本身就是一个活动,从呼叫的建立、通话过程到最终挂断,整个过程都是同一个活动。

2.2 活动的作用
  • 状态管理:活动通常用于管理某个交互或操作的状态。例如,一个电话呼叫从建立到结束,期间产生的所有事件都属于同一个活动。
  • 关联事件:多个事件可以关联到同一个活动中,确保这些事件处理时是基于相同的上下文。例如,呼叫建立、通话过程和呼叫挂断可以属于同一个呼叫活动。
2.3 示例:活动的使用
ActivityContextInterface aci = context.getActivityContextInterface(activity);
aci.attach(sbbLocalObject);

在这个示例中,ActivityContextInterface 用于获取某个活动的上下文,并将其与一个 SBB 本地对象(sbbLocalObject)关联。这样,后续发生在该活动上的事件都将发送到该 SBB 进行处理。


3. Event 和 Activity 之间的联系

3.1 联系
  • 活动是事件的载体:一个活动可以产生多个事件,多个事件可以共享同一个活动。每个事件都与某个活动相关联,这样系统能够根据活动的状态上下文来处理事件。
  • 事件驱动活动:事件是触发 SBB 处理逻辑的信号,而活动是事件发生的上下文。事件通过 ActivityContextInterface 传递到 SBB 中,SBB 根据活动上下文处理事件。
3.2 区别
  • 事件是瞬时的:事件是一次性的、瞬时的。当某个状态变化时会产生事件,事件会立即被处理,然后消失。
  • 活动是持续的:活动是长期存在的,它的生命周期可能跨越多个事件的处理。例如,一个电话呼叫活动可能从呼叫建立到挂断持续数分钟。
3.3 示例:事件与活动的关系
public void onCallArrivalEvent(CallEvent event, ActivityContextInterface aci) {
    // 获取当前活动的上下文
    ActivityContext ac = aci.getActivityContext();

    // 检查是否有活动存在
    if (ac != null) {
        System.out.println("Processing event for call activity: " + ac);
    }
}

在这个示例中,当接收到电话呼叫事件时,系统首先检查该事件关联的活动上下文 ActivityContext,并根据活动状态来处理该事件。


4. Activity 的类型

JAIN SLEE 中有不同类型的活动,常见的包括:

  • Service Activity:与 SLEE 系统服务相关的活动。
  • Timer Activity:定时器相关的活动。
  • Null Activity:一种特殊的活动类型,没有特定的外部交互,仅用于系统内部管理。

不同的活动类型可以对应于不同的交互过程或状态管理场景。


5. 如何选择使用某个 Activity Interface

当设计 JAIN SLEE 应用时,选择使用哪个 Activity Context Interface 主要取决于以下因素:

  • 活动的生命周期:如果某个操作是短暂的或一次性的,可能不需要创建专门的活动。而对于长期存在、涉及多个事件的交互过程,则需要使用活动上下文来管理状态。
  • 事件关联:如果你有多个事件需要共享状态或上下文,那么应该创建一个活动并通过 ActivityContextInterface 来关联这些事件。

6. 总结

  • Event(事件) 是系统中的动作通知,它是瞬时的,触发 SBB 执行特定逻辑。
  • Activity(活动) 是系统中的持续交互过程,事件通常与某个活动关联,活动提供上下文信息,管理事件的状态。
  • Event 和 Activity 的关系:事件是瞬时的,活动是长期的;事件通过 ActivityContextInterface 关联到活动,活动提供状态和上下文管理。

希望这个解释可以帮助你更好地理解 EventActivity 之间的关系,以及它们在 JAIN SLEE 系统中的作用。

标签:活动,Event,事件,Activity,SLEE,上下文,呼叫
From: https://blog.csdn.net/pumpkin84514/article/details/142533958

相关文章

  • 程序埋点(Event Tracking)
    程序埋点(EventTracking)是指在软件程序中嵌入记录用户行为或系统运行状态的代码,以便收集数据用于分析和监控。程序埋点通常用于分析用户行为、性能监控、问题排查、产品优化等目的。何时使用程序埋点:用户行为分析:了解用户在应用中的行为,例如点击量、页面访问次数等。性能监控:......
  • 易优CMS致命错误,联系技术支持:Call to undefined function eyPreventShell()-eyoucms
    当你遇到 core/helper.php 第146行左右出现致命错误,并且提示 CalltoundefinedfunctioneyPreventShell() 时,通常是因为某个自定义函数未被定义或未被正确引入。以下是一些具体的解决步骤:步骤1:检查函数定义定位 eyPreventShell 函数查找 eyPreventShell 函数的......
  • 【VUE】[Violation] Added non-passive event listener to a scroll-blocking...
    1.问题[Violation]Addednon-passiveeventlistenertoascroll-blocking<某些>事件.Considermarkingeventhandleras'passive'tomakethepagemoreresponsive.See<URL>译:[违规]向滚动阻止添加了非被动事件侦听器<某些>事件.请考虑将事件处理程序标记为“被......
  • WindowSystemEvent
    Qt中为WindowSystemEvent事件定义了处理函数Handler,通过宏定义和模版来声明定义----QT_DEFINE_QPA_EVENT_HANDLERMatches(25in1files)----qwindowsysteminterface.cpp(gui\kernel)line199:#defineQT_DEFINE_QPA_EVENT_HANDLER(ReturnType,HandlerName,...)\QT......
  • QtWidgetsApplication中的EventDispatcher的创建
    #include"QtWidgetsApplication1.h"#include<QtWidgets/QApplication>classGlobalEventFilter:publicQObject{public:virtualbooleventFilter(QObject*watched,QEvent*event)override{qDebug()<<"watched......
  • 【Azure Event Hub】关于Event Hub指标 ConsumerLag 的解释
    问题描述在使用AzureEventHub的过程中,需要监控消费端是否正常消费数据?而常规的指标只有IncomingMessage,OutgoingMessage,是否指标能表明当前EventHub消费滞后,即Incoming数量远远大于Outgoing呢?IncomingMessages :发布到事件中心的消息数。OutgoingMessages :从事件中心使......
  • 【Azure Event Hub】关于Event Hub指标 ConsumerLag 的解释
    问题描述在使用AzureEventHub的过程中,需要监控消费端是否正常消费数据?而常规的指标只有IncomingMessage,OutgoingMessage,是否指标能表明当前EventHub消费滞后,即Incoming数量远远大于Outgoing呢?IncomingMessages:发布到事件中心的消息数。OutgoingMessages:从事件中心......
  • SBB Activity Context Interface (ACI) object 和 Generic Activity Context Interfac
    在JAINSLEE中,SBBActivityContextInterface(ACI)object和GenericActivityContextInterfaceobject的使用主要取决于应用场景的需求、活动的复杂性以及是否需要对特定活动类型进行精确控制。为了更好地理解它们的使用场景、选择依据以及如何在项目中使用,我将详......
  • Android 移动应用开发基础案例教程——Activity的跳转
    一、Activity的创建1、创建一个新项目点击Flie--New--NewProject点击EmptyViewsActivity点击Next根据需要可修改项目名称,这里我重命名为CycActivity,然后点击Finish即可完成创建新项目。2、SecondActivity的创建点击java--->com.example.cycactivity,右键new--->A......
  • Server-Sent Events (SSE) Koa2 & Nginx & React 实践
    Server-SentEvents(SSE)Koa2&Nginx&React实践得鹿梦鱼前端+node全栈,骑马找马中,有兴趣可私聊​关注他 在现代Web应用中,实时数据传输变得越来越重要。Server-SentEvents(SSE)是一种轻量级的技术,允许服务器向客户端主动发送更新。本文将详细介......