在席与可用性管理(PAM)及其在Context-Aware系统中的应用
南京邮电学院 通信与信息系统专业 张磊
摘要:
本文主要是自适应业务系统项目中的一部分,介绍了在席性和可用性管理的概念、名词术语,包含身份、代理、在席、可用、事件这5个概念,以及基于java平台的JAIN PAM的应用编程接口(API),并举出了运用在席性和可用性开发特定的业务实例,结合环境感知,使用户更加自由地管理自己的状态和好友状态及用户之间的通信方式。
Abstract:
This paper is a part of the auto-adapt service system project, which introduce the concept and terminology of Presence and Availability Management including identity, agent, presence, availability, and events, and JAIN PAM application programming interface (API) based on java platform. It also gives a service instance using presence and availability combined with context-aware which makes end-users more freely manage the status of their own and their buddies and communication channels between them.
1. 概述
现有的通信方式中,人们可以通过电话、电子邮件、SMS短消息和网络即时聊天软件(IM)等方式进行通信,这些通信方式实时性各不相同。通信发展到现在,基本上已经形成一个人拥有多种通信方式的局面,而人们为了使自己拥有的通信方式及通信设备更加按照人们自己的意愿进行通信,并且能够对自己的通信方式具有更多的主动控制权,由此我们提出了在席和可用这两个概念,现在已有不少的可用与在席的规范及API,其中sun公司的基于java平台的在席与可用性管理API就是其中之一。
本文介绍了在席性和可用性管理(Presence and Availability Management)的概念、名词术语以及PAM的应用编程接口(API),并举出了运用在席性和可用性开发特定的业务应用,通过在席性和可用性的管理,可以使用户更加方便的管理自己的状态和好友状态及通信的方式。
2. 在席性与可用性管理
2. 1 概述
PAM接口的目的是建立一个用来保存和发布信息的标准 ,发布的信息是关于:
u 数字身份;
u 代理的特征和在席状态:代表通信、内容传送等的实际能力;
u 实体的状态和能力;
u 实体的可用性:是对各种通信方式以及可用的上下文环境
下面我们考虑一个通信业务方面的实例:
一个用户正在开会,由于其开会这个状态的特殊性,用户要求在开会这段时间里信息可以按照他的意愿进行管理。希望经理发给他的即时消息(IM)发送到他的手机上,普通同事的消息一概发送到台式电脑上,而其它一些实时性不强的消息则转发至e-mail或者使用传真机/打印机接受。发信息的人可以通过他所显示的通信方式知道他哪几种通信方式可用,或许根本就不知道他将通过何种方式收到消息,收消息的方式是完全在于接收者。
PAM不是对现有的标准化的各种通信和网络服务协议的替代,而是试图对管理以及共享横跨多业务网络的在席和可用的信息进行标准化。
身份、在席和可用的概念很普通,并独立于各种通信技术、协议和应用软件而存在;在席并不一定意味着可用,终端用户或组织需要更多的能够让各种各样的通信设备可用的控制权;基于在席性的业务必须含有个人相关的姓名地址,包括谁能访问在席信息以及是在什么样的条件下访问。
PAM的主要目标是加快多种通信系统(如,即时短消息、email,传真、电话等)的一系列应用软件和服务的开发进程,并且使终端用户更加弹性机动地控制其通信方式。软件开发人员可以在一个标准化的平台上开发通信管理软件,使得这些软件独立于现在的技术和协议。
2. 2 PAM术语
l 身份(Identity)
在PAM规范中,身份是一个实体的狭义电子标识,这个实体可以是个人或团体,存在于PAM的应用软件和业务中。
作为PAM规范的核心,实体的主要特征是名称(name),应用软件和业务通过名称来识别实体。实体可以拥有多个名称,登陆ID,账户名等等,这些都可以用作实体的标识。
名称存在于名称空间(namespace)的上下文环境中。一个名称空间是通过实体隐式或显式地建立的,用来在实体所在域中唯一的识别身份。例如,一个门户的提供者可以建立一个名称空间,为门户里的业务创建登陆名。在同一名称空间中名称必须是唯一的,两个实体只要在不同的名称空间中就可以用相同的名称,比如两个实体可以在两个不同的门户网站注册同样的名称。PAM本身并没有定义一个识别身份的名称空间,一些PAM的实现可以为实体产生名称,从而创建一个名称空间。
在命名习惯上,名称空间和域是截然不同的。如,一个email地址stones@njupt.edu.cn将njupt.edu.cn作为其域。如果在运作PAM的应用软件和业务中,实体以其e-mail句柄进行身份识别,那么整个e-mail句柄就是其名称,用来全局标识PAM身份。在某些情况下,人们用来进行身份识别的名称源自于他们通信能力,如e-mail地址或电话号码。尽管那些句柄和设备共存,使用该地址来识别一个实体和使用该地址来识别通信代理,PAM能将其区分开来。比如,一个e-mail地址可以用作一个实体标识符来浏览网站,虽然e-mail并非用于这个目的。
l 代理(Agent)
代理在PAM中是软件或硬件设备的狭义电子标识,是身份用来表明自己使自己对应用软件和业务为可用。
代理的一个重要特征是与其相关的一个或多个能力。能力使代理变的有用,一个能力可以表示为一个代理在参与通信和内容传递(如实时消息、短消息SMS、无线应用协议WAP、语音)的能力,或表示为一个代理报告周围环境的有用信息(如位置、周转率、温度)的能力。
PAM未指定任何预先定义好的能力,应用程序可以定义并使用它们自己的能力。
代理实例由名称或句柄定义。用作身份时,名称存在与名称空间的上下文环境中。在一个名称空间中,名称是唯一的。两个代理实例只要在不同的名称中就可以拥有相同的名称。比如,一个移动电话和一个PDA是由两个不同的厂商制造,因为某种巧合拥有了一摸一样的序列号,且它们都用序列号作身份识别。由于PAM尝试在多种技术中统一业务,一个名称并非在所有技术或所有厂商中间唯一的识别代理实例,它们可以通过使用名称空间来消除歧异。
PAM规范并没有包含各代理之间的联系。
为了适应性和扩展性,代理使用属性表来关联附加数据。代理提供了管理这样一个属性表的方法。一个代理类型可能与一列特定的属性关联,而且这种类型的所有代理都继承了这些属性的实例。
PAM没有指定任何预定义的属性或类型。应用软件可以定义和使用其本身代理类型。
PAM实现可以映射特定的现有目录和数据库数据到一个或多个类型,从而使其可以从PAM接口访问。PAM规范没有指定数据是如何存储的。可能是存储在PAM实现里,也有可能映射到外部目录和数据库存储的数据中。
代理实例与一个或多个身份关联,关联导致身份对关联的代理能力的继承。
l 在席(presence)
在席的概念已经在一些应用领域中使用了,最直接的是用在实时消息。从一个最简单的在线/离线状态的概念出发,在席所包含的信息是描述个体当前的在线状态以及个体接受各种通信方式的能力。比如,在席可以描述一个人在一特定时间是否可以接电话或者收发即时消息(IM)。在席的概念已经扩大为状态中包含其他上下文环境信息,如离开(外出就餐、离开电脑等等)和活动状态(通话中、发呆等)。另一方面,本地信息很大程度上与传统考虑的在席所包含的信息分离。PAM规范扩大了在席概念的范围,认为所有这样的信息,包括位置信息,描述了实体在席的不同的上下文环境。比如用户希望通过何种介质传送信息,以及用户当前的地理位置信息等等。其一致的特性就是在席信息不断的在变化,以及在业务和应用的不同时刻得知当前信息。
PAM规范中,在席性是一系列可扩展的特性,这些特性获得身份或代理所在的时刻的动态上下文环境。与身份或代理有关的静态信息(如名称、地址、能力)相反的是,在席性是关于动态信息,如位置、状态等。
在席信息区别于跟身份和代理相关的静态信息,在席信息是动态的且可以实现。有些在席信息变化过快,以至于不能以静态数据的形式保存,PAM的实现工具可能在数据的存储上做出的决定不是最理想的。其次,在席信息包含一个有效期,在实现过程中必须考虑到。
l 可用性(Availability)
可用性是实体身份的性质,是反应特定上下文环境中用户进行通信的意愿,通常由受到请求的通信类型以及发出请求的其他用户的身份所决定。例如,当一个即时消息(IM)的用户可以接受来自同样网络的其他用户的消息时,但是事实上他不想让其他人知道他在线,他不想收到其他人发给他的信息,那么这时该用户相对于这种网络的通信方式是不可用的。
又如在IM系统中,在席性和可用性概念联系紧密。一个典型的IM客户端程序必须能够在联系人状态改变的时候通知用户,而且可以使用户能够任意改变其自身状态。当用户处于忙碌、就餐等状态的时候,该用户是不可用的。不可用是相对与一种通信的方式,比如,当用户离开办公室的时候,那么该用户的办公室固定电话和台式机的即时短消息方式均不能联系该用户,这两种通信方式相对于该用户就是不可用的,而移动终端手机对于用户则是可用的。
在大多数应用中,在席是可用所必需的,但是在席并不意味着所有的都是可用的。
可用性往往和上下文环境息息相关,PAM规范中,上下文环境是指一系列定义可用性状态的属性。如可用的通信方式、类型,请求者的身份等。
l 事件(Events)
事件代表特定身份识别的所发生的事情,与前面所述的概念相关。PAM规范提供注册,对发生的事件的通报(如回调函数)。
事件包括一下几点功能:
u 身份的创建和删除
u 代理实例与身份的关联
u 代理实例的在席状态或位置的改变
u 特殊通信形式的身份的可用性的改变
PAM规范中包含一系列预定义的事件,每一个事件是由该事件的名称以及一个事件注册时所提供的和事件出现的通知里所包含的一系列属性值定义的。
2. 3 PAM所包含信息的范围
在席和可用性管理包含以下几种类型的信息:
u 身份:由名称及其参与通信的实体别名所组成;
u 代理信息:由名称以及软件或硬件设备的通信能力组成;
u 代理规定:由代理实例和身份之间的联系组成;
u 存在性信息:由身份或代理的动态特性(如状态、地理位置)组成;
u 可用性信息:由身份和可用性计算的参数组成,基于设备存在和当前参数;
u 以上各信息变化的通知;
u 访问该信息安全问题。
PAM规范中包含管理访问以上信息的接口。规范中并没有包含任何在席性和可用性信息的存储设计及存储需求,也没有包含访问接口的协议规范,这些是要通过PAM规范特定的实现来确定。
2. 4 安全与隐私问题
既然设计在席性和可用性管理接口是用来在管理域中共享信息,并用来促进可用性的估计,安全和隐私问题就不得不在设计中加以考虑。PAM考虑两个安全性问题:
u 对PAM规范的实现的访问控制
u 规范中鉴权实体信任的使用方法
考虑一个案例:一个终端用户登陆到即时消息客户端,希望发送一条消息,客户端可以访问PAM业务来确定消息的目的地是否可用,需要通过鉴权来访问PAM业务,与用户是否登陆无关。事实上,网关可以代表许多客户端做访问,出于性能考虑,要求在一开始只进行一次鉴权而不是每一步都进行。其次,检查是否可用的方法每一步中需要包含一个证书,即登陆到客户端的终端用户的证书,这样可用性的估计可以在有隐私问题需要的时候加以考虑。
2. 5 JAIN PAM的API
JAIN的PAM的API规范中一共包含了4个包,每个包都包含一系列的类和接口,有着特定的用途。
这些包都继承了javax包:
u javax.pam:主要包含PAM的数据类型和处理异常;
u javax.pam.access:PAM访问控制包,包含查看和更新在席性和可用性信息;
u javax.pam.event:PAM事件包,包含PAM事件的预定与通知;
u javax.pam.provisioning:包含身份、代理及其之间的关系的规定。
其中javax.pam 中的接口CsapiInterface是所有PAM接口所组成的树中的根,业务中的其他任何接口都继承了此接口,而CsapiInterface则继承java.io.Serializable。其中,CsapiInterface下面的一个叫做Service的子接口是所有JAIN SPA业务接口的根,SPA业务中包括用户交互、java呼叫控制等。
javax.pam.access中包含以下接口:
u AccessManager: 提供各种各样的可用性在业务中应用的接口,以及提供鉴权证书。
u AgentPresence: 保留代理的动态在席信息。
u AppPreferenceCheck: 提供由PAM业务调用的方法(即函数,java语言中叫方法),来检查访问控制或使用应用软件提供的实现计算可用性。
u Availability: 管理一个身份可用性指定的参数,以及查询特殊能力的身份的可用性。
u IdentityPresence: 保留身份的动态在席信息。
javax.pam.event包中含有以下接口:
u AppEventHandler:此接口是客户端需要实现和通过事件业务注册,以用来通知事件。
u EventHandler:管理事件的注册和客户端并发通知接口的注册。
u EventManager:在业务中向应用层提供各种可用的接口以及提供鉴权证书。
javax.pam.provisioning包中包含以下的接口:
u AgentAssignment:管理身份和代理之间的联系
u AgentManagement:管理代理(一个硬件或软件模型)名称、通信能力和一系列与代理相关的叫做profile的属性。
u AgentTypeManagement:定义代理指定相关类型属性的类型计划(type schema)。
u CapabilityManagement:定义能力的名称
u IdentityManagement:管理终端用户或实体名称、别名、团体和一系列关于身份的叫做profile的属性。
u IdentityTypeManagement:定义身份指定相关类型的属性的类型计划
u ProvisioningManager:在业务中向应用层提供各种各样可用的接口,以及提供鉴权证书。
3. 在席和可用性管理的应用
由于在席性表明了个体当前的在线状态及其所能够进行的通信能力,而可用性表明了个体所希望进行通信的意愿,那么我们可以运用以上的概念设计相应的业务。
考虑这样一个业务情形:用户需要一个客户端,这种客户端集成了即时短消息、电话、电子邮件等多种通信的方式,并能够自动探测到其好友列表以及好友的可用性,包括好友是否在线,好友的位置,以及好友是否忙碌,并通过环境感知对通信方式进行自适应,得出好友哪些通信方式可用,并选出最佳方式。而且当用户的可用性改变的时候向对方好友发出通知。
环境感知:
这里的客户端不同于一般的即时消息客户端,普通的即时消息客户端只需要明确对方好友是否在线,可以互相发送即时消息即可。而带有PAM的客户端则要求客户端可以自动探测到对方好友的具体的可用情况。何为自动,比如说对方是否坐在电脑前面,这可以通过一种内置的笔记本麦克风探测到,麦克风可以感应到对方用户的呼吸声、说话声,如果有敲击键盘的声音,则可说明对方正坐在电脑前打字,可以通过即时消息联系对方。这种内置的麦克风可以通过一定的滤波器滤掉一系列的杂音,如室内空调的噪音,笔记本硬盘读写的声音等等。另外,可以通过对方好友的日程表来感知到对方是否可用,比如在一个时间段内,对方好友的日程表中显示对方这段时间内有会议,则表明对方不能通过PC收发即时短消息;再比如日程表中显示对方一天都在出差,则表明对方办公室里面通信设备均不可用,只能通过移动设备找到对方。这样每个用户的客户端都具有环境感知的功能,便可以将用户的可用性通知服务器,服务器便可以向每个客户端广播用户好友的可用性情况。客户端还可以设定智能选择、筛选,从而选择出联系好友的最佳方式。此方式可以是通过环境感知自动的选择,也可以是通过对方好友自行设定的,即用户可以自行设定自己的每个好友通过不同的方式与自己通信。
通信方式:
客户端必须支持电话、即时消息、邮件三个基本的功能。首先是电话功能,当对方在线并不处于忙碌状态且周围没有事情要做时,即可以接电话,则电话成为通信方式的首选。电话支持必须由服务其提供,服务器的数据库里存储各用户的电话号码及地址信息。当用户A需要向对方好友用户B请求通话时,服务器通过用户A的位置信息找到用户A当前可用的电话号码(因为一个用户由于地理位置的经常变更不止存储一个电话号码在服务器内),向用户A拨号,等待用户A的应答,同时,服务器也通过用户B的位置信息查找其当前可用的电话号码,向用户B拨号,同时等待用户B的应答,当双方都拿起话机后通话最终建立。其次是即时消息,其原理与IM、MSN、QQ等即时通信软件相似,用户双发可以收发文字消息,此通信方式没有电话的实时性强,且为半双工。再次是邮件方式,实时性最弱,当对方用户以上两种通信方式均为不可用状态的时候可通过邮件的方式发送文字、语音、视频等消息。
4. 结论
在席性和可用性的管理可以使通信更加弹性化,用户可以有更大的空间选择自己的通信方式,是消息的收发可以按照用户自己的意愿进行,加之环境感知可以改变现有的许多通信方式的缺点,使现有的通信系统提供更多的自适应业务。
5. 参考资料
1) JAIN Presence and Availability (PAM),javadoc
2)An Example of Using Presence and Availability in an Enterprise for Spontaneous, Multiparty, Multimedia Communications——Hyong Sop Shim, Chit Chung, Michael Long, Gardner Patton and Siddhartha Dalal Applied Research, Telcordia Technologies New Jersey, USA
2) rfc2778-A Model for Presence and Instance Messaging
4) Presence versus Availability: The Design and Evaluation of a Context-Aware Communication Client —— James Fogarty,Jennifer Lai, Jim Christensen 2004