… So in the world of software, context-aware software takes into account indirect information, in addition to its direct input – which can be service parameters for instance. Take for example automatic tow service ordering system - if your car breaks down on the side of the road, instant information about nearby tow, pushed automatically to your mobile device will be more helpful than making phone calls or surfing the net. Another example is calls routing applications - routing phone calls based on the user’s location and pre-defined preferences: at home – wire line phone, at office – IP phone or instant messaging application, at the movie theater – SMS only.
Strategic Imperative: Proceed with gradual adoption of service-oriented architecture (SOA) and event-driven architecture (EDA) as fundamental steps in the software industry evolution to greater agility, intelligence and relevance. This slide, created by Gartner, demonstrates the evolution of software architecture over the years. You can see that during the last decade SOA and Advanced SOA were introduced, including complex event processing and extreme transaction processing. Gartner classifies CEP as advanced SOA, also called event-driven SOA. The next generation of application will be based on context – it a Context Driven Architecture generation. Having context as a first-class citizen will stimulate all these context-based types of applications to become more and more common. Presence, Mobility, Web 2.0 and Social computing applications have context and not content as a primary element.
This slide demonstrates again the idea that context is indirectly relevant information, useful to functioning of the service but not provided to the service as part of its invocation. The service is surrounded by a context, which can come from various sources – event brokers, sensors, web feeds, social interaction logs and so on. Software capable of adding new types of context and new sources of context is the most valuable to users.
Telecommunication applications are probably the most noticeable context applications. Smart phones can find an ATM on our way home, make a purchase, point to the nearby gas station or ping us about end of season sales as we pass a near a mall. Smart call routing systems are another example of context aware telecommunication applications, as we’ve already mentioned a couple of slides before.
Social computing is another emerging field where context a primary element – google search for instance adjusts search results and even advertisements placement according to users search history characteristics – such as content and frequency of search. Amazon improves user experience by offering the user products based on his shopping history, location, shopping history of other relevant users (those who bought the product the user just put in his shopping bag for example), and even political and social environment. In facebook the content a user retrieves depends on his identity, membership and power of his connection to other facebook members. After talking about context in general, we will focus on context in event processing…
The role of managing the content in each of the partitions can either fall on context service or on the agent associated with the specific context. In case of context service managing the partition’s content: Context service decides on affiliation of an object instance to a certain partition Context service saves the object instance and it’s mapping to the specific partition The context forwards the agent information on the update of the partition’s content, this information is necessary for the agent’s pattern evaluation logic In case of pattern evaluation the agent requests the content of the relevant partition from the context service, and evaluates the pattern In case of agent managing the partition’s content Context service decides on affiliation of an object instance to a certain partition The object is enriched with this context information and forwarded to the agent The agent stores the enriched object The agent performs a pattern evaluation of the relevant set of objects The first method can be better in terms of memory management – if the same event participates in several patterns, it can be maintained once The second one is betted in terms of context service and agents interactions, resulting in the reduced traffic.
Distributed topology: We have Context service on EPA level – The context management can either be distributed between different context services or duplicated between them. In the first case we need to maintain the distribution mechanism and consider logical integrity and synchronization issues that can arise when partitioning context into several pieces. In the second case we need to maintain replications between different instances on every context state change. Both approaches – context partitioning and duplication are scalable in terms of number of agents and throughput of events. We also avoid the performance bottleneck as opposed to the centralized approach.
Another approach combining the previous two is the hybrid approach – this architecture consists of context service component attached to each one of the agents sharing a single context data store. We can of course have several such a components – the entire system can have several groups of agents (probably logically connected agents) sharing the same context state. This approach offers both scalability typical to the distributed systems, and lack of synchronization and traffic issues typical to centralized context service architecture. Having several components of this type in our system, we can obtain a reasonable performance with relatively a small need in communicating context state changes to all interested parties.
Context Aware Computing and its Utilization in Event-based Systems DEBS 2010 Tutorial Opher Etzion (firstname.lastname@example.org) Ella Rabinovich (email@example.com)
In the play “The Tea house of the August Moon” one of the characters says: Pornography question of geography
This says that in different geographical contexts people view things differently
Furthermore, the syntax of the language (no verbs) is typical to the way that the people of Okinawa are talking
When hearing concert people are not talking, eating, and keep their mobile phone on “silent”.
Our IT systems are catching up Context is becoming a first class citizen in computing Gartner has designated Context enriched services and Context delivery architecture as Part of its application integration Hype Cycle of 2009
This tutorial’s agenda Part I: Context in general Introduction – context in pragmatics and language Roles of contexts in computing Introduction contexts in event processing Part II: Context in depth Introduction to Context categories Temporal context Segmentation context BREAK Spatial context State contexts Context composition Part III: Context in practice Operational semantics of context Context implementation in practice in event processing Context implementation in other computing areas Conclusion
Context in language – why are we laughing from jokes?
A man walks in the street with a duck, his friend approaches him
Friend: why are you walking with a duck?
Man: I went out of home and this duck followed with me and doesn’t leave me alone
Friend: take him to the zoo
Next day the same man still walks in the street with a duck, his friend approaches him again
Friend: why haven’t you taken the duck to the zoo?
Man: I took him to the zoo, cinema, pub– he still doesn’t leave me alone
Where is the context switch?
Another joke example Four researchers are exploring the jungle, and are captured by a tribe of cannibals The chief of the tribe said: we shall eat this one today, this one tomorrow, and this one the day after His deputy asks: what about the blond Guy? The chief answers: we shall release him, since he helped me preparing to the PhD qualification exam in MIT
The context switch principle The cannibals are wild The cannibal chief has PhD from MIT
Meaning disambiguation by context The table? “ The” is always within context
Some parts of the language affected by context Addressing people Request form Code switching for multi-lingual people Discourse context – e.g. shared experience
Context as “behavior selection” In some countries I carry money in my wallet, in other countries I hide the money under my clothes When the radio tells me about a traffic jam in the highway I take an alternative route If I am getting a request from an important person I re-arrange my priorities to handle it first (otherwise I put it in a queue) A Jewish person who observes the religious laws does not eat diary food within six hours from the time of eating meat I need to get to a certain address in Sidney using public transportation, I am looking for fastest way (train, bus, boat) Spatial Context State-oriented Context Segmentation Context Temporal + segmentation Context Spatial + temporal + state-oriented context
Context in pragmatics – travelling in Sydney Request Determine Context Select Service Take me to address X Requester is now in location Y; no car; has daily ticket for all public transport; it is rush hour Selected alternative
A major step towards modeling the real world functional behavior
Most of the software considers only direct information
Context-aware software acts also upon (indirect) relevant information, which represents the conditions under which the processing is done
Automatic tow service ordering system
Calls routing application
“ Context-aware computing is the concept of leveraging information about the end user to improve the quality of the interaction” (Gartner 2007)
Software Architecture in the Context of History Era of the Mainframe OLTP Batch Agility of Enterprise IT 1960s 1980s 1970s 1990s 2000s 2010s Era of the Server Two-tier Era of the Web SOA Three-tier CoDA Era of Context Presence Mobility Web 2.0 Social computing Time 2020s Advanced SOA = event-driven SOA CoDA = Context-driven Architecture Web Web Services Multi-channel PC LAN Server Internet Advanced SOA XTP CEP S/360 SNA Mainframe (Gartner 2007)
Context-aware Computing Context (indirect relevant information) Service Input (direct imperative information) Data stores Web feeds Services Events Sensors Queues Logs
Context has three distinct roles (which may be combined) Partition the incoming events The events that relate to each customer are processed separately Grouping events together Different processing for Different context partitions Determining the processing Grouping together events that happened in the same hour at the same location
Contextual representation of event Spatial coordinates System entry point Detection time Occurrence time
Context Definition A context is a named specification of conditions that groups event instances so that they can be processed in a related way. It assigns each event instance to one or more context partitions . A context may have one or more context dimensions. Temporal Spatial State Oriented Segmentation Oriented
Context Types Examples Spatial State Oriented Temporal Context “ Every day between 08:00 and 10:00 AM” “ A week after borrowing a disk” “ A time window bounded by TradingDayStart and TradingDayEnd events” “ 3 miles from the traffic accident location” “ Within an authorized zone in a manufactory” “ All Children 2-5 years old” “ All platinum customers” “ Airport security level is red” “ Weather is stormy” Segmentation Oriented
Context Building Block Context identifier Context dimension Context type Context parameters Context initiator policies Building Block Describing Context Context Details Explicit Partitions Partition identifier Partition parameters Composition Details Relationships Member contexts Priority Order Location service global state
Events grouping - group events to process them together based on the fact they have occurred during the same interval
Example: count all the bids within the auction period
EPA applicability - indicate that a certain event processing agent is applicable within certain intervals and is not applicable in other intervals.
Example: detect if all printers at the same floor are off-line during working hours.
Temporal interval is a half open interval [Ts, Te)
Ts is start-point, included in the interval
Te is end-point, not included in the interval
Temporal context is aimed to partition the temporal space into time intervals.
Fixed Interval Fixed interval Interval start Interval end Recurrence Temporal ordering In a fixed interval context each window is an interval that has a fixed time length; there may be just one single window or a periodically repeating sequence of windows. July 12, 2010, 2:30 PM + 3 hours 08:00 10:00 08:00 10:00 08:00 10:00
In an event interval context each window is an interval that starts
when the associated EPA receives an event that satisfies a specified
It ends when it receives an event that satisfies a second predicate, or
when a given period has elapsed.
Event interval Initiator event list Terminator event list Expiration time offset Expiration event count Initiator policy Terminator policy Temporal ordering Patient’s admittance Patient’s release Earthquake From patient’s admittance to patient’s release + 3 days Within 3 days from an earthquake
Sliding Fixed Interval In a sliding fixed interval context each window is an interval with fixed temporal size. New windows are opened at regular intervals relative to one another. Sliding fixed interval Interval period Interval duration Interval size (events) Temporal ordering 2 hours 2 hours 2 hours 1 hour 1 hour 1 hour
Sliding Event Interval A sliding event interval is an interval of fixed size (events number) that continuously slides on the time axis. Sliding event interval Event list Interval size (events) Event period Temporal ordering Every 3 blood pressure measurements
initiator event = volcano eruption, expiration time offset = + 3 days
March 5, 2010 10:00 March 7, 2010 06:00
Context Initiator Policies – cont. A context initiator policy is a semantic abstraction that defines the behavior required when a window has been opened and a subsequent initiator event is detected. add ignore refresh extend
Context Terminator Policies – cont. A context terminator policy is a semantic abstraction that defines the behavior required when several windows have been opened by subsequent initiators. first last all
Segmentation Oriented Context A segmentation-oriented context assigns events to context partitions based on the values of one or more event attributes, either using the value of these attributes to pick a partition directly, or using predicate expressions to define context partition membership. Segmentation-oriented Attribute list Partition identifier Partition expression
A f ixed location context has predefined context partitions based on specific spatial entities. An event is included in a partition if its location attribute indicates that it is correlated with the partition’s spatial entity.
Relations between the event’s location and the context entity’s location An event is classified to a context partition if satisfy a spatial relationship with fixed entity
Fixed location examples A person enters the house: The house location is an area, the person’s location is a point; the relation is touches A car parks across two lanes The car parked location is an area, the lane is an area; the relation is overlaps An Alzheimer patient has gone outside of the safe zone defined by his family. His location is a point, the zone is an area; the relation is disjoint
An entity distance location context assigns events to context partitions based on their distance from a given entity. This entity is either specified by an event attribute or is given as part of the context specification
Entity d1 d2
Entity distance location examples A driver enters the restaurant’s interest context when arriving to a certain radius from the restaurant A bus is within the context of a certain bus station if it is within a certain distance from the station
An event distance location context assigns events to context partitions based on their distance from the location of the event that triggered the creation of the partition.
Event distant location example A fire breaks within a certain radius from the earthquake epicenter The distance space is partitioned, different actions for different partitions A suspect fits the criminal’s profile is arrested within a certain radius from the crime scene
Where states are coming from? Explicit state machines Observation in Workflow/BPM State of some entity Typically stored in DB/ global variable
State examples When the CPU is overloaded When a backup is running When a person is presenting When the mood in Wall Street is bullish.
The temporal aspects of state Occurs while a state is valid? The “while” may be determined by detection time or by occurrence time If the state is – raining, Then it makes sense that the association of events is determined according to occurrence time If the state is – CPU is overloaded Then it makes sense that events that result in further processing are associated according to their detection time.
Composite context A composite context is a context that is composed from two or more contexts. Example: the set of context partitions for the composite context is the Cartesian product of the partition sets of its constituent contexts.
Composition of context – some observations: The most common combination is: segmentation and temporal The relations between the composed contexts can be – union or intersection (intersection is the more common) There may be multiple composition participants In some cases a priority is needed to disambiguate the context affiliation State: rainy union Temporal: every day between midnight and 6am Segment: customer Temporal: Every 10 orders Segment: driver Temporal: Within 1 hour from an accident Spatial: within 5KM from the accident Segment: customer Temporal: Every 10 orders
Priorities in event composition Temporal: Every 10 orders Segment: customer First create group of 10 orders and this group by customer The temporal context has higher priority
Priorities in event composition Segment: customer Temporal: Every 10 orders First group of by customer and then count 10 orders for each customer The segmentation context has higher priority
Context in Practice – Oracle EPL SELECT * FROM Withdrawal RETAIN 5 EVENTS SELECT * FROM Withdrawal RETAIN 4 SECONDS
Context in Practice –Sybase (Aleri/Coral8) CCL CREATE WINDOW Book_w SCHEMA Book_t KEEP ALL ; INSERT INTO Book_w SELECT * FROM Book_s; The KEEP policy specifies the kind of window. Here are some examples: KEEP LAST PER Id KEEP 3 MINUTES KEEP EVERY 3 MINUTES KEEP UNTIL (”MON 17:00:00”) KEEP 10 ROWS KEEP LAST ROW KEEP 10 ROWS PER Symbol
MIT Media Lab – context in kitchen appliances The Context-Aware Computing group is focused on demonstrating the possibilities for controlling systems with interpreted human intention. The goal is to demonstrate how “context” such as who we are, what we are doing, where we are doing it, why we might be doing it, and when it should be done can simplify our ability to control systems. http://context.media.mit.edu/press/index.php/about/
MIThril – context aware wearable computing http://www.media.mit.edu/wearables/mithril/ Based on sensing and machine learning – context engine and wearable sensors and processors
Sixth sense http://www.media.mit.edu/research/highlights/sixthsense-wearable-gestural-interface-augment-our-world
Context and websites Contextualization of websites: making them appear in searches of certain category (reverse engineering of the search engine algorithms) Using the user’s context to generate results Contextualization of websites: making them appear in searches of certain category (reverse engineering of the search engine algorithms)
IBM Entity Analytics – context acquisition by dependencies Good Guys Subjects of Interest Hotel guests Loyalty club enrollment Employees Vendors Victims Specially designated nationals Excluded persons Gaming license revocations Known cheaters Interpol FBI Most Wanted
Context Separation of context from the logic Next phase of abstraction independence BPM and rules provided separation between programming in the large and programming in the small Databases provided data independence
Context is: One of the key building blocks in event processing modeling A language construct that starts to appear in event processing languages An emerging concept in enterprise computing