US20170329614A1 - Notifications in multi application user interfaces - Google Patents
Notifications in multi application user interfaces Download PDFInfo
- Publication number
- US20170329614A1 US20170329614A1 US15/591,995 US201715591995A US2017329614A1 US 20170329614 A1 US20170329614 A1 US 20170329614A1 US 201715591995 A US201715591995 A US 201715591995A US 2017329614 A1 US2017329614 A1 US 2017329614A1
- Authority
- US
- United States
- Prior art keywords
- notification
- display
- container
- user interface
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04812—Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
-
- G06F9/4443—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2428—Query predicate definition using graphical user interfaces, including menus and forms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- G06F17/212—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/04817—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0483—Interaction with page-structured environments, e.g. book metaphor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04847—Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0485—Scrolling or panning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/106—Display of layout of documents; Previewing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/048—Indexing scheme relating to G06F3/048
- G06F2203/04803—Split screen, i.e. subdividing the display area or the window area into separate subareas
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
Definitions
- This description generally relates to user interfaces and user experiences.
- the description in particular, relates to systems and techniques for providing a user experience for accessing and viewing data and information related to multiple software applications on a computing device.
- the multiple applications may be hosted on the same or different types of computer platforms or systems and accessed from the users' client devices.
- the different types of computer platforms or systems may include, for example, SAP HANA, SAP ABAP, or other enterprise-type computer platforms or systems.
- the suite of the multiple applications which an enterprise may deploy may be large.
- a sample of the large number of applications that may be deployed by an enterprise for its operations may, for example, include applications in the areas or domains of Finance, R&D, Engineering, Human Resources, Manufacturing, etc.
- Different subsets of these applications may be used in the work of enterprise personnel, who, for example, may have a variety of different roles.
- Each user may have a need to use a different respective subset of the multiple applications, based, for example, on the user's role in the enterprise.
- a system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions.
- One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
- One general aspect includes a computer-implemented method for generating notifications in a user interface.
- the method may include detecting, with a processor, an availability of at least one notification available for display in the user interface, generating, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action, generating, with the processor and for the container, additional selectable actions and appending the additional selectable actions to the at least one selectable action, the additional selectable actions being generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface, determining, with the processor, a display device type in which the user interface is being accessed, and generating, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions.
- the container may be arranged for display according to the display device type.
- Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
- Implementations may include one or more of the following features.
- the computer-implemented method further including, displaying, in the user interface in a display location, the container, the display location determined based on the display device and a role associated with the at least one user.
- the computer-implemented method further including in response to detecting one or more additional notifications, generating a container for each of the one or more additional notifications, and generating, for display in the user interface, the container for each of the one or more additional notifications, each container depicting a plurality of selectable action where each container is arranged for display according a display device providing the user interface.
- the computer-implemented method where the one or more additional notifications are provided from a plurality of source applications associated with at least one user accessing the user interface, the additional selectable actions providing access to a plurality applications hosted outside of the user interface.
- the computer-implemented method further including: merging each notification received in the user interface into a list, displaying the list in a viewport, and generating a plurality of actions that enable at least one bulk operation for the notifications in the list.
- the computer-implemented method where the additional actions are implemented upon selection within a respective notification.
- a system for generating a user interface may include a shell container, executing in a web browser and providing a plurality of services for generating notifications in a user interface, an application container, executing in the web browser, the application container and at least one processor to programmed to, obtain at least one notification, provide, for display in a display device, the user interface depicting the at least one notification, detect, with a processor, an availability of at least one notification available for display in the user interface, generate, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action, generate, with the processor and for the container, additional selectable actions and append the additional selectable actions to the at least one selectable action.
- the additional selectable actions may be generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface.
- the system may also determine, with the processor, a display device type in which the user interface is being accessed, and generate, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions, the container being arranged for display according to the display device type.
- Implementations may include one or more of the following features.
- the system where the at least one processor is further programmed to display, in the user interface in a display location, the container, the display location determined based on the display device and a role associated with the at least one user.
- the system where the at least one processor is further programmed to in response to detecting one or more additional notifications, generating a container for each of the one or more additional notifications, generating, for display in the user interface, the container for each of the one or more additional notifications, each container depicting a plurality of selectable action, wherein each container is arranged for display according a display device providing the user interface.
- each display device type is associated with a different set of notification rules, the display device type including a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device.
- Implementations of the described techniques may include hardware, a method or process, or computer software on a computer-accessible medium.
- FIG. 1A is a screen shot of an example personalized user interface (UI) display, in accordance with the principles of the present disclosure.
- UI personalized user interface
- FIG. 1B is an illustration showing an example login screen displayed in a shell main container.
- FIG. 1C is an illustration showing an example launchpad displayed in a shell main container.
- FIG. 1D is an illustration showing an example active application screen (an overview page) displayed in a shell main container.
- FIG. 1E is an illustration showing an example object page displayed in a shell main container.
- FIG. 1F is an illustration showing an example footer toolbar.
- FIG. 1G is an illustration showing an example me area that can be displayed in a left container.
- FIG. 1H is an illustration showing an example notification area that can be displayed in a right container.
- FIG. 1I is an illustration showing an example copilot user interface.
- FIG. 1J is an illustration of a timeline user interface that can display timeline entries.
- FIG. 2 is a diagram of an example system that can implement the user interfaces and user experiences described herein.
- FIG. 3 is a diagram of an example system that can implement the launchpad for the user interfaces and user experiences described herein.
- FIGS. 4A-4C illustrate screenshots depicting examples of the viewport.
- FIGS. 5A-5E illustrate screenshots of example user interfaces depicting viewports.
- FIGS. 6A-6D illustrate screenshots of example user interfaces depicting notification aspects.
- FIG. 7 is an example data model for a notification architecture.
- FIG. 8 is an example block diagram depicting an integration of notification services.
- FIG. 9 is an example swim lane diagram depicting provision of messages using a notification service described herein.
- FIG. 10 is an example swim lane diagram depicting action processing on notifications.
- FIG. 11 is an example swim lane diagram depicting a process for incrementing a badge counter
- FIG. 12 is an example swim lane diagram depicting a process for resetting a badge counter.
- FIG. 13 is an example of a notification list.
- FIG. 14 is an illustration of an example process for generating and displaying notifications.
- the present disclosure relates to graphical user interfaces of software applications that display content, referred to herein as the “main content,” together with notifications, functions, and other information besides the main content, i.e., supplemental content.
- Such applications may include, among other things, standalone software programs with a built-in display module that generates notifications to be depicted in a graphical user interface (e.g., a viewport), as described in the example embodiments herein.
- display of notifications may be provided as separate functionality, e.g., as an add-on package, a plug-in or through a separate program that communicates with a main content providing program via an Application Program Interface (API).
- API Application Program Interface
- the main content providing program and/or the display program may be executed locally on a user device and/or remotely, as a Web application, for example.
- Example embodiments are described in which a number of notifications are generated, configured, and sent to reach an end-user in any number of devices. For example, such notifications may be received as mobile notifications on mobile devices.
- the notifications provided herein can be integrated into the native notification infrastructure of a respective mobile platform (e.g. notification center in iOS, badge support, etc.). For example, an end-user can be navigated directly to a particular Fiori application from the notification.
- the application may contain further information to process the notification (i.e., also referred to as “deep linking”). If supported by the native mobile infrastructure exposing actions directly within the native notification center may execute (e.g. in iOS 8).
- notifications may be provided by means of email.
- Email support can be integrated into each application. Integrations may not be necessarily replaced with a new mandatory infrastructure but should be integrated.
- exposure of notifications on an end-user's desktop may be provided via a launchpad configured to launch a plurality of applications on a client computing device.
- native desktop notification centers can be leveraged if supported by a particular operating system (e.g. in OSX or WINDOWS 10).
- the systems and methods described herein can function together to integrate a notification center.
- the user can access the notification center from everywhere within SAP Fiori, for example, on any device.
- the notifications can be extended by the notification center to include actions and operations. This provides the user an advantage of being able to perform key actions (such as approvals) directly from the notification, without having to open a separate application.
- the systems and methods described herein can merge and display new and existing notifications in one list. Users can see the read/unread status and order and filter the list based on their preconfigured requirements. Display of such notifications can include banners, badges, and sounds to inform users when new notifications come in. Notifications of the same type may be grouped together. For faster interaction, users can perform bulk operations on all the notifications in a stack
- settings can be provided to access notifications for all of a user's apps in one location.
- the user can activate notifications, choose the delivery channel, or set the notification priority—all at a glance.
- the systems can provide an If This Then That dialog for setting up subscription based notifications. This enables users to receive notifications on specific KPIs or business object values that are not offered in a settings dialog. For easier handling, the system automatically helps the user to set up the notification by prefilling the dialog with content, conditions and triggers from the current screen.
- notifications can originate from a variety of providers, out of different systems, both Cloud and on premise and out of different technology stacks. Therefore, notifications are generally integrated in a standardized way using a central notification service for notification aggregating.
- open standards may be used to allow third party solutions to integrate their notifications into the harmonized Fiori user experience. From the end-user perspective notifications shall always be perceived as being pushed to the user. This may also occur when utilizing Fiori Launchpad (i.e., there is not a refresh button to manually pull new notifications). Native mobile push notifications and email can also be used to handle notifications.
- notifications are provided in particular display areas in a viewport based upon a context or user setting or user role. For example, different styles and display areas may be provided to help users to understand a context of a notification provided in a viewport before reading the notification. To do so, an indication of the context may be location. For example, approval request notifications may be set to appear at a left center portion of a viewport in all open applications for a user. When such a notification arrives in the left center portion of the viewport, the user understands that she can ignore the notification until it is convenient to read and take action on the notification.
- notification providers there are two types of notification providers (a) providers that are enabled to proactively push new notifications (b) providers that support reading notifications through an API, but that do not include a push notification process. Notification providers that are not push-enabled can still be integrated into consumption channels that rely on an end-user session such as the Fiori shell. In this case, the notifications can be pulled and subsequently short-polled for that given user.
- notifications are typically actionable, they may contain data to allow the end-user to decide on the appropriate action. In consequence, that means that the notifications potentially need to contain sensitive data. If notifications are exposed over unsecure channels such as email or mobile infrastructures not owned by SAP (e.g., APNS) they do not contain any sensitive data. In this case, the sensitive data is read by the receiver through an additional secured channel (e.g., from the mobile device). If that is not possible (e.g., typically for emails), the notification itself can be a trigger to let the user navigate to some UI which contains all of the secure information.
- unsecure channels such as email or mobile infrastructures not owned by SAP (e.g., APNS) they do not contain any sensitive data. In this case, the sensitive data is read by the receiver through an additional secured channel (e.g., from the mobile device). If that is not possible (e.g., typically for emails), the notification itself can be a trigger to let the user navigate to some UI which contains all of the secure information.
- the question on how to deal with sensitive data is also relevant when storing or caching the notification content within the notification service. Depending on the type of notifications and regulations on the customer side, the data may not be persisted.
- FIG. 1A an example display of a viewport 100 with a launchpad 101 , in accordance with the principles of the present disclosure.
- Launchpad 101 may be included in a center container 120 (e.g., “Work”) with content relevant to the user's work, domain, or role in the enterprise.
- a left side container 110 e.g., “ME” with content personal to the user may pertain to content in the launchpad 101 or may be independent of content in the launchpad 101 .
- a right side container 130 e.g., “Notifications” may include notifications directed to the user that pertain to content in the launchpad or other content.
- these containers 110 , 120 , and 130 may be referred to collectively herein as viewports.
- the combined areas 110 , 120 and 130 are referred to collectively herein as a viewport.
- the personalized web interface may be presented as a uniquely integrated, multifaceted user interface which may, in effect, transform a single-screen view on the client computer device into three multifunctional screen areas (e.g., Left/Center/Right “viewports”).
- the viewport may function as an entry point to access software applications and associated content.
- the viewport may be configured to provide a single screen view that depicts three (or more) multifunctional screen areas.
- the three areas are displayed in parallel as a left panel, a center panel, and a right panel.
- the center panel may include a workspace area which can display a launchpad (e.g., home screen) or one or more active application areas (e.g., screens) that a user has launched from the launchpad (or tile/link in the launchpad).
- the left panel may include a Me Area that provides various generalized functionalities related to the user and operation and personalization of the environments described herein.
- the right panel may include a Notifications Area that displays a broad array of notification types (System Alerts, messages, reminders, tasks alerts, etc.) in a customizable listing format.
- the functions and information described herein are assigned to at least one virtual extension of a viewport. That is, a portion of the display area can be displayed, while other portions are virtual extensions and only displayed as a user or algorithm scrolls to place one or more of the other portions into view.
- a virtual extension can include a first extension area to the left of the viewport and a second extension area to the right of the viewport. When the main content is selected, the extension area(s) are hidden from display.
- the viewport is switched to display selected supplemental content by triggering a graphical icon inside a viewport.
- a viewport may be switched by a touch gesture such as a swiping motion towards or away from the corresponding extension area.
- a viewport may be switched back to the main content, e.g., by triggering a respective icon or using a gesture.
- trigger icons indicate when new or unread information is available inside a respective extension area.
- the indication can be a numerical counter, a symbol, a special graphic or animation, etc.
- the supplemental content is displayed by moving the corresponding extension area over to the viewport.
- the movement may be animated in the manner of a camera pan.
- other movements such as instantaneous display or fading in and out are also possible.
- the main content remains on display in the viewport when the extension area is displayed.
- the main content may be shifted away from a central portion of the viewport and reduced in size (e.g., scaled down to 75% of its original size) to direct the user's attention to the supplemental content.
- the main content may be partially cut off by the border of the viewport.
- a Work viewport 120 is located in the center of the display screen.
- the Work viewport 120 may, for example, display either the launchpad 101 or an active application screen that was previously selected or opened from the launchpad tile array.
- the left Me viewport 110 may, for example, provide various generalized functionalities related to the user and their operation and personalization.
- the right Notifications viewport 130 may, for example, display one or more of a broad array of notification types (System Alerts, messages, reminders, tasks alerts, etc.) in a customizable listing format.
- the launchpad or home screen in the viewport may provide a clear screen orientation for accessing corresponding application information as well as generalized functionalities and navigations without ever disrupting a user's context of their current task.
- a client computer device e.g., a mobile device
- a personalized UI display may be adapted to present fewer of the three multifunctional screen areas or viewports on the device's limited display screen area. For example, only the Center, Left/Center or Center/Right screen areas or viewports may be presented on a mobile device's display screen.
- a client computer device structure or framework provides a viewport for a web interface for access to, or interaction with, a suite of multiple and diverse applications (or data sources), in accordance with the principles of the present disclosure.
- the viewport can be used for the multiple and diverse applications and may, for example, provide services to a user for application-to-application navigation, personalization, search, and incident creation.
- the Viewport may be designed to provide a common, same, or unified user experience (UX) to the user when launching, accessing, or interacting with one or more of the multiple applications.
- UX unified user experience
- a backend or gateway computer system (which may be connected to multiple applications or hosts) may generate the viewport.
- the Viewport may be delivered or presented as a web page on the client computer device and serve as a single web-based entry point for multiple applications and analytics across platforms and devices.
- the content of the viewport may be organized in one or more containers (e.g., main or center “shell” container, left container, right container) for display on a display screen of a client computer device.
- the main container may contain the launchpad (e.g., home page), which may act as the starting or focal location for initiating application-to-application navigation, personalization, search, and incident creation, just to name a few examples.
- Each of the multiple applications may be represented by, or delivered via, content (e.g., a graphical user element (GUI), link, tile, factsheet, or other object) on the viewport (or within the launchpad).
- content e.g., a graphical user element (GUI), link, tile, factsheet, or other object
- the content of the launchpad may be customized or personalized to a user (e.g., based on user role, authorization level, user interests or needs, etc.) for access to, or interaction with, a selected subset of the multiple applications (or data sources).
- Each of the selected subset of multiple applications may be represented a specific object (e.g., a tile or link) on the viewport (or within the launchpad).
- the specific object e.g., tile or link
- the specific object may be identified or labelled by a name, title, or icon indicating the specific application which the specific object represents.
- the tile or link (e.g., by a single click) may be used as an application launcher on the viewport (e.g., web interface) to launch the application that the tile or link represents.
- the tiles corresponding to the specific applications represented on the launchpad may be organized as a group or array of tiles in a “tiles area” of the UI hosting the launchpad.
- links corresponding to specific applications represented on the launchpad may be organized as a list of links in a “links area.”
- a Design Time Tool e.g., available, for example, in a menu or via a tile or link on the launchpad
- Users/Administrators may personalize the tiles area and the link list area to a user.
- One or more containers of the viewport may have adjustable amounts of displayed content (e.g., number of tiles) (and correspondingly adjustable display size or display area) so that the same viewport can be adapted for display on different-sized display screens of different client device types (e.g., smartphone, smart watches, laptops, work station, tablet, desktop computer, etc.), and across all possible deployment options (e.g., on premise, cloud, as-a-service, etc.). Which ones of the one or more containers are displayed on the display screen at given moment may depend, for example, the status of tasks or activities of the user navigating the viewport, and also, for example, on the size of the display screen of the client computer device available for display.
- client device types e.g., smartphone, smart watches, laptops, work station, tablet, desktop computer, etc.
- deployment options e.g., on premise, cloud, as-a-service, etc.
- a container e.g., center container, launchpad
- the launchpad may serve as a shell container to access all content.
- Other containers may include different panels with different floorplans for different content corresponding user interests or activities (e.g.
- a “ME” panel displaying information or personal data about a user, a “notifications center” displaying notifications (e.g., e-mail, text messages, alerts, etc.) for the user, a panel displaying discussion threads or boards, an Overview Page, an Object Page (e.g., a floorplan to view, edit and create objects), a panel displaying context and ad-hoc workflows, a panel displaying dynamic sidebar information, a dynamic side content panel, etc.
- the dynamic side content is a layout control that allows additional content such as timeline, chat, additional information to be displayed in a way that flexibly adapts to different screen sizes.
- the launchpad may overtake space typically set aside for notifications.
- the launchpad may be placed with a visual effect, including sliding in from a top of a UI and bouncing into place in the UI.
- the applications (which, for example, may be a set of applications implemented on HTML5/CSS/JS technology using SAPUI5 framework) delivered via launchpad 101 may adhere to a consistent, responsive design that allows users to seamlessly experience the applications across interaction channels—desktop, tablet, mobile, etc.
- the applications delivered via the launchpad may include legacy applications implemented on traditional platforms using legacy UI technologies (e.g., FPM/WDA, SAPGUI for HTML, SAPGUI for Windows, etc.). Access to legacy applications may, for example, be provided via corresponding links in a links area of the personalized UI display.
- a start screen (e.g., main container, “launchpad” or home page) may present assigned applications as so-called “tiles” (e.g., tile 150 , tile 151 , tile 152 , etc.).
- Tiles (which are user-activable UI elements) may only be used as application launchers for launching applications and presenting the applications on the launchpad.
- a user may use these tiles (e.g., tile 150 , tile 151 , tile 152 , etc.) to launch or navigate to specific applications.
- Incorporated into the launchpad may be a launchpad Designer tool, which allows assignment of tiles to users and user groups for customization or personalization (e.g., based on user role) of launchpad 101 .
- each of the multiple applications (for which launchpad 100 serves as an interface) may correspond to at least one tile.
- An exception to the general rule may be for factsheet applications, which need not be represented by tiles. However, factsheets may optionally still be saved as and represented by tiles on launchpad 101 if desired.
- a tile that represents an application may be a container that displays different types of additional information or content.
- the additional information may include, for example, informative text, numbers, and charts.
- the displayed tile content may be static or dynamic.
- the displayed tile content may be dynamically updated and may include, for example, data (e.g., trends or key performance indicators (KPIs), and application status, etc.) supplied by the backend systems or applications to which the tile is represents.
- KPIs key performance indicators
- the multiple applications described herein may be hosted on the same or different types of computer platforms or systems (possibly including some applications hosted on the client device itself).
- the different types of computer platforms or systems may include, for example, SAP HANA, SAP ABAP, or other enterprise-type computer platforms or systems.
- the suite of the multiple applications which an enterprise may deploy for its operations may be large. Different subsets of these applications may be used in the work of enterprise personnel who may have a variety of different roles. Each user may have a need to use a different respective subset of the multiple applications, based, for example, on the user's role in the enterprise.
- viewports may each represent a partial view of a larger surface.
- a user may prepare to use the architecture described herein to extend to larger screens and collaborative wall displays. For example, if a screen or window is too small, the user will only see the viewport that fits to the screen or window.
- the virtual screen is wider (e.g., multi-screen displays)
- the systems and methods described herein can provide an advantage of allowing a widening of the viewport to offer a panoramic view of the surface. While maintaining the promise to responsively support small devices, the systems and methods described herein offer the possibility to also target larger displays.
- the viewport also provides the advantage of a natural user experience compared to the classical off-canvas designs that are common in mobile applications.
- the Me area e.g., viewport 110
- a Notifications area e.g., viewport 130
- Each off-screen area is populated using system-driven information. Users can access these areas through actions in a shell bar on the top left and top right corners.
- the transition that is shown upon accessing such content depicts a smoothly animated lateral move that mimics the user's head turning to the left and to the right in a panoramic view.
- User interaction with the content can be mapped to mimic natural user (e.g., human) gestures or input controls.
- the surface generated by the view therefore removes any screen limitations. Such a surface offers additional space for user-specific and system-driven data.
- the Me Area can be found to the left of an off-screen area. Because this area is located off-screen, it is not permanently visible to the user. In order for the Me Area to slide into view, the user can click on the profile image located on the top left corner of the screen—an action that mimics the user turning his or her head to the left. This action will also trigger the viewport to move to the left and the main content area to zoom out. As the Me Area slides into view, the user will be able access information relevant to both the user and his or her usage environment. This includes, for example, the user's profile picture and access to online state, settings and preferences, a catalog of available apps (App Finder), tools to personalize the current content in the main area, and objects and apps recently visited by the user.
- App Finder catalog of available apps
- the Me Area may be available from each screen in the main content area. On the background surface, the different areas co-exist and influence one another. While most actions in the Me Area are available independently of the current context, some of the actions will be directly tied to the content shown in the main content area. For example, settings will display the settings page for the specific app in the main content area (not yet available). Additionally, personalization options might only be available if the respective screen is visible in the main area. In some implementations, an option to allow users to view a list of their most recently visited items is provided. This is especially useful for those users who are used to working with a limited set of apps or objects as it significantly simplifies their navigation.
- the right off-screen area is dedicated to providing system-driven information. This may include system-generated notifications of events to which a user has subscribed.
- the system may provide more live insights and actions, making a real-time push channel increasingly important.
- a notification center can provide system-generated notifications from various sources such as the workflow inbox or chat notifications. Notifications can be prioritized and grouped into groups of similar items. Through these configurations, the user will be able to access more information about a notification and take immediate action.
- the notification area is accessible from every app that is shown in the main content area.
- the user can bring the notification area into focus through a virtual turn of the head—that is, by clicking on the notification icon on the top right corner of the screen.
- the notification area exists independently of the application in the main content area.
- the big difference between this area and the notifications on the home page of the launchpad is that the launchpad home area displays notifications within the launch tiles.
- the launchpad home area displays notifications within the launch tiles.
- Other types of information may be suitable for display in the notification area, such as progress indicators for long-running tasks (for example, for a build or deployment process).
- the viewport offers a partial view of a potentially infinite surface on which content and functionality can be placed either in a fixed layout with the three main areas, or in a more flexible layout of multiple areas.
- the Me Area slides into view from the left to offer users access to various user-related information including personalization, profile, settings and interaction history.
- the notification area slides into view from the right to offer users access to system-driven information that helps them to become aware of critical, real-time information.
- the notification area may also offer other system-driven content.
- FIG. 1B is an illustration showing an example login screen 110 displayed in the shell main container 104 .
- the login screen 110 provides a UI that allows a user to enter credentials in order to log into and begin a personalized and customized UX.
- the login screen 110 appears to drop into the shell main container 104 from a virtual extension area located along a top of a display area.
- the virtual extension area can be placed along the bottom of the display area.
- the virtual extension area can be placed to the left and/or the right of the display area.
- FIG. 1C is an illustration showing an example launchpad 101 displayed in the shell main container 104 .
- the launchpad 101 can be a web-based entry point (or homepage) for enterprise applications that can execute (run) across multiple platforms and computing devices.
- the launchpad 101 appears to drop into the shell main container 104 from the top of a display area.
- the virtual extension area can be placed along the bottom of the display area.
- the virtual extension area can be placed to the left and/or the right of the display area.
- the launchpad 101 can serve as a bracket around (or a base for) a set (or group) of enterprise applications, providing a single point of entry for the set of enterprise applications.
- the launchpad 101 presents (displays on a screen of a computing device of a user) each application represented by a tile.
- a tile can be a container that represents the application.
- Each tile can display different types of content.
- a user can interact with each tile to navigate to the specific enterprise application associated with the tile.
- a programmer can assign a tile to a specific user or group of users.
- the launchpad 101 can provide one or more services.
- the one or more services can include, but are not limited to, application-to-application navigation, personalization, role-based application assignments, search, and incident creation.
- the launchpad 101 can be a role based, personalized, real-time and contextual aggregation point for business applications and analytics.
- the launchpad 101 can run (execute) on multiple computing devices including, but not limited to, desktop computers and mobile computing devices such as laptop computers, tablet computers, notebook computers, personal digital assistants (PDAs), smartphones, mobile phones, smart watches, etc.).
- the launchpad 101 can be deployed on multiple platforms (e.g., Linux, Windows, Windows Phone, MAC®, iOS®, OS X®, Android®, etc.).
- the launchpad 101 includes tiles 114 a - h .
- Each tile can display different types of content.
- tile 114 a can be a news and feeds tile that can enhance collaboration by providing a user with information about the enterprise.
- the tiles 114 a - h can be individually color-coded. A color can represent a particular role (e.g., finance, human resources, supply chain management (SCM), customer relationship management (CRM), etc.).
- the tiles 114 a - h can be associated with a group 116 .
- Tile 114 f can be a key performance indicator (KPI) tile.
- Tile 114 b can be a basic launch tile.
- Tile 114 d can be a monitoring tile.
- Tile 114 g can display a comparison chart for specific content.
- the launchpad 101 includes a link list area 118 that includes links 119 a - f .
- the link list area 118 is an area on the launchpad 101 that can provide links to enterprise applications represented by the tiles 114 a - h . For example, a user can select and drag a tile from the tile area on the launchpad 101 into the link list area 118 to create a link to the application associated with (represented by) the tile.
- the launchpad 101 can include a footer toolbar (e.g., footer toolbar 132 as shown in FIG. 1F ). In some implementations, the footer toolbar can appear to float over the content displayed in the launchpad 101 .
- the shell toolbar 108 can display a search icon 111 and a copilot launch icon 113 .
- a user can select (click on) the copilot launch icon 113 to launch a copilot UI.
- a copilot UI will be described in more detail with reference to FIG. 1I .
- FIG. 1D is an illustration showing an example active application screen (overview page 120 ) displayed in the shell main container 104 .
- the enterprise applications that can be accessed by a user by way of the launchpad 101 and then subsequently displayed in an active application screen (e.g., the overview page 120 ) can include, but are not limited to, transactional applications, analytical applications, and fact sheet applications (contextual navigation applications).
- Transactional applications can allow a user to create, change and/or approve processes with guided navigation.
- Analytical applications can provide a user with a visual overview of a dedicated topic for monitoring and tracking purposes to allow for further key performance indicator (KPI) related analysis.
- KPI key performance indicator
- Fact sheet applications can allow a user to view essential information about an object and to allow navigation between related objects.
- the overview page 120 can visualize all of the information a user may need for a specific business context (business domain) on a single page or screen.
- the information can be displayed in one or more variable content packages (VCPs) or cards 122 a - i .
- VCPs variable content packages
- Each card can be a container of content for organizing large amounts of information on an equal plane within the overview page 120 .
- a user can rearrange the position of the cards 122 a - i on the overview page 120 .
- a user defines, adds, or deletes cards included in the overview page 120 .
- An overview page (e.g., the overview page 120 ) can be a selectable application (e.g., from the launchpad 101 ) providing an integrated gateway into enterprise applications and application content included in the launchpad 101 .
- the UI of the overview page (e.g., the overview page 120 ) can provide a user with a visual summary of data, links, actions, and content that are relevant to a business domain of expertise of a user and relevant to a selected role of the user within the domain.
- the visual summary can be presented in one or more cards (e.g., the cards 122 a - i ) that display live content to a user at-a-glance without the user having to open multiple applications and perform multiple drill downs through application content to find and present the content.
- the overview page 120 can include a footer toolbar (e.g., footer toolbar 132 as shown in FIG. 1F ).
- the footer toolbar can appear to float over the content displayed in the overview page 120 .
- an enterprise system can determine content displayed on an overview page (e.g., the overview page 120 ).
- a selection of one or more business domains and one or more roles of a user in the business or enterprise can determine content displayed on an overview page (e.g., the overview page 120 ).
- a user can make the selection using a settings UI included in a launchpad (e.g., the launchpad 101 ).
- a user can select one or more business domains and/or one or more roles of the user in the enterprise by way of an overview page (e.g., the overview page 120 ). Selecting one or more business domains and/or one or more roles of the user in the enterprise by way of the overview page can maintain absolute relevance to the individual user and the way in which the user works.
- the user can personalize the layout and placement of one or more cards (e.g., the cards 122 a - i ) included in a UI of an overview page (e.g., the overview page 120 ) and the display of content included in each card.
- the personalization can enhance the workplace productivity of the user.
- FIG. 1E is an illustration showing an example object page (object page 124 ) displayed in the shell main container 104 .
- An object page can be a floor-plan used to represent objects in a UI.
- An object page can be used to display, create, or edit an object.
- An object can represent a business entity (e.g., a customer, a sales order, a product, an account, etc.). Enterprise applications that reflect a specific scenario (e.g., a sales order, am account status) can be bundled using an object.
- the object page can include a header area 126 , a navigation area 128 , a content area 130 , and, in some implementations, a footer toolbar (e.g., footer toolbar 132 as shown in FIG. 1F ). In some implementations, the footer toolbar can appear to float over the content displayed in the object page 124 .
- a user can select the tile 114 f and an object page can be displayed to the user.
- FIG. 1F is an illustration showing an example a footer toolbar (e.g., footer toolbar 132 ).
- the footer toolbar 132 can appear at the bottom of a screen displayed in the shell main container 104 , the left container 102 , and/or the right container 106 .
- a footer toolbar e.g., the footer toolbar 132
- the launchpad 101 can be displayed at the bottom of the launchpad 101 , the overview page 120 , and the object page 124 .
- the footer toolbar (e.g., the footer toolbar 132 ) can continue to appear at the bottom of the screen of the display area of the display device even as the displayed screen is scrolled.
- the footer toolbar (e.g., the footer toolbar 132 ) can appear to hover over or float over the content being displayed on the screen.
- the footer toolbar 132 can include buttons or controls 134 a - k .
- the controls 134 a - k can be selected by a user in order to perform one or more actions that can affect content included on the page being displayed on the screen.
- the controls 134 a - k are examples of controls that can be included in a footer toolbar.
- the controls can be different, fewer than, or more than the controls 134 a - k .
- the type and number of controls included in a footer toolbar can be based on the type of page being displayed and/or the content being displayed in the page.
- FIG. 1G is an illustration showing an example me area (e.g., me area 136 ) that can be displayed in the left container 102 .
- the me area 136 can be displayed in the right container 106 .
- the me area 136 includes an upper section 138 and a lower section 140 .
- the upper section 138 includes a user icon 142 . Selecting (clicking on) the user icon 142 can provide a user profile.
- a dropdown indicator button 144 displays a status of the user and, if selected, a user can logout of an application.
- the upper section 138 includes navigation targets 146 a - e . Selection of (clicking on) a navigation target by a user triggers a corresponding functionality (e.g., an application) associated with a navigation target.
- the me area 136 can provide various generalized functionalities as they are related to a user.
- the upper section 138 can include sort selections 146 a - b .
- a user can select (click on) a sort selection (e.g., one of the sort selections 146 a - b ) to determine how the listing of the recent activities included in the lower section 140 will be sorted and displayed.
- the lower section 140 of the me area 136 includes a list of recent activities 148 a - c .
- the recent activities 148 a - c can include links 156 a - c , respectively, that when selected (clicked on) by a user can navigate the user to back to the shell main container 104 , opening an application (or function) that corresponds to the link in the shell main container 104 .
- Recent activity items can include, but are not limited to, enterprise applications, triggered searches, co-pilot collections, and co-pilot drafts.
- FIG. 1H is an illustration showing an example notification area (e.g., notification area 150 ) that can be displayed in the right container 106 .
- the notification area 150 can be displayed in the left container 102 .
- the notification area 150 includes notifications 152 a - c .
- a user interacting with the UI in the notification area 150 can take immediate action on a notification.
- a notification item e.g., notifications 152 a - c
- a notification indicator can be color coded to indicate a particular status of the notification.
- a user can reject a notification by selecting (clicking on) a reject selection (e.g., a reject selection 156 a - b ). For example, a user can reject the notification 152 a by selecting (clicking on) the reject selection 156 a .
- the rejection of the notification 152 a (the notification status) can be indicated by content included in (e.g., a color of) a notification indicator 154 a .
- a user can acknowledge a notification by selecting (clicking on) an acknowledge selection (e.g., a acknowledge selection 158 a - b ). For example, a user can acknowledge the notification 152 b by selecting (clicking on) the acknowledge selection 158 b .
- the acknowledgement of the notification 152 b (the notification status) can be indicated by content included in (e.g., a color of) a notification indicator 154 b.
- a user can drill down into a relevant application by selecting (clicking on) a more info selection (e.g., a more info selection 160 a - b ). In some cases, a user may contact someone directly in response to a notification.
- a more info selection e.g., a more info selection 160 a - b
- FIG. 1I is an illustration showing an example copilot UI (e.g., copilot UI 162 ).
- a copilot application can be launched from the launchpad 101 when a user selects (clicks on) the copilot launch icon 113 .
- the copilot application can provide (generate and display) the copilot UI 162 .
- the copilot UI 162 can float over the UI included in the launchpad 101 .
- the copilot UI 162 can be visually unobtrusive and flexible in its cross-functional omnipresent implementation across any device or application screen.
- the example copilot UI 162 is an example copilot start page or start screen.
- the start screen (the copilot UI 162 ) can be an entry point for copilot functionality for an enterprise system.
- the copilot UI 162 can provide shortcuts to different copilot features.
- a collection can be represented by an entry in a collection list 164 that includes collection list entries 164 a - d .
- a copilot collection can be a cluster of items in relation to a specific topic.
- an item can be a note, a screenshot, a chat message, a copilot message, an object, or a quick create.
- the items included in the collection can be homogeneous (e.g., all of the items are of the same type).
- the items included in a collection can be non-homogeneous (e.g., the items can be of different types).
- Each collection list entry 164 a - d can provide a representation of a collection that can include a title, a timestamp (e.g., last changed), a visual content summary, and a textual content preview.
- the collection list 164 can be searched and/or filtered.
- the selection of a copilot shortcut 166 a - d can allow a user to create and navigate to a new collection with a specified intention.
- the selection of a copilot create icon 168 located in a copilot footer toolbar 170 can create and navigate to a new plain collection.
- the selection of a copilot settings icon 172 located in the copilot footer toolbar 170 can allow a user access to copilot settings (e.g., display a copilot settings UI, open a copilot settings application, etc.).
- Copilot entries can be living, gradually growing artifacts and software entities that can accompany a user from the identification of an issue to a solution for the issue, while providing support in the form of relevant context and actions. Copilot entries can serve as memory aides while the copilot entries can incrementally evolve into valuable transactional tasks and collaborations as they mature in meaningful ways that bridge a gap between predefined application functionality and processes based on personal ways of working for a user. Though the example shown in FIG. 1I describes launching the copilot application from the launchpad 101 , referring to FIG. 1A , the copilot application can be launched from other screens displayed in (included in) the shell main container 104 , the left container 102 , and/or the right container 106 .
- Copilot entries can be made ready for users to use when communicating, collaborating, and creating actionable transactions in desktop or mobile scenarios. For example, copilot text entries can be analyzed for recognizing and identifying relevant text related objects. Copilot text entries can emphasize displayed text, and a copilot application can recommend contextual entities for use in a current task. The copilot application can understand user context and can intelligently propose selections, auto-entries, and user options.
- a smart template can provide a framework for generating user interfaces at runtime for an enterprise application. For example, a smart template can be used to generate the UI for the overview page 120 as shown in FIG. 1D . In another example, a smart template can be used to generate the UI for the object page 124 , as shown in FIG. 1E .
- a smart template can provide a framework for generating the user interfaces based on metadata annotations and predefined templates for the most used application patterns.
- the use of smart templates can ensure design consistency by providing centralized high quality code by using predefined templates and controllers.
- the use of smart templates can keep applications up to date with evolving design guidelines.
- the use of smart templates can reduce an amount of front-end code used in building enterprise applications.
- the term “smart” can refer to annotations that add semantics and structures to provided data.
- the term “smart” can also refer to the way in which the templates understand the semantics.
- FIG. 1J is an illustration of a timeline UI (e.g., the timeline 174 ).
- a timeline UI e.g., the timeline 174
- the entries can be events, objects, and/or posts listed and displayed in a chronological order.
- the timeline 174 includes nodes 178 a - d that correspond to respective timeline entries 176 a - d.
- the timeline 174 can be used for collaborative communications.
- the timeline 174 can be configured in multiple different ways depending on use case implementations.
- the timeline 174 can provide information about changes of an object or about events related to an object.
- the timeline 174 can provide information about generated entries (e.g., value XY changed from A to B) or about manual entries (e.g., comments from an individual).
- the latest entry is at the top of a list displayed by a timeline.
- the timeline 174 can be displayed along with a business object. In some cases, the timeline 174 can be displayed to the right of the business object.
- Two example versions of a timeline can include a basic timeline and a social timeline.
- a basic timeline can be a read-only timeline.
- a social timeline can allow for interaction and collaboration among users.
- FIG. 2 is a diagram of an example system 200 that can implement the user interfaces and user experiences described herein.
- the system 200 includes an enterprise computing system 202 , a network 204 , and client computing devices 206 a - e.
- computing device 206 a can be a mobile phone, a smartphone, a personal digital assistant, or other type of mobile computing device.
- the computing device 206 a includes a display device 220 .
- computing device 206 b can be a laptop or notebook computer.
- the computing device 206 b includes a display device 222 .
- computing device 206 c can be a tablet computer.
- the computing device 206 c includes a display device 224 .
- the computing device 206 d can be a wearable device such as a smartwatch.
- the computing device 206 d includes a display device 226 .
- the computing device 206 e can be a desktop computer.
- the computing device 206 e can include a display device 228 .
- a user of the computing devices 206 a - e can use/interface with the display devices 220 , 222 , 224 , 226 , and 228 , respectively, when interacting with the enterprise computing system 202 .
- the computing devices 206 a - e can display on the display devices 220 , 222 , 224 , 226 , and 228 any of the screens and UIs described herein.
- the enterprise computing system 202 can include one or more computing devices such as a web management server 214 , a frontend server 230 , a backend server 208 , and a mobile device management server 210 .
- the enterprise computing system 202 can also include a database management computing system 212 that includes a database management server 212 a and a database 212 b .
- each server (the web management server 214 , the frontend server 230 , the backend server 208 , the mobile device management server 210 , and the database management server 212 a ) can include one or more processors and one or more memory devices.
- Each server can run (execute) a server operating system.
- the client computing devices 206 a - d can communicate with the enterprise computing system 202 (and the enterprise computing system 202 can communicate with the client computing devices 206 a - d ) by way of the mobile device management server 210 .
- the mobile device management server 210 includes one or more mobile device platform application(s) 216 .
- the enterprise computing system 202 can deliver cross-platform, secure, and scalable applications to the computing devices 202 a - d , independent of the mobile computing device-type (e.g., laptop, notebook, smartwatch, mobile phone, PDA, etc.) and independent of the operating system running on the computing device 206 a - d .
- the mobile device management server 210 can then communicate with the web management server 214 .
- the client computing devices 206 a - e can communicate with the enterprise computing system 202 (and specifically with the web management server 214 ), and the enterprise computing system 202 (and specifically with the web management server 214 ) can communicate with each of the client computing devices 202 a - e ) using the network 204 .
- the web management server 214 includes a web dispatcher application 218 . In both the first implementations and the second implementations, the web dispatcher application 218 can act as a “software web switch” accepting or rejecting connections to the enterprise computing system 202 .
- the network 204 can be a public communications network (e.g., the Internet, cellular data network, dialup modems over a telephone network) or a private communications network (e.g., private LAN, leased lines).
- the computing devices 206 a - e can communicate with the network 204 using one or more high-speed wired and/or wireless communications protocols (e.g., 802.11 variations, WiFi, Bluetooth, Transmission Control Protocol/Internet Protocol (TCP/IP), Ethernet, IEEE 802.3, etc.).
- the frontend server 230 can include product specific UI Add-On Applications 232 and a UI infrastructure 234 .
- the UI infrastructure 234 can include a design portion and a runtime portion.
- the frontend server 230 can decouple a lifecycle of a UI (e.g., design and runtime deployment) from the backend server 208 .
- the decoupling can allow UI applications to interface with a plurality of different databases.
- the decoupling provides a single point of UI design, access, and maintenance allowing for theming, branding, configuring, and personalizing a UI without a need for development privileges to the backend server 208 (e.g., no need to have backend administrative rights).
- the decoupling can result in a more secure enterprise computing system.
- the decoupling can provide for rule-based dispatching of requests in a multi-system landscape (e.g., for approvals including aggregation).
- the frontend server 230 includes a gateway 236 .
- the gateway 236 can provide a way to connect devices, environments, and platforms to enterprise software based on market standards.
- the gateway 236 can enable the development of UIs for use in different environments (e.g., social and collaboration environments).
- the gateway 236 can enable the development of UIs for use on different types of client computing devices (e.g., client computing devices 206 a - e ).
- the gateway 236 can enable the development of UIs for use in internet-based applications.
- the backend server 208 can include a bundle (a set) of business applications (e.g., business suite 238).
- the business applications can be transactional applications.
- Transactional applications can allow task-based access to tasks that can include create and change.
- transactional applications can allow access to entire processes with guided navigation.
- Analytical applications can provide a user with a visual overview of complex tasks for monitoring and tracking purposes.
- Fact sheet applications and contextual navigation applications involve search and explore activities. Fact sheet applications and contextual navigation can allow a user to view essential information about an object and can allow contextual navigation between related objects.
- the database management computing system 212 includes a database management server 212 a that can run (execute) applications that can manage a database 212 b .
- the database 212 b can be an in-memory, column-oriented, relational database (e.g., SAP HANA®).
- the database management computing system 212 can include extended application services 240 that can embed a full featured application server, web server, and development environment within the database management computing system 212 .
- the extended application services 240 can include application content 242 and reuse content 244 for use by the enterprise computing system 202 when providing a personalized, responsive, and simple UX across different types of computing devices and deployment options.
- FIG. 3 is a diagram of an example system 300 that can implement the launchpad for the user interfaces and user experiences described herein.
- the launchpad acts as runtime shell environment for the apps described herein in which the personalized home page is one feature among many other services.
- the launchpad is based on a unified shell architecture.
- the guiding principle of the unified shell is to have a single, platform-independent, client-side runtime environment which can be hosted on different server platforms (e.g., SAP NetWeaver AS ABAP, SAP HANA XS, SAP HANA CloudPlatform).
- the framework described herein may support for modularizing comprehensive JavaScript applications. That means, instead of defining and loading one large bundle of JavaScript code, an application can be split into smaller parts which then can be loaded at runtime at the time when they are requested. These smaller individual files are called modules.
- a module is a JavaScript file that can be loaded and executed in a browser.
- the module may include a name, a description, a dependency, and a declaration location.
- the content bundled in a module is up to the developer, but typically the content has a common topic, such as forming a JavaScript class or namespace or the contained functions address a specific topic, for example client to server communication or mathematical functions.
- Modules have no predefined syntax or structure, but module developers can use the name, declaration, description, or dependency to identify such modules.
- the name identifies the module and is used with jQuery.sap.require to load the module.
- the module names by convention are a hierarchical sequence of dot-separated identifiers like sap.ui.core.Core.
- a developer can use all but the last identifier to group modules in a logical and/or organizational order, similar to packages in Java, and can use the last identifier to give the module a semantical name.
- Modules can declare themselves and their location of content by calling the static jQuery.sap.declare function with their name. This helps SAPUI5 to check at runtime whether a loaded module contains the expected content by comparing the required name against the declared name. As a side effect, jQuery.sap.declare ensures that the parent namespace of the module name exists in the current global namespace (window). For modules without declaration, the framework assumes that the module has the expected content and declares it with the name that was used for loading. In some cases a module declaration is mandatory.
- the description of a module is any JavaScript comment preceding the module's declaration statement and is intended to help to decide whether a module is useful for the intended purpose.
- the configuration UI displays the description next to the module name.
- Modules can use the jQuery.sap.require method to load other modules they depend on. While jQuery.sap.require internally has the effect of a loadModule call, it can also be regarded as a dependency declaration.
- the dependency declarations can be evaluated at runtime, but can also be analyzed at built time or at runtime on the server.
- the unified shell offers unified services with platform-independent interfaces (APIs) (e.g., services 301 ) to the hosted apps and shell components.
- APIs platform-independent interfaces
- the implementations of these services can utilize different service adapters for the respective platform to carry out platform-specific behavior.
- the unified shell can be enabled using a shell container 302 , shell services 304 , and a shell renderer 306 .
- the shell container may be independent of shell services 304 by utilizing the shell renderer 306 .
- Applications 308 may be embedded in an application container 310 . As this is an independent re-use component, the embedding aspect is decoupled from the renderer 306 .
- the application container 310 can, for example, host SAPUI5 components, Web Dynpro ABAP applications and SAP GUI for HTML transactions.
- the shell services 304 and renderers 306 are managed by the central shell container 302 .
- the shell container 302 utilizes a runtime configuration 312 , which defines the concrete implementations for services 314 , adapters 316 , and shell renderer 306 , as well as global settings like theme, language, system and user data.
- the runtime configuration 312 is fed by a number of settings, including, but not limited to static configuration settings in the hosting HTML page, dynamic configuration data read from the front-end server during startup, and/or dynamic settings passed as query parameters in the URL
- the JavaScript components shown in FIG. 300 are embedded into a single HTML page.
- the launchpad implementation of the SAP NetWeaver ABAP front-end server may contain a standard page called, for example, Fiorilaunchpad.html 318 , or other URL directed to one or more viewports 320 . Users may create custom start pages which utilize the shell with different static configurations.
- the web browser can use http data and OData to access application backend systems 322 and UI front-end server 324 (e.g., service implementations 326 and UI contact 328 ) via web dispatcher 330 .
- the system 300 differentiates between applications based on SAP GUI for HTML or Web Dynpro ABAP can be embedded using an iFrame (i.e., inline frame).
- the system 300 differentiates between applications based on SAPUI5. As these have been implemented using the same UI technology, these can be embedded directly into the Launchpad using DOM injection. This approach also allows smooth, animated UI transitions and the reuse of shared components at runtime. Therefore, applications have to be implemented as self-contained SAPUI5 components, as described below.
- users can embed SAPUI5 Applications into the launchpad using the application container 310 configured with the following parameters: the URL (root path) of the application and the name of the SAPUI5 component.
- the root path is a path where the component controller for the SAPUI5 app (e.g., the Component.js file) is located.
- the application container 310 registers the component namespace as module path for the application URL.
- the SAPUI5 component is defined with a file structure having a file named Component.js, which should be located in the root folder of the application being embedded.
- the definition of an SAPUI5 component includes the component metadata.
- the component metadata includes a config object containing additional information.
- the launchpad-specific configuration is defined in this config object.
- the launchpad evaluates the following properties of the component configuration:
- ResourceBundle Path to the resource bundle that holds the translated app title.
- TitleResource Key of the app title text in the resource bundle. The title is typically displayed in the browser tab.
- FavIcon Path to the “favicon” (*.ico) file for the app, which is typically displayed in the address bar or next to the window title or tab title.
- the properties with an @2 suffix enable referral to special icons for high-resolution devices.
- the launchpad uses URL hashes for its own navigation. Direct manipulation of the location hash would interfere with the launchpad navigation.
- For cross-app navigation use the Cross-Application Navigation service.
- For inner-app navigation use the SAPUI5 routing API. Ensure that all controls created by your component are destroyed when the component is destroyed. Avoid using sap.ui.localResources inside your Component.js file. sap.ui.localResources registers a path relative to the main page (Fiorilaunchpad.html).
- FIG. 4A is an example screenshot 400 of a scrollable screen area.
- the scrollable screen area may provide one or more viewports that a user can scroll through.
- the entire screen area may be a viewport that can be scrolled onto and off of a display screen.
- each region (e.g., container) within the screenshot 400 may be a viewport that can be scrolled between other viewports.
- the screenshot 400 includes a left container 402 , a shell main container 404 , a right container 406 , and a shell toolbar 408 .
- the shell toolbar 408 can be used to toggle between viewports.
- a screenshot 410 includes a representation 411 of the Shell Toolbar 408 .
- the representation 411 may be provided when the Shell Toolbar 408 is off the screen. For example, if the user chooses to view other viewports that do not include the toolbar 408 , then a representation 411 of the toolbar can be provided.
- the representation 411 includes a Toggle Me Area control 412 that can toggle between viewports (e.g., container 402 , container 404 , container 406 , and container 408 ).
- the representation 411 also includes a Back to launchpad control 414 to enable the user to return to their launchpad viewport.
- a Toggle Notifications control 416 is shown to enable the user to toggle the Notifications in and out of a view of the screen.
- a screenshot 420 depicts a number of Viewports 422 , 424 , and 428 viewable on a display screen of a computing device 428 .
- the Viewports 422 - 426 may be selected by a user to show additional data associated with each respective Viewport. For example, if a user selects an item on the launchpad viewport 424 , a scrollable overlay 430 can be presented in part within the screen of device 428 .
- the overlay 430 may be a single viewport that is scrollable by the user.
- a number of Viewports can be represented by overlay 430 . If the user selects a portion of the overlay, any Me area or notification area viewports may be hidden to display additional overlay data.
- a screenshot 500 includes a left container 502 , a main container 504 , and a right container 506 .
- the left container 502 may include a Me area while the right container 506 includes a notification area.
- More or fewer containers can be shown and any of the containers may be presented in any position on the screen in one or more viewports (or virtually off of the screen).
- the viewports described herein can support parallax side-to-side scrolling.
- the user when scrolling content, the user can shrink and fade content (e.g., as shown at arrow 508 ) from the main container 502 .
- the user can scale up content and move content to another container/viewport, as shown by arrow 512 in FIG. 5B . Users can also zoom into and out of a region on a container/viewport.
- FIG. 5C illustrates a screenshot 520 of an example animation that can occur when a user interacts with a portion of a viewport.
- a viewport e.g., an open viewport
- the profile image is faded from a user profile picture into a cancel icon 524 .
- the fade includes a gradual removal of the icon by scaling down (e.g., shrinking from larger to smaller) the profile image.
- the cancel icon 524 is faded into the profile icon.
- the fade in includes scaling the cancel icon 524 from smaller to larger.
- the left container is open and the Main container or Notification container is clicked, the same procedure can occur as in when closing the left Viewport/container.
- FIG. 5D illustrates a screenshot 530 that depicts a user moving content from a main container 504 .
- the user is moving a launchpad into left container 502 from main container 504 .
- an animation is generated by the systems described herein to scale down (e.g., shrink) the launchpad element as the element is dragged to the left between containers/viewports 504 and 502 .
- FIG. 5E illustrates a screenshot 540 that depicts a user moving content from a notification container 506 .
- the user is moving notifications from right container 506 into main container 504 .
- an animation is generated by the systems described herein to scale up (e.g., enlarge) the notification element as the element is dragged to the left between containers/viewports 506 and 504 .
- FIGS. 6A-6D illustrate screenshots of example user interfaces depicting notification aspects.
- a screenshot 600 depicts a laptop display 602 A in which a notification 604 A is being provided.
- the notification 604 A can be provided in a sliding right to left motion into the display 602 A.
- the notification can be provided from viewports outside of the display 602 A and into a main viewable content area.
- the notification 602 B (or the same notification 602 A) can slide left to right (or right to left) outward away from the viewable area on display 602 B.
- the notification 602 A may be provided as an alert and upon a threshold amount of time, the notification 602 A (or 602 B) can slide out of the display and into a notification container in a right viewport (e.g., viewport 506 ), for example.
- a right viewport e.g., viewport 506
- a screenshot 610 depicts a notification 612 indicating a number of different icons/links/actionable content that can be selected to carry out an action.
- a first action area 614 in which a user can look into additional information in the notification, decline the notification, or acknowledge the notification. Looking into additional information may function to expand the notification, decline may remove the notification from view and in some examples, may delete the notification from a notification listing, trigger email receipts, or decline notices, etc. Acknowledging the notification may trigger email receipts, or additional notifications to other users.
- acknowledging a notification may place the notification onto an additional list of items to carry out with respect to the notification.
- a notification can provide one or more links and/or icons to enable a user to navigate 616 from the notification to an application, website, or other area pertaining to details in the notification.
- a screenshot 620 depicts a notification 622 provided to a user in a viewport.
- the notification includes buttons in the notification that the user can select.
- the buttons include transparent icons with textual description below each button.
- a screenshot 630 depicts three notifications 632 , 634 , and 636 .
- Each notification indicates a status using color.
- the first notification 632 includes a red status indicating an urgent status.
- the second notification 634 includes a green status indicating a status with a non-urgent date.
- the third notification 636 includes a white status indicating a non-urgent and non-date specific status.
- FIG. 7 is an example data model 700 for a notification architecture.
- the data model 700 includes an origin system block 702 , a notification block 704 , a sensitive content block 706 , a notification type 708 , a recipient block 710 , a consumption channel block 712 , a configuration block 714 , a template block 716 , and an action block 718 .
- the origin system block 702 defines where a particular notification originates. Existing messaging/notification frameworks can be used to store this information. The origin system is also responsible for deciding which notification is sent to which user and which recipient list.
- the notification block 704 is the central data entity containing the content from the backend and all administrative data. It is identified by a compound key of ID, Notification Type, and Origin System.
- the sensitive content block 706 is stored separately, so that it can be managed separately for security and data-privacy reasons. In order to ease the processing (e.g., in case of asynchronous queues), the notification may have a processing status (e.g., created, delivered, erroneous, etc.).
- the notification type 708 identifies the type of the notification (e.g., Purchase Order Approval, Leave Request . . . ). It may be used to identify the notification and also to manage the delivery configuration on a type specific level. It also defines the behavior of sensitive content cache with respect to security and data privacy (different types can behave differently).
- the templates and the mass texts for stacked notifications are notification type specific as well.
- the recipient block 710 indicates one or more users in which the notification should be delivered to.
- a notification can have multiple recipients. The recipients are typically identified throughout all systems in order to deliver the notification to the correct user. The recipients are determined by the notification provider.
- the consumption channel block 712 defines the technical way (email, native mobile push, Fiori launchpad, etc.) in which a notification is delivered to a recipient.
- a recipient can have multiple consumption channels assigned, to specify how the notification is delivered.
- the detailed delivery information is part of the configuration.
- the configuration block 714 specifies the details about the notification delivery for a specific delivery channel and a specific user (e.g., display as banner or notification, do not disturb times, etc.).
- the template block 716 specifies templates detailing the way a notification is compiled to a human readable message format.
- the template is originated from the system that also generates the notification.
- the template can be replicated during the configuration of the source system or later on by an administrator. Templates are specific to a notification type and a consumption channel.
- the action block 718 specifies actions that represent a one click action, which can be performed on the notification without further user interaction involved (e.g. approve/reject). An action is channeled to the backend system for execution without further processing on the notification service.
- an origin system 702 is defined and a notification 704 is generated.
- the notification includes a notification type 708 and may also include actions 718 , sensitive content 706 , and configuration details 714 .
- the notification type 708 can be dictated by a template 716 that is also available to the origin system 702 .
- the notification may include one or more recipients 710 and each recipient may be associated with a consumption channel 712 .
- FIG. 8 is an example block diagram 800 depicting an integration of notification services.
- a frontend server 802 retrieves and displays notifications to a user via backend server 804 using a notification API 806 , for example.
- a launchpad notification center 808 , a native mobile notification center 810 , and an email client 812 may be integrated to utilize notification services provided by server 802 .
- Such access can be provided by a reverse proxy 814 , an SMP HCP block 816 (e.g., via push hub 818 ), and/or email gateway 820 , respectively for 808 , 810 , and 812 .
- the frontend server 802 includes a notification service 822 .
- the notification service 822 may be accessible as a central service to all notification providers and consumers. It may also be integrated seamlessly into the Fiori infrastructure (e.g., FIGS. 1-3 ). Therefore, the notification service 822 may be deployed to either the on premise Fiori Frontend Server 802 or/and as a central service on the HCP 816 .
- the notification service 822 may serve as a central aggregation point as well as a runtime and configuration place.
- the notification service 822 includes one or more notification processors 824 , inbound adapters 826 , notification APIs 806 , callback adapters 828 , outbound adapters 830 , notification stores 832 , templates in a template cache 834 , sensitive content cache 836 , cache configurations 838 , and configurations 840 .
- the notification processor 824 is one component responsible for processing and sending notifications to the configured consumers including the template handling and processing.
- the notification processor 824 includes a cache handler 842 to cache notifications and a template engine 844 to generate notifications using particular templates.
- the notification processor 824 can read ( 836 ) sensitive data from the notification provider when needed and handling the caching ( 838 ) of sensitive data handling the consumption lifecycle (e.g., read, snoozed, etc.), handling the action processing (e.g., approved, rejected, etc.) towards the notification provider, and handling the configuration.
- Inbound adapters 826 may be configured to receive the push notifications from the notification providers and storing them in the notification store. There is typically one adapter per technical communication channel (e.g., RFC, OData). The channel specific data format is transformed into the internal storage format. Depending on the backend system type, there might also be a generic component.
- RFC technical communication channel
- OData technical communication channel
- Notification APIs 806 may be implemented on the system 800 , which provides convenient functions for the notification provisioning developer. This component may not perform any implicit commits in order to not mess with the commit logic of the caller. The Notification API is also responsible for queuing the calls towards the notification service.
- Callback adapters 828 may provide backend type specific implementations to synchronously trigger the notification related functionality in the backend (e.g., triggering actions, reading un-cached sensitive data, reading templates, etc.).
- the Inbound and Callback adapter are a logical couple for communicating with the backend systems.
- Outbound adapters 830 may be responsible for transferring the push notification to the consumption channels. There may be one adapter per technical channel (e.g., mobile, email). The adapter implementation can enrich the internal notification service data with additional channel specific data (e.g., form-factor configurations from the frontend server 802 in the mobile scenario).
- technical channel e.g., mobile, email
- additional channel specific data e.g., form-factor configurations from the frontend server 802 in the mobile scenario.
- Notification stores 832 store notifications that were received from the notification providers.
- the store 832 also contains lifecycle information (e.g., read, snoozed, etc.). It contains the notification content, which can safely be sent to non-secure communication channels like email or mobile push channels.
- Templates may include text templates for generating the notification message. Templates may be stored in a template cache 834 . Together with the notification data from the backend, the template engine may generate the messages for the different consumption channels.
- the templates i.e., the way, the text is generated
- the relevant templates are replicated from the backend and cached in the template cache. The update can be triggered manually at a later time.
- the notification service may also implement a template editor (e.g., for backend systems, where no access is available). In this case, the Template Cache is not solely a cache but a primary persistence. An administrator may invalidate the cache.
- Sensitive content cache 836 stores information that is related to the notification store content.
- the sensitive content is decoupled from the non-sensitive content in order for the customer to be able to handle it differently (e.g., switching off caching for certain notification types or the lifetime of cached information).
- the content of the cache can be encrypted according to SEC97/106.
- the notification provider is responsible for classifying which parts of the notification have to be treated as sensitive and non-sensitive content.
- Cache configurations 838 , and configurations 840 contain all relevant configurations for the notification service.
- the developer implements an interface from the Notification API 806 in order to process the actions and deliver the notification types and sensitive texts.
- the developer may also register the implementation in the Notification API 806 for the specific provider and call a provided functionality from the Notification API 806 .
- the notification provider also may deliver the intent for the intent based navigation on the consumption channel. Configurations done by an administrator may function to configure the landscape and the infrastructure including, but not limited to communication channels to/from the notification provider, service end point (notification service and Notification API), authentication, and protocol (e.g., inbound adapter 826 /callback adapter 828 ).
- the notification service may provide functions and features to allow administrators and the IT responsible to reliably operate the system. This includes (but is not limited to) for example monitoring for delivered and stuck notifications, logging and tracing, manual deletion of notifications, resending of notifications, and/or invalidating cache.
- FIG. 9 is an example swim lane diagram 900 depicting provision of messages using a notification service described herein.
- the architecture 800 may carry out swim lane diagram 900 .
- the components may include, but are not limited to, the launchpad 808 , the mail/mobile 810 / 812 , the notification service 822 , the backend 804 and notification processor 824 .
- a new notification is created by a notification provider, processed and sent 902 to various consumption channels (from the backend server 804 ).
- the notification is received 904 by the inbound adapter (e.g., notification service 822 ) belonging to the technical communication channel, then parsed by the adapter and provided to the notification processor 824 .
- the inbound adapter e.g., notification service 822
- the notification processor further processes 906 the notification.
- the non-sensitive content and the administrative data are stored in the notification store.
- the sensitive content is stored in the sensitive content cache (via the cache handler).
- the template engine also processes the notification to create a non-sensitive version to be sent 908 to the non-secure channels (e.g., email or mobile).
- the FLP is notified 910 about new notifications. This enables the FLP 808 to update the notification list, by calling back to the notification service for a notification delta. Since the FLP 808 is a secured channel, this information can contain sensitive content. Again, the template engine is used to create the notification content. In case there is no sensitive content cached on the notification service, the cache handler calls 912 the backend (via the callback adapter) to get the sensitive content.
- FLP Fiori Launchpad
- FIG. 10 is an example swim lane diagram depicting action processing 1000 on notifications.
- actions for processing 1002 the notification can directly be exposed in the notification center. Even though the diagram only shows the FLP as a trigger, it could be a mobile or email client as well.
- the processing trigger is received by the Notification Processor.
- the processor delegates the call to the backend system via to the callback adapter.
- a (delete-) delta will be pushed 1006 to the notification service if processing the action results in the notification not being relevant any longer.
- a Delete on Action Flag may be introduced in the notification protocol. With that flag, the notification provider could inform 1008 the notification service, that the message can be deleted directly after the action was triggered.
- the customer may be separated from the non-sensitive content and the administration data.
- the separate handling of the sensitive data in a sensitive content cache it is possible to provide notification type specific control over the caching.
- the lifecycle of a notification is primarily controlled by the notification provider. That means for example, if a workflow item is deleted or unassigned, the notification provider has to send a subsequent delta notification to the notification service.
- incompatible changes may include for example, adding parameters to the notification text. In this case already delivered notifications do not have enough information stored on the notification service to completely assemble the notification text.
- Compatible changes may include, for example, correcting typos in the template text.
- the template engine typically uses a template which harmonizes with the runtime information of a notification (i.e., number and type of parameters). Therefore, rather than just overwriting a notification type on the notification service, a new version may be created in case of incompatible changes. Thus, the old notifications can use proprietary templates and new notifications may be mapped to the latest version.
- An invalidation will be triggered by an administrator via a report. That report typically supports (i.e., automatically determines), weather an incompatible or compatible change applies. This could be checked by calling back to the backend system and compare the notification type with the active one cached on the notification service based on a set of predefined rules.
- the end user may have additional capabilities to control the presentation and the handling of a notification in the FLP. Even though, these operations could be perceived as lifecycle operations, the changes are not driven by business logic or actions (e.g., approve, reject).
- the effect of operations is handled between the consumer and the notification service (e.g., snooze, stack, mark read, etc.).
- the status is kept on the notification level in the notification service.
- the availability of operations can depend on the notification type or can be specified by the notification provider via attributes in the contract.
- Stacking enables the user to perform mass actions on certain notification types. It may be identified by the backend if a notification type is stackable or not. If yes, the backend has to deliver the “stacked headline text” (e.g., “ ⁇ x ⁇ new Leave Request to approve”) and the mass action texts (e.g., “Approve all”) in addition to the standard action texts (e.g., “Approve”).
- “stacked headline text” e.g., “ ⁇ x ⁇ new Leave Request to approve”
- the mass action texts e.g., “Approve all”
- the stacking itself i.e., interaction, triggering of actions
- the notification service does not provide stacking specific operations. That means for example, that the mass actions will result in single batched action calls for each notification item, rather than executing a “special” stack wrapper on the notification service.
- the notification service hast to make sure, though, that enough meta information is delivered, so that the frontend can handle the stacking properly.
- the end user may have the possibility to navigate to an appropriate Fiori application when clicking/tapping a notification.
- the navigation will be based on the intent based navigation concept, which will be used cross channel.
- the status of a notification should be synchronized across all consumption channels of a user. If a user, for example, removes a notification from his list on the mobile device, this should be reflected in the notification center on the FLP.
- the infrastructure described herein supports badges on the native mobile app as well as within the Fiori Launchpad 808 to inform the user about new notifications.
- the UX design also distinguishes between read/unread notifications on the one hand side and new notifications on the other hand.
- the read state of a notification as kept with a notification instance and is set to true, if one of the following events occur the user performed an action on a notification, the user clicked the notification and triggered an intent based navigation, or the user performed a “Mark all as read” action if supported by the respective notification center (e.g. in Launchpad or native mobile).
- the new state is the basis for the badge counting. It is not tracked with a notification instance, since the user is only interested in the number of new notifications (which he has not viewed yet).
- the notification service keeps a separate new-counter per user instead. This counter is incremented by one, as soon as a new notification for the user arrives and is set to zero (all viewed), as soon as the notification center in the Launchpad is opened. This number is shown as a badge on the notification center icon in FLP as well as a badge on the native mobile application.
- FIG. 11 is an example swim lane diagram depicting a process 1100 for incrementing a badge counter.
- the following sequence describes the high level logic of incrementing the badge counter.
- the new-counter for every recipient is incremented by one.
- the notification is pushed to a mobile device, the current new-counter is delivered 1106 per user to the mobile infrastructure 1104 . This can be used to show the badge number on the native mobile app.
- the online clients like FLP
- particular rules can be established for notifications.
- An example rule may define when a counter is set to zero. For example, a counter may be set to zero when
- the counter is set to zero when a user clicks on notification icon to access Notification Center, when a User is in the notification Center, new notification arrives, navigating back to FLP or clicking Notification Icon, when a User is inside an app, High Priority Banner is shown, User clicks banner, counter is set to zero or minus one, when a User is on a mobile device, native notification is shown, tap on native notification will set counter to zero or minus one.
- Another example rule may define when a notification is displayed and viewed.
- a notification may be considered viewed when a user clicks on notification icon to access Notification Center, when the User is in the notification Center, new notification arrives, when the User is inside an app, High Priority Banner is shown, User clicks banner, when the user is on a mobile device, native notification is shown, tap on native notification to navigate will set this item as viewed.
- Another example rule may define when a notification is read when the user clicks on notification to navigate to app and/or when the user clicks High Priority Banner, and/or when a user clicks native banner/alert, etc.
- FIG. 12 is an example swim lane diagram depicting a process 1200 for resetting a badge counter.
- Resetting the badge counter can include a resetCounter function being called 1202 on by the notification service, after the user opens 1204 the notification center (either on mobile or desktop). This may reset the new counter for the user triggering the request.
- the information to delete the badge on the native app is sent 1206 to the mobile device as well.
- a notification, that the new counter changed, is pushed 1208 to all online clients (like FLP, via a WebSocket based push). This triggers re-reading of the news counter from the notification service via a get request 1210 .
- the reset of the badge is synced to all online clients.
- the end-to-end notification experience may leverage the native notification infrastructure (e.g. APNS on iOS).
- the notification service uses SAP's mobile platform (on premise or in the cloud).
- the HCPms Push Hub will be used (see [HCPmsPushHub]).
- the SMP itself provides a solution for dealing with APNS and custom-certificates in the future.
- the SMP may be enabled to deliver a notification identified by the user name and intend based navigation target to the end user.
- the notification may be delivered, if the target application is installed on the user's device.
- a notification delivered to a mobile device is technically bound to a native mobile app on that device.
- the mobile push channel is considered as not secure. Therefore, the push notification can only contain non-sensitive content. Therefore the notification can actively pull the sensitive content from the notification service as soon as the user accesses the notification in the native notification center if the platform supports it.
- the integration of the backend with the notification service, as well as the integration of the frontend with the notification service should happen on the data level through services. That means, the notification provider does not provide any sort of UI snippets to be plugged into the notification center (FLP or native mobile). If further user interactions with the notification are requested, the user can navigate from the notification center to the registered Fiori app.
- the notification center FLP or native mobile
- the Provider Interface covers the communication between a notification provider and the notification service in both directions: On the one hand side it allows the notification provider to push new notifications to the notification service. This can ensure that the notification can call back to the notification provider to get cross-notification-instance specific content (e.g. notification type specific templates, mass texts for stacked notifications) and to trigger the execution of actions (e.g. approve, reject).
- cross-notification-instance specific content e.g. notification type specific templates, mass texts for stacked notifications
- actions e.g. approve, reject
- the interface towards the consumer may provide pre-aggregated and processed notifications (e.g., language dependent, based on consumption channel specific templates).
- the interface may also contain links to operations and actions for the consumer to call back upon user interaction and should be prepared to support Web Socket based updates.
- the consumer API may be consumed by the Fiori Launchpad, by mobile apps, and in the future potentially by non Fiori apps, email plugins, or by consumers provided by customers and partners. Therefore OData may be used as the protocol for the provisioning.
- FIG. 13 is an example of a notification list view 1300 .
- the notification list view 1300 can be arranged and/or organized by date 1302 , by notification type 1304 , or by priority 1306 .
- the by date 1302 option is selected.
- Each notification 1308 , 1310 , 1312 , 1314 in the list 1300 are organized in date order.
- Each notification pertains to a different application available and provided within a computing device.
- a list of notifications is associated with a user (or a user role).
- a travel request notification is awaiting approval by the user associated with the notification 1308 .
- the user can select approve 1316 or decline 1318 .
- Other actions are possible. For example, an action to forward to another user may be provided. An action to make a change request to the timing of the travel request may also be provided.
- Items can be added to the list 1300 based on internal events within apps or systems.
- the list can display various types of notifications, which can all differ in terms of appearance, content, and functionality.
- the list is ordered by a timestamp (e.g., most recent notification first).
- the time stamp for a notification group may be based on the most recent notification within the group.
- the notifications can include a priority indicator, a tap/click option to navigate to a particular relevant app or source associated with the notification, a read/unread status, an actionable notification item (e.g., perform tasks directly from the notification), scrolling, subscription based notification alerts (e.g., to KPIs or following a business object).
- a priority indicator e.g., a tap/click option to navigate to a particular relevant app or source associated with the notification
- a read/unread status e.g., an actionable notification item (e.g., perform tasks directly from the notification), scrolling, subscription based notification alerts (e.g., to KPIs or following a business object).
- the notification list 1300 can be displayed and arranged by type 1304 .
- items in the list may appear as grouped notifications. Bulk actions can be hidden by an administrator for critical approvals.
- all items may be collapsed.
- the priority indicator may be presented at the notification group level. The highest priority of a single item defines group priority. In some implementations, a single item can appear as well when only one notification is in the list.
- a priority 1306 sorting may be selected.
- the priority sorting may sort by reverse chronological order of when the message is received.
- Notifications may include attributes including, but not limited to title, description image/icon, author/source, timestamp, object status/priority, read/unread, action, operation, trigger to expand/contract/truncate notification.
- FIG. 14 is an illustration of an example process 1400 for generating and displaying notifications, such as notification 1300 , for example.
- the notifications may be generated and displayed within any number of applications.
- the process 1400 may include detecting, with a processor, an availability of at least one notification available for display in the user interface.
- the process 1400 may include generating, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action.
- the process 1400 may include generating, with the processor and for the container, additional selectable actions and appending the additional selectable actions to the at least one selectable action.
- the additional selectable actions may be generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface.
- Example actions may include accept, reject, move, archive, respond, mark as low or high importance, elevate or de-elevate status, update document, etc.
- the process 1400 may include determining, with the processor, which display device type of a plurality of display device types in which the user interface is being accessed.
- a tablet, a laptop, a mobile phone, a desktop or other computing device may be configured to display particular applications and notifications according to the display size, type, and/or display features.
- the process 1400 may include generating, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions.
- the container may be arranged for display according to the determined display device type.
- the process 1400 also includes displaying, in the user interface in a display location, the container, the display location determined based on the determined display device and a role associated with the at least one user. For example, particular containers holding notifications may be displayed in one area of a device based on device size and based on the user role being associated with performing particular actions associated with similar notifications.
- the process 1400 also includes the display location being predefined for the context determined to be associated with the at least one notification.
- the process 1400 also includes in response to detecting one or more additional notifications, generating a container for each of the one or more additional notifications, and generating, for display in the user interface, the container for each of the one or more additional notifications.
- Each container may depict a plurality of selectable action.
- Each container may be arranged for display according a determined display device providing the user interface.
- the process 1400 also includes the one or more additional notifications being provided from a plurality of source applications associated with at least one user accessing the user interface.
- the additional selectable actions may provide access to a plurality applications hosted outside of the user interface.
- the process 1400 also includes merging each notification received in the user interface into a list, displaying the list in a viewport and generating a plurality of actions that enable at least one bulk operation for the notifications in the list. In some implementations, the process 1400 also includes having the additional actions implemented upon selection within a respective notification.
- the process 1400 also includes having each display device type be associated with a different set of notification rules.
- the display device type may include a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device.
- the various systems and techniques described herein may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them.
- the various techniques may implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine readable non-transitory storage device, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers.
- a computer program such as the computer program(s) described above, can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.
- a computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
- processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
- a processor will receive instructions and data from a read only memory or a random access memory or both.
- Elements of a computer may include at least one processor for executing instructions and one or more memory devices for storing instructions and data.
- a computer also may include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magnetooptical disks, or optical disks.
- Information carriers suitable for embodying computer program instructions and data include all forms of nonvolatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magnetooptical disks; and CDROM and DVD-ROM disks.
- semiconductor memory devices e.g., EPROM, EEPROM, and flash memory devices
- magnetic disks e.g., internal hard disks or removable disks
- magnetooptical disks e.g., CDROM and DVD-ROM disks.
- the processor and the memory may be supplemented by, or incorporated in special purpose logic circuitry.
- Implementations may be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation, or any combination of such backend, middleware, or frontend components.
- Components may be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
- LAN local area network
- WAN wide area network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
In one general aspect, a method and system are described for generating notifications in a user interface. The method may include detecting an availability of at least one notification available for display in the user interface, generating a container for the at least one notification, generating, for the container, additional selectable actions and appending the additional selectable actions to the at least one selectable action, determining which display device type of a plurality of display device types in which the user interface is being accessed, and generating, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions, the container being arranged for display according to the display device type.
Description
- This application claims priority to and the benefit of U.S. Provisional Application No. 62/335,888, filed May 13, 2016, U.S. Provisional Application No. 62/335,892, filed May 13, 2016, U.S. Provisional Application No. 62/335,895, filed May 13, 2016, U.S. Provisional Application No. 62/335,897, filed May 13, 2016, U.S. Provisional Application No. 62/335,899, filed May 13, 2016, U.S. Provisional Application No. 62/335,873, filed May 13, 2016, U.S. Provisional Application No. 62/335,875, filed May 13, 2016, U.S. Provisional Application No. 62/335,879, filed May 13, 2016, U.S. Provisional Application No. 62/335,883, filed May 13, 2016, U.S. Provisional Application No. 62/335,886, filed May 13, 2016, and U.S. Provisional Application No. 62/335,887, filed May 13, 2016, each of which provisional application is incorporated by reference in its entirety.
- This description generally relates to user interfaces and user experiences. The description, in particular, relates to systems and techniques for providing a user experience for accessing and viewing data and information related to multiple software applications on a computing device.
- Users may utilize or interact with multiple software applications at the same time. The multiple applications may be hosted on the same or different types of computer platforms or systems and accessed from the users' client devices. In example implementations, the different types of computer platforms or systems may include, for example, SAP HANA, SAP ABAP, or other enterprise-type computer platforms or systems.
- In example implementations, the suite of the multiple applications which an enterprise may deploy (and which users may need to use for their work) may be large. A sample of the large number of applications that may be deployed by an enterprise for its operations may, for example, include applications in the areas or domains of Finance, R&D, Engineering, Human Resources, Manufacturing, etc. Different subsets of these applications may be used in the work of enterprise personnel, who, for example, may have a variety of different roles. Each user may have a need to use a different respective subset of the multiple applications, based, for example, on the user's role in the enterprise.
- Consideration is now given to a notification service for generating and providing a display of content and notifications in an expandable user interface.
- A system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions. One general aspect includes a computer-implemented method for generating notifications in a user interface. The method may include detecting, with a processor, an availability of at least one notification available for display in the user interface, generating, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action, generating, with the processor and for the container, additional selectable actions and appending the additional selectable actions to the at least one selectable action, the additional selectable actions being generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface, determining, with the processor, a display device type in which the user interface is being accessed, and generating, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions. The container may be arranged for display according to the display device type. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
- Implementations may include one or more of the following features. The computer-implemented method further including, displaying, in the user interface in a display location, the container, the display location determined based on the display device and a role associated with the at least one user. The computer-implemented method where the display location is predefined for the context determined to be associated with the at least one notification. The computer-implemented method further including in response to detecting one or more additional notifications, generating a container for each of the one or more additional notifications, and generating, for display in the user interface, the container for each of the one or more additional notifications, each container depicting a plurality of selectable action where each container is arranged for display according a display device providing the user interface. The computer-implemented method where the one or more additional notifications are provided from a plurality of source applications associated with at least one user accessing the user interface, the additional selectable actions providing access to a plurality applications hosted outside of the user interface. The computer-implemented method further including: merging each notification received in the user interface into a list, displaying the list in a viewport, and generating a plurality of actions that enable at least one bulk operation for the notifications in the list. The computer-implemented method where the additional actions are implemented upon selection within a respective notification. The computer-implemented method where each display device type is associated with a different set of notification rules, the display device type including a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device. Implementations of the described techniques may include hardware, a method or process, or computer software on a computer-accessible medium.
- In another general aspect, a system for generating a user interface is described. The system may include a shell container, executing in a web browser and providing a plurality of services for generating notifications in a user interface, an application container, executing in the web browser, the application container and at least one processor to programmed to, obtain at least one notification, provide, for display in a display device, the user interface depicting the at least one notification, detect, with a processor, an availability of at least one notification available for display in the user interface, generate, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action, generate, with the processor and for the container, additional selectable actions and append the additional selectable actions to the at least one selectable action. The additional selectable actions may be generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface. The system may also determine, with the processor, a display device type in which the user interface is being accessed, and generate, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions, the container being arranged for display according to the display device type.
- Implementations may include one or more of the following features. The system where the at least one processor is further programmed to display, in the user interface in a display location, the container, the display location determined based on the display device and a role associated with the at least one user. The system where the at least one processor is further programmed to in response to detecting one or more additional notifications, generating a container for each of the one or more additional notifications, generating, for display in the user interface, the container for each of the one or more additional notifications, each container depicting a plurality of selectable action, wherein each container is arranged for display according a display device providing the user interface.
- The system where the at least one processor is further programmed to merge each notification received in the user interface into a list, displaying the list in a viewport and generating a plurality of actions that enable at least one bulk operation for the notifications in the list. The system where the additional actions are implemented upon selection within a respective notification. The system where each display device type is associated with a different set of notification rules, the display device type including a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device.
- Implementations of the described techniques may include hardware, a method or process, or computer software on a computer-accessible medium.
- The details of one or more implementations are set forth in the accompanying drawings and the description below. Further features of the disclosed subject matter, its nature and various advantages will be more apparent from the accompanying drawings, the following detailed description, and the appended claims.
-
FIG. 1A is a screen shot of an example personalized user interface (UI) display, in accordance with the principles of the present disclosure. -
FIG. 1B is an illustration showing an example login screen displayed in a shell main container. -
FIG. 1C is an illustration showing an example launchpad displayed in a shell main container. -
FIG. 1D is an illustration showing an example active application screen (an overview page) displayed in a shell main container. -
FIG. 1E is an illustration showing an example object page displayed in a shell main container. -
FIG. 1F is an illustration showing an example footer toolbar. -
FIG. 1G is an illustration showing an example me area that can be displayed in a left container. -
FIG. 1H is an illustration showing an example notification area that can be displayed in a right container. -
FIG. 1I is an illustration showing an example copilot user interface. -
FIG. 1J is an illustration of a timeline user interface that can display timeline entries. -
FIG. 2 is a diagram of an example system that can implement the user interfaces and user experiences described herein. -
FIG. 3 is a diagram of an example system that can implement the launchpad for the user interfaces and user experiences described herein. -
FIGS. 4A-4C illustrate screenshots depicting examples of the viewport. -
FIGS. 5A-5E illustrate screenshots of example user interfaces depicting viewports. -
FIGS. 6A-6D illustrate screenshots of example user interfaces depicting notification aspects. -
FIG. 7 is an example data model for a notification architecture. -
FIG. 8 is an example block diagram depicting an integration of notification services. -
FIG. 9 is an example swim lane diagram depicting provision of messages using a notification service described herein. -
FIG. 10 is an example swim lane diagram depicting action processing on notifications. -
FIG. 11 is an example swim lane diagram depicting a process for incrementing a badge counter -
FIG. 12 is an example swim lane diagram depicting a process for resetting a badge counter. -
FIG. 13 is an example of a notification list. -
FIG. 14 is an illustration of an example process for generating and displaying notifications. - Like reference symbols in the various drawings indicate like elements.
- The present disclosure relates to graphical user interfaces of software applications that display content, referred to herein as the “main content,” together with notifications, functions, and other information besides the main content, i.e., supplemental content. Such applications may include, among other things, standalone software programs with a built-in display module that generates notifications to be depicted in a graphical user interface (e.g., a viewport), as described in the example embodiments herein. Alternatively, display of notifications may be provided as separate functionality, e.g., as an add-on package, a plug-in or through a separate program that communicates with a main content providing program via an Application Program Interface (API). The main content providing program and/or the display program may be executed locally on a user device and/or remotely, as a Web application, for example.
- Example embodiments are described in which a number of notifications are generated, configured, and sent to reach an end-user in any number of devices. For example, such notifications may be received as mobile notifications on mobile devices. The notifications provided herein can be integrated into the native notification infrastructure of a respective mobile platform (e.g. notification center in iOS, badge support, etc.). For example, an end-user can be navigated directly to a particular Fiori application from the notification. The application may contain further information to process the notification (i.e., also referred to as “deep linking”). If supported by the native mobile infrastructure exposing actions directly within the native notification center may execute (e.g. in iOS 8).
- In another example, notifications may be provided by means of email. Email support can be integrated into each application. Integrations may not be necessarily replaced with a new mandatory infrastructure but should be integrated. In yet another example, exposure of notifications on an end-user's desktop may be provided via a launchpad configured to launch a plurality of applications on a client computing device. Additionally, native desktop notification centers can be leveraged if supported by a particular operating system (e.g. in OSX or WINDOWS 10).
- The systems and methods described herein can function together to integrate a notification center. The user can access the notification center from everywhere within SAP Fiori, for example, on any device. The notifications can be extended by the notification center to include actions and operations. This provides the user an advantage of being able to perform key actions (such as approvals) directly from the notification, without having to open a separate application.
- In some implementations, the systems and methods described herein can merge and display new and existing notifications in one list. Users can see the read/unread status and order and filter the list based on their preconfigured requirements. Display of such notifications can include banners, badges, and sounds to inform users when new notifications come in. Notifications of the same type may be grouped together. For faster interaction, users can perform bulk operations on all the notifications in a stack
- In some implementations, settings can be provided to access notifications for all of a user's apps in one location. Here, the user can activate notifications, choose the delivery channel, or set the notification priority—all at a glance. The systems can provide an If This Then That dialog for setting up subscription based notifications. This enables users to receive notifications on specific KPIs or business object values that are not offered in a settings dialog. For easier handling, the system automatically helps the user to set up the notification by prefilling the dialog with content, conditions and triggers from the current screen.
- In general, notifications can originate from a variety of providers, out of different systems, both Cloud and on premise and out of different technology stacks. Therefore, notifications are generally integrated in a standardized way using a central notification service for notification aggregating. When defining the corresponding contracts and APIs, open standards may be used to allow third party solutions to integrate their notifications into the harmonized Fiori user experience. From the end-user perspective notifications shall always be perceived as being pushed to the user. This may also occur when utilizing Fiori Launchpad (i.e., there is not a refresh button to manually pull new notifications). Native mobile push notifications and email can also be used to handle notifications.
- In some implementations, notifications are provided in particular display areas in a viewport based upon a context or user setting or user role. For example, different styles and display areas may be provided to help users to understand a context of a notification provided in a viewport before reading the notification. To do so, an indication of the context may be location. For example, approval request notifications may be set to appear at a left center portion of a viewport in all open applications for a user. When such a notification arrives in the left center portion of the viewport, the user understands that she can ignore the notification until it is convenient to read and take action on the notification.
- In one example, there are two types of notification providers (a) providers that are enabled to proactively push new notifications (b) providers that support reading notifications through an API, but that do not include a push notification process. Notification providers that are not push-enabled can still be integrated into consumption channels that rely on an end-user session such as the Fiori shell. In this case, the notifications can be pulled and subsequently short-polled for that given user.
- As notifications are typically actionable, they may contain data to allow the end-user to decide on the appropriate action. In consequence, that means that the notifications potentially need to contain sensitive data. If notifications are exposed over unsecure channels such as email or mobile infrastructures not owned by SAP (e.g., APNS) they do not contain any sensitive data. In this case, the sensitive data is read by the receiver through an additional secured channel (e.g., from the mobile device). If that is not possible (e.g., typically for emails), the notification itself can be a trigger to let the user navigate to some UI which contains all of the secure information.
- In addition, the question on how to deal with sensitive data is also relevant when storing or caching the notification content within the notification service. Depending on the type of notifications and regulations on the customer side, the data may not be persisted.
- Referring to
FIG. 1A , an example display of aviewport 100 with alaunchpad 101, in accordance with the principles of the present disclosure.Launchpad 101 may be included in a center container 120 (e.g., “Work”) with content relevant to the user's work, domain, or role in the enterprise. A left side container 110 (e.g., “ME”) with content personal to the user may pertain to content in thelaunchpad 101 or may be independent of content in thelaunchpad 101. A right side container 130 (e.g., “Notifications”) may include notifications directed to the user that pertain to content in the launchpad or other content. In some implementations, thesecontainers areas - In some implementations, the viewport may function as an entry point to access software applications and associated content. The viewport may be configured to provide a single screen view that depicts three (or more) multifunctional screen areas. In one example, the three areas are displayed in parallel as a left panel, a center panel, and a right panel. The center panel may include a workspace area which can display a launchpad (e.g., home screen) or one or more active application areas (e.g., screens) that a user has launched from the launchpad (or tile/link in the launchpad). The left panel may include a Me Area that provides various generalized functionalities related to the user and operation and personalization of the environments described herein. The right panel may include a Notifications Area that displays a broad array of notification types (System Alerts, messages, reminders, tasks alerts, etc.) in a customizable listing format.
- In an example embodiment, the functions and information described herein are assigned to at least one virtual extension of a viewport. That is, a portion of the display area can be displayed, while other portions are virtual extensions and only displayed as a user or algorithm scrolls to place one or more of the other portions into view. In one example, a virtual extension can include a first extension area to the left of the viewport and a second extension area to the right of the viewport. When the main content is selected, the extension area(s) are hidden from display.
- In another example embodiment, the viewport is switched to display selected supplemental content by triggering a graphical icon inside a viewport. Alternatively, if the display is touch-sensitive, a viewport may be switched by a touch gesture such as a swiping motion towards or away from the corresponding extension area. A viewport may be switched back to the main content, e.g., by triggering a respective icon or using a gesture.
- In another example embodiment, trigger icons indicate when new or unread information is available inside a respective extension area. The indication can be a numerical counter, a symbol, a special graphic or animation, etc. Thus, the user need not leave the current context, i.e., the main content, to be alerted to new information.
- In an example embodiment, the supplemental content is displayed by moving the corresponding extension area over to the viewport. The movement may be animated in the manner of a camera pan. However, other movements such as instantaneous display or fading in and out are also possible.
- In yet another example embodiment, at least part of the main content remains on display in the viewport when the extension area is displayed. The main content may be shifted away from a central portion of the viewport and reduced in size (e.g., scaled down to 75% of its original size) to direct the user's attention to the supplemental content. In this display state, the main content may be partially cut off by the border of the viewport.
- As shown in
FIG. 1A , aWork viewport 120 is located in the center of the display screen. TheWork viewport 120 may, for example, display either thelaunchpad 101 or an active application screen that was previously selected or opened from the launchpad tile array. Theleft Me viewport 110 may, for example, provide various generalized functionalities related to the user and their operation and personalization. Theright Notifications viewport 130 may, for example, display one or more of a broad array of notification types (System Alerts, messages, reminders, tasks alerts, etc.) in a customizable listing format. - The launchpad or home screen in the viewport, which may available at all times and in any application, may provide a clear screen orientation for accessing corresponding application information as well as generalized functionalities and navigations without ever disrupting a user's context of their current task. On a client computer device (e.g., a mobile device), which has a limited display screen area, a personalized UI display may be adapted to present fewer of the three multifunctional screen areas or viewports on the device's limited display screen area. For example, only the Center, Left/Center or Center/Right screen areas or viewports may be presented on a mobile device's display screen.
- For convenience in description, the terms “Work viewport”, “center viewport”, “launchpad”, “home screen” and “home page” may be used interchangeably herein because each may persist as a user-configured starting point in which to access content.
- A client computer device structure or framework provides a viewport for a web interface for access to, or interaction with, a suite of multiple and diverse applications (or data sources), in accordance with the principles of the present disclosure. The viewport can be used for the multiple and diverse applications and may, for example, provide services to a user for application-to-application navigation, personalization, search, and incident creation. The Viewport may be designed to provide a common, same, or unified user experience (UX) to the user when launching, accessing, or interacting with one or more of the multiple applications. In an example implementation, a backend or gateway computer system (which may be connected to multiple applications or hosts) may generate the viewport. The Viewport may be delivered or presented as a web page on the client computer device and serve as a single web-based entry point for multiple applications and analytics across platforms and devices.
- As indicated above, the content of the viewport may be organized in one or more containers (e.g., main or center “shell” container, left container, right container) for display on a display screen of a client computer device. The main container may contain the launchpad (e.g., home page), which may act as the starting or focal location for initiating application-to-application navigation, personalization, search, and incident creation, just to name a few examples.
- Each of the multiple applications may be represented by, or delivered via, content (e.g., a graphical user element (GUI), link, tile, factsheet, or other object) on the viewport (or within the launchpad). Further, the content of the launchpad may be customized or personalized to a user (e.g., based on user role, authorization level, user interests or needs, etc.) for access to, or interaction with, a selected subset of the multiple applications (or data sources). Each of the selected subset of multiple applications may be represented a specific object (e.g., a tile or link) on the viewport (or within the launchpad). The specific object (e.g., tile or link) may be identified or labelled by a name, title, or icon indicating the specific application which the specific object represents. The tile or link (e.g., by a single click) may be used as an application launcher on the viewport (e.g., web interface) to launch the application that the tile or link represents.
- The tiles corresponding to the specific applications represented on the launchpad may be organized as a group or array of tiles in a “tiles area” of the UI hosting the launchpad. Similarly, links corresponding to specific applications represented on the launchpad may be organized as a list of links in a “links area.” A Design Time Tool (e.g., available, for example, in a menu or via a tile or link on the launchpad) may allow users or administrators to define which applications should be displayed as links or tiles on the launchpad. Users/Administrators may personalize the tiles area and the link list area to a user.
- One or more containers of the viewport may have adjustable amounts of displayed content (e.g., number of tiles) (and correspondingly adjustable display size or display area) so that the same viewport can be adapted for display on different-sized display screens of different client device types (e.g., smartphone, smart watches, laptops, work station, tablet, desktop computer, etc.), and across all possible deployment options (e.g., on premise, cloud, as-a-service, etc.). Which ones of the one or more containers are displayed on the display screen at given moment may depend, for example, the status of tasks or activities of the user navigating the viewport, and also, for example, on the size of the display screen of the client computer device available for display.
- In example implementations, a container (e.g., center container, launchpad) may be used to display main or core content for a user (e.g., application/tiles relevant to a user's work or role). The launchpad may serve as a shell container to access all content. Other containers may include different panels with different floorplans for different content corresponding user interests or activities (e.g. a “ME” panel displaying information or personal data about a user, a “notifications center” displaying notifications (e.g., e-mail, text messages, alerts, etc.) for the user, a panel displaying discussion threads or boards, an Overview Page, an Object Page (e.g., a floorplan to view, edit and create objects), a panel displaying context and ad-hoc workflows, a panel displaying dynamic sidebar information, a dynamic side content panel, etc. The dynamic side content is a layout control that allows additional content such as timeline, chat, additional information to be displayed in a way that flexibly adapts to different screen sizes. In some implementation, if no notifications are available, the launchpad may overtake space typically set aside for notifications. In some implementation, the launchpad may be placed with a visual effect, including sliding in from a top of a UI and bouncing into place in the UI.
- In example implementations, the applications (which, for example, may be a set of applications implemented on HTML5/CSS/JS technology using SAPUI5 framework) delivered via
launchpad 101 may adhere to a consistent, responsive design that allows users to seamlessly experience the applications across interaction channels—desktop, tablet, mobile, etc. Further, the applications delivered via the launchpad may include legacy applications implemented on traditional platforms using legacy UI technologies (e.g., FPM/WDA, SAPGUI for HTML, SAPGUI for Windows, etc.). Access to legacy applications may, for example, be provided via corresponding links in a links area of the personalized UI display. - In an example implementation of the personalized UI display, a start screen (e.g., main container, “launchpad” or home page) may present assigned applications as so-called “tiles” (e.g.,
tile 150,tile 151,tile 152, etc.). Tiles (which are user-activable UI elements) may only be used as application launchers for launching applications and presenting the applications on the launchpad. An App Descriptor defines Navigation Intent (=Semantic Object+Action) to launch the transaction, Title, Subtitle and Icon for the Application Launcher, i.e. the text of the tile; and Parameters, e.g. order number. - A user may use these tiles (e.g.,
tile 150,tile 151,tile 152, etc.) to launch or navigate to specific applications. Incorporated into the launchpad may be a launchpad Designer tool, which allows assignment of tiles to users and user groups for customization or personalization (e.g., based on user role) oflaunchpad 101. As a general rule, each of the multiple applications (for which launchpad 100 serves as an interface) may correspond to at least one tile. An exception to the general rule may be for factsheet applications, which need not be represented by tiles. However, factsheets may optionally still be saved as and represented by tiles onlaunchpad 101 if desired. - In accordance with the principles of the present disclosure, a tile that represents an application (e.g., on
launchpad 101 or any other UI), apart from serving as a UI element or button for launching the application and displaying the application identifier, may be a container that displays different types of additional information or content. The additional information may include, for example, informative text, numbers, and charts. The displayed tile content may be static or dynamic. The displayed tile content may be dynamically updated and may include, for example, data (e.g., trends or key performance indicators (KPIs), and application status, etc.) supplied by the backend systems or applications to which the tile is represents. - The multiple applications described herein may be hosted on the same or different types of computer platforms or systems (possibly including some applications hosted on the client device itself). In example implementations, the different types of computer platforms or systems may include, for example, SAP HANA, SAP ABAP, or other enterprise-type computer platforms or systems.
- In example implementations, the suite of the multiple applications which an enterprise may deploy for its operations (e.g., in the areas or domains of Finance, R&D, Engineering, Human Resources, Manufacturing, etc.) may be large. Different subsets of these applications may be used in the work of enterprise personnel who may have a variety of different roles. Each user may have a need to use a different respective subset of the multiple applications, based, for example, on the user's role in the enterprise.
- In general, viewports (e.g.,
viewports - The viewport also provides the advantage of a natural user experience compared to the classical off-canvas designs that are common in mobile applications. As shown in
FIG. 1A , two off-screen areas are shown, the Me area (e.g., viewport 110) with user-specific information and a Notifications area (e.g., viewport 130) on the right. Each off-screen area is populated using system-driven information. Users can access these areas through actions in a shell bar on the top left and top right corners. The transition that is shown upon accessing such content depicts a smoothly animated lateral move that mimics the user's head turning to the left and to the right in a panoramic view. User interaction with the content can be mapped to mimic natural user (e.g., human) gestures or input controls. The surface generated by the view therefore removes any screen limitations. Such a surface offers additional space for user-specific and system-driven data. - The Me Area can be found to the left of an off-screen area. Because this area is located off-screen, it is not permanently visible to the user. In order for the Me Area to slide into view, the user can click on the profile image located on the top left corner of the screen—an action that mimics the user turning his or her head to the left. This action will also trigger the viewport to move to the left and the main content area to zoom out. As the Me Area slides into view, the user will be able access information relevant to both the user and his or her usage environment. This includes, for example, the user's profile picture and access to online state, settings and preferences, a catalog of available apps (App Finder), tools to personalize the current content in the main area, and objects and apps recently visited by the user.
- The Me Area may be available from each screen in the main content area. On the background surface, the different areas co-exist and influence one another. While most actions in the Me Area are available independently of the current context, some of the actions will be directly tied to the content shown in the main content area. For example, settings will display the settings page for the specific app in the main content area (not yet available). Additionally, personalization options might only be available if the respective screen is visible in the main area. In some implementations, an option to allow users to view a list of their most recently visited items is provided. This is especially useful for those users who are used to working with a limited set of apps or objects as it significantly simplifies their navigation.
- The right off-screen area is dedicated to providing system-driven information. This may include system-generated notifications of events to which a user has subscribed. The system may provide more live insights and actions, making a real-time push channel increasingly important.
- A notification center can provide system-generated notifications from various sources such as the workflow inbox or chat notifications. Notifications can be prioritized and grouped into groups of similar items. Through these configurations, the user will be able to access more information about a notification and take immediate action.
- Similar to the Me Area, the notification area is accessible from every app that is shown in the main content area. Here, too, the user can bring the notification area into focus through a virtual turn of the head—that is, by clicking on the notification icon on the top right corner of the screen.
- The notification area exists independently of the application in the main content area. The big difference between this area and the notifications on the home page of the launchpad is that the launchpad home area displays notifications within the launch tiles. By separating the notifications from the tiles, our rationale is to guide the user and make him aware of critical and actionable issues immediately. Other types of information may be suitable for display in the notification area, such as progress indicators for long-running tasks (for example, for a build or deployment process).
- With the design of the viewport, the systems and methods described herein can concurrently manage different screen areas without sacrificing simplicity and responsiveness. The viewport offers a partial view of a potentially infinite surface on which content and functionality can be placed either in a fixed layout with the three main areas, or in a more flexible layout of multiple areas.
- In one example, the Me Area slides into view from the left to offer users access to various user-related information including personalization, profile, settings and interaction history. Similarly, the notification area slides into view from the right to offer users access to system-driven information that helps them to become aware of critical, real-time information. The notification area may also offer other system-driven content.
-
FIG. 1B is an illustration showing anexample login screen 110 displayed in the shellmain container 104. Thelogin screen 110 provides a UI that allows a user to enter credentials in order to log into and begin a personalized and customized UX. In the example shown inFIG. 1B , thelogin screen 110 appears to drop into the shellmain container 104 from a virtual extension area located along a top of a display area. In some implementations, the virtual extension area can be placed along the bottom of the display area. In some implementations, the virtual extension area can be placed to the left and/or the right of the display area. -
FIG. 1C is an illustration showing anexample launchpad 101 displayed in the shellmain container 104. Thelaunchpad 101 can be a web-based entry point (or homepage) for enterprise applications that can execute (run) across multiple platforms and computing devices. In the example shown inFIG. 1C , thelaunchpad 101 appears to drop into the shellmain container 104 from the top of a display area. In some implementations, the virtual extension area can be placed along the bottom of the display area. In some implementations, the virtual extension area can be placed to the left and/or the right of the display area. - The
launchpad 101 can serve as a bracket around (or a base for) a set (or group) of enterprise applications, providing a single point of entry for the set of enterprise applications. In the example shown inFIG. 1C , thelaunchpad 101 presents (displays on a screen of a computing device of a user) each application represented by a tile. A tile can be a container that represents the application. Each tile can display different types of content. A user can interact with each tile to navigate to the specific enterprise application associated with the tile. In addition, when designing a tile to represent a specific application, a programmer can assign a tile to a specific user or group of users. Thelaunchpad 101 can provide one or more services. The one or more services can include, but are not limited to, application-to-application navigation, personalization, role-based application assignments, search, and incident creation. - The
launchpad 101 can be a role based, personalized, real-time and contextual aggregation point for business applications and analytics. Thelaunchpad 101 can run (execute) on multiple computing devices including, but not limited to, desktop computers and mobile computing devices such as laptop computers, tablet computers, notebook computers, personal digital assistants (PDAs), smartphones, mobile phones, smart watches, etc.). In addition, thelaunchpad 101 can be deployed on multiple platforms (e.g., Linux, Windows, Windows Phone, MAC®, iOS®, OS X®, Android®, etc.). - The
launchpad 101 includestiles 114 a-h. Each tile can display different types of content. For example, tile 114 a can be a news and feeds tile that can enhance collaboration by providing a user with information about the enterprise. Thetiles 114 a-h can be individually color-coded. A color can represent a particular role (e.g., finance, human resources, supply chain management (SCM), customer relationship management (CRM), etc.). Thetiles 114 a-h can be associated with agroup 116.Tile 114 f can be a key performance indicator (KPI) tile.Tile 114 b can be a basic launch tile.Tile 114 d can be a monitoring tile.Tile 114 g can display a comparison chart for specific content. - The
launchpad 101 includes alink list area 118 that includes links 119 a-f. Thelink list area 118 is an area on thelaunchpad 101 that can provide links to enterprise applications represented by thetiles 114 a-h. For example, a user can select and drag a tile from the tile area on thelaunchpad 101 into thelink list area 118 to create a link to the application associated with (represented by) the tile. In some implementations, thelaunchpad 101 can include a footer toolbar (e.g., footer toolbar 132 as shown inFIG. 1F ). In some implementations, the footer toolbar can appear to float over the content displayed in thelaunchpad 101. - In some implementations, the
shell toolbar 108 can display asearch icon 111 and a copilot launch icon 113. A user can select (click on) the copilot launch icon 113 to launch a copilot UI. A copilot UI will be described in more detail with reference toFIG. 1I . -
FIG. 1D is an illustration showing an example active application screen (overview page 120) displayed in the shellmain container 104. The enterprise applications that can be accessed by a user by way of thelaunchpad 101 and then subsequently displayed in an active application screen (e.g., the overview page 120) can include, but are not limited to, transactional applications, analytical applications, and fact sheet applications (contextual navigation applications). Transactional applications can allow a user to create, change and/or approve processes with guided navigation. Analytical applications can provide a user with a visual overview of a dedicated topic for monitoring and tracking purposes to allow for further key performance indicator (KPI) related analysis. Fact sheet applications can allow a user to view essential information about an object and to allow navigation between related objects. - The
overview page 120 can visualize all of the information a user may need for a specific business context (business domain) on a single page or screen. The information can be displayed in one or more variable content packages (VCPs) or cards 122 a-i. Each card can be a container of content for organizing large amounts of information on an equal plane within theoverview page 120. In some implementations, a user can rearrange the position of the cards 122 a-i on theoverview page 120. In some implementations, a user defines, adds, or deletes cards included in theoverview page 120. - An overview page (e.g., the overview page 120) can be a selectable application (e.g., from the launchpad 101) providing an integrated gateway into enterprise applications and application content included in the
launchpad 101. The UI of the overview page (e.g., the overview page 120) can provide a user with a visual summary of data, links, actions, and content that are relevant to a business domain of expertise of a user and relevant to a selected role of the user within the domain. The visual summary can be presented in one or more cards (e.g., the cards 122 a-i) that display live content to a user at-a-glance without the user having to open multiple applications and perform multiple drill downs through application content to find and present the content. - In some implementations, the
overview page 120 can include a footer toolbar (e.g., footer toolbar 132 as shown inFIG. 1F ). In some implementations, the footer toolbar can appear to float over the content displayed in theoverview page 120. - In some implementations, an enterprise system can determine content displayed on an overview page (e.g., the overview page 120). In addition or in the alternative, a selection of one or more business domains and one or more roles of a user in the business or enterprise can determine content displayed on an overview page (e.g., the overview page 120). In some implementations, a user can make the selection using a settings UI included in a launchpad (e.g., the launchpad 101). In some implementations, a user can select one or more business domains and/or one or more roles of the user in the enterprise by way of an overview page (e.g., the overview page 120). Selecting one or more business domains and/or one or more roles of the user in the enterprise by way of the overview page can maintain absolute relevance to the individual user and the way in which the user works.
- In some implementations, the user can personalize the layout and placement of one or more cards (e.g., the cards 122 a-i) included in a UI of an overview page (e.g., the overview page 120) and the display of content included in each card. The personalization can enhance the workplace productivity of the user.
-
FIG. 1E is an illustration showing an example object page (object page 124) displayed in the shellmain container 104. An object page can be a floor-plan used to represent objects in a UI. An object page can be used to display, create, or edit an object. An object can represent a business entity (e.g., a customer, a sales order, a product, an account, etc.). Enterprise applications that reflect a specific scenario (e.g., a sales order, am account status) can be bundled using an object. The object page can include aheader area 126, anavigation area 128, acontent area 130, and, in some implementations, a footer toolbar (e.g., footer toolbar 132 as shown inFIG. 1F ). In some implementations, the footer toolbar can appear to float over the content displayed in theobject page 124. For example, referring toFIG. 1C , a user can select thetile 114 f and an object page can be displayed to the user. -
FIG. 1F is an illustration showing an example a footer toolbar (e.g., footer toolbar 132). In some implementations, referring toFIG. 1A , the footer toolbar 132 can appear at the bottom of a screen displayed in the shellmain container 104, the left container 102, and/or the right container 106. For example, as described herein with reference toFIGS. 1C-E , a footer toolbar (e.g., the footer toolbar 132) can be displayed at the bottom of thelaunchpad 101, theoverview page 120, and theobject page 124. The footer toolbar (e.g., the footer toolbar 132) can continue to appear at the bottom of the screen of the display area of the display device even as the displayed screen is scrolled. The footer toolbar (e.g., the footer toolbar 132) can appear to hover over or float over the content being displayed on the screen. The footer toolbar 132 can include buttons or controls 134 a-k. The controls 134 a-k can be selected by a user in order to perform one or more actions that can affect content included on the page being displayed on the screen. The controls 134 a-k are examples of controls that can be included in a footer toolbar. In some implementations, the controls can be different, fewer than, or more than the controls 134 a-k. The type and number of controls included in a footer toolbar can be based on the type of page being displayed and/or the content being displayed in the page. -
FIG. 1G is an illustration showing an example me area (e.g., me area 136) that can be displayed in the left container 102. In some implementations, the mearea 136 can be displayed in the right container 106. The mearea 136 includes anupper section 138 and alower section 140. Theupper section 138 includes a user icon 142. Selecting (clicking on) the user icon 142 can provide a user profile. A dropdown indicator button 144 displays a status of the user and, if selected, a user can logout of an application. Theupper section 138 includes navigation targets 146 a-e. Selection of (clicking on) a navigation target by a user triggers a corresponding functionality (e.g., an application) associated with a navigation target. The mearea 136 can provide various generalized functionalities as they are related to a user. - The
upper section 138 can include sort selections 146 a-b. A user can select (click on) a sort selection (e.g., one of the sort selections 146 a-b) to determine how the listing of the recent activities included in thelower section 140 will be sorted and displayed. - The
lower section 140 of the mearea 136 includes a list of recent activities 148 a-c. The recent activities 148 a-c can include links 156 a-c, respectively, that when selected (clicked on) by a user can navigate the user to back to the shellmain container 104, opening an application (or function) that corresponds to the link in the shellmain container 104. Recent activity items can include, but are not limited to, enterprise applications, triggered searches, co-pilot collections, and co-pilot drafts. -
FIG. 1H is an illustration showing an example notification area (e.g., notification area 150) that can be displayed in the right container 106. In some implementations, thenotification area 150 can be displayed in the left container 102. Thenotification area 150 includesnotifications 152 a-c. A user interacting with the UI in thenotification area 150 can take immediate action on a notification. A notification item (e.g.,notifications 152 a-c) can have an indicator (e.g., notification indicators 154 a-c) that can indicate the status of the notification. For example, a notification indicator can be color coded to indicate a particular status of the notification. - A user can reject a notification by selecting (clicking on) a reject selection (e.g., a reject selection 156 a-b). For example, a user can reject the
notification 152 a by selecting (clicking on) thereject selection 156 a. The rejection of thenotification 152 a (the notification status) can be indicated by content included in (e.g., a color of) anotification indicator 154 a. A user can acknowledge a notification by selecting (clicking on) an acknowledge selection (e.g., a acknowledge selection 158 a-b). For example, a user can acknowledge thenotification 152 b by selecting (clicking on) the acknowledgeselection 158 b. The acknowledgement of thenotification 152 b (the notification status) can be indicated by content included in (e.g., a color of) anotification indicator 154 b. - A user can drill down into a relevant application by selecting (clicking on) a more info selection (e.g., a
more info selection 160 a-b). In some cases, a user may contact someone directly in response to a notification. -
FIG. 1I is an illustration showing an example copilot UI (e.g., copilot UI 162). For example, referring toFIG. 1C , a copilot application can be launched from thelaunchpad 101 when a user selects (clicks on) the copilot launch icon 113. The copilot application can provide (generate and display) the copilot UI 162. In some cases, the copilot UI 162 can float over the UI included in thelaunchpad 101. As a floating UI control, the copilot UI 162 can be visually unobtrusive and flexible in its cross-functional omnipresent implementation across any device or application screen. - The example copilot UI 162 is an example copilot start page or start screen. The start screen (the copilot UI 162) can be an entry point for copilot functionality for an enterprise system.
- The copilot UI 162 can provide shortcuts to different copilot features. For example, as shown in
FIG. 1I , a collection can be represented by an entry in acollection list 164 that includescollection list entries 164 a-d. A copilot collection can be a cluster of items in relation to a specific topic. For example, an item can be a note, a screenshot, a chat message, a copilot message, an object, or a quick create. In some implementations, the items included in the collection can be homogeneous (e.g., all of the items are of the same type). In some implementations, the items included in a collection can be non-homogeneous (e.g., the items can be of different types). Eachcollection list entry 164 a-d can provide a representation of a collection that can include a title, a timestamp (e.g., last changed), a visual content summary, and a textual content preview. In some implementations, thecollection list 164 can be searched and/or filtered. - For example, the selection of a copilot shortcut 166 a-d can allow a user to create and navigate to a new collection with a specified intention. The selection of a copilot create
icon 168 located in acopilot footer toolbar 170 can create and navigate to a new plain collection. The selection of acopilot settings icon 172 located in thecopilot footer toolbar 170 can allow a user access to copilot settings (e.g., display a copilot settings UI, open a copilot settings application, etc.). - Copilot entries can be living, gradually growing artifacts and software entities that can accompany a user from the identification of an issue to a solution for the issue, while providing support in the form of relevant context and actions. Copilot entries can serve as memory aides while the copilot entries can incrementally evolve into valuable transactional tasks and collaborations as they mature in meaningful ways that bridge a gap between predefined application functionality and processes based on personal ways of working for a user. Though the example shown in
FIG. 1I describes launching the copilot application from thelaunchpad 101, referring toFIG. 1A , the copilot application can be launched from other screens displayed in (included in) the shellmain container 104, the left container 102, and/or the right container 106. - Copilot entries can be made ready for users to use when communicating, collaborating, and creating actionable transactions in desktop or mobile scenarios. For example, copilot text entries can be analyzed for recognizing and identifying relevant text related objects. Copilot text entries can emphasize displayed text, and a copilot application can recommend contextual entities for use in a current task. The copilot application can understand user context and can intelligently propose selections, auto-entries, and user options.
- A smart template can provide a framework for generating user interfaces at runtime for an enterprise application. For example, a smart template can be used to generate the UI for the
overview page 120 as shown inFIG. 1D . In another example, a smart template can be used to generate the UI for theobject page 124, as shown inFIG. 1E . A smart template can provide a framework for generating the user interfaces based on metadata annotations and predefined templates for the most used application patterns. The use of smart templates can ensure design consistency by providing centralized high quality code by using predefined templates and controllers. The use of smart templates can keep applications up to date with evolving design guidelines. The use of smart templates can reduce an amount of front-end code used in building enterprise applications. The term “smart” can refer to annotations that add semantics and structures to provided data. The term “smart” can also refer to the way in which the templates understand the semantics. -
FIG. 1J is an illustration of a timeline UI (e.g., the timeline 174). A timeline UI (e.g., the timeline 174) can display timeline entries 176 a-e. For example, the entries can be events, objects, and/or posts listed and displayed in a chronological order. The timeline 174 includes nodes 178 a-d that correspond to respective timeline entries 176 a-d. - The timeline 174 can be used for collaborative communications. The timeline 174 can be configured in multiple different ways depending on use case implementations. For example, the timeline 174 can provide information about changes of an object or about events related to an object. The timeline 174 can provide information about generated entries (e.g., value XY changed from A to B) or about manual entries (e.g., comments from an individual). In some implementations, the latest entry is at the top of a list displayed by a timeline. In some implementations, the timeline 174 can be displayed along with a business object. In some cases, the timeline 174 can be displayed to the right of the business object.
- Two example versions of a timeline can include a basic timeline and a social timeline. A basic timeline can be a read-only timeline. A social timeline can allow for interaction and collaboration among users.
-
FIG. 2 is a diagram of anexample system 200 that can implement the user interfaces and user experiences described herein. Thesystem 200 includes anenterprise computing system 202, anetwork 204, and client computing devices 206 a-e. - For example,
computing device 206 a can be a mobile phone, a smartphone, a personal digital assistant, or other type of mobile computing device. Thecomputing device 206 a includes adisplay device 220. For example,computing device 206 b can be a laptop or notebook computer. Thecomputing device 206 b includes adisplay device 222. For example,computing device 206 c can be a tablet computer. Thecomputing device 206 c includes adisplay device 224. For example, thecomputing device 206 d can be a wearable device such as a smartwatch. Thecomputing device 206 d includes adisplay device 226. For example, thecomputing device 206 e can be a desktop computer. Thecomputing device 206 e can include adisplay device 228. A user of the computing devices 206 a-e can use/interface with thedisplay devices enterprise computing system 202. The computing devices 206 a-e can display on thedisplay devices - The
enterprise computing system 202 can include one or more computing devices such as aweb management server 214, afrontend server 230, abackend server 208, and a mobiledevice management server 210. Theenterprise computing system 202 can also include a databasemanagement computing system 212 that includes adatabase management server 212 a and adatabase 212 b. Though not specifically shown inFIG. 2 , each server (theweb management server 214, thefrontend server 230, thebackend server 208, the mobiledevice management server 210, and thedatabase management server 212 a) can include one or more processors and one or more memory devices. Each server can run (execute) a server operating system. - In some first implementations, the client computing devices 206 a-d (e.g., the mobile computing devices) can communicate with the enterprise computing system 202 (and the
enterprise computing system 202 can communicate with the client computing devices 206 a-d) by way of the mobiledevice management server 210. The mobiledevice management server 210 includes one or more mobile device platform application(s) 216. By using the mobile device platform application(s) 216, theenterprise computing system 202 can deliver cross-platform, secure, and scalable applications to thecomputing devices 202 a-d, independent of the mobile computing device-type (e.g., laptop, notebook, smartwatch, mobile phone, PDA, etc.) and independent of the operating system running on the computing device 206 a-d. In these implementations, the mobiledevice management server 210 can then communicate with theweb management server 214. - In some second implementations, the client computing devices 206 a-e (both the mobile computing devices (computing devices 206 a-d) and the
desktop computing device 206 e) can communicate with the enterprise computing system 202 (and specifically with the web management server 214), and the enterprise computing system 202 (and specifically with the web management server 214) can communicate with each of theclient computing devices 202 a-e) using thenetwork 204. Theweb management server 214 includes aweb dispatcher application 218. In both the first implementations and the second implementations, theweb dispatcher application 218 can act as a “software web switch” accepting or rejecting connections to theenterprise computing system 202. - In some implementations, the
network 204 can be a public communications network (e.g., the Internet, cellular data network, dialup modems over a telephone network) or a private communications network (e.g., private LAN, leased lines). In some implementations, the computing devices 206 a-e can communicate with thenetwork 204 using one or more high-speed wired and/or wireless communications protocols (e.g., 802.11 variations, WiFi, Bluetooth, Transmission Control Protocol/Internet Protocol (TCP/IP), Ethernet, IEEE 802.3, etc.). - The
frontend server 230 can include product specific UI Add-On Applications 232 and aUI infrastructure 234. TheUI infrastructure 234 can include a design portion and a runtime portion. Thefrontend server 230 can decouple a lifecycle of a UI (e.g., design and runtime deployment) from thebackend server 208. The decoupling can allow UI applications to interface with a plurality of different databases. The decoupling provides a single point of UI design, access, and maintenance allowing for theming, branding, configuring, and personalizing a UI without a need for development privileges to the backend server 208 (e.g., no need to have backend administrative rights). The decoupling can result in a more secure enterprise computing system. The decoupling can provide for rule-based dispatching of requests in a multi-system landscape (e.g., for approvals including aggregation). - The
frontend server 230 includes agateway 236. Thegateway 236 can provide a way to connect devices, environments, and platforms to enterprise software based on market standards. Thegateway 236 can enable the development of UIs for use in different environments (e.g., social and collaboration environments). Thegateway 236 can enable the development of UIs for use on different types of client computing devices (e.g., client computing devices 206 a-e). Thegateway 236 can enable the development of UIs for use in internet-based applications. - The
backend server 208 can include a bundle (a set) of business applications (e.g., business suite 238). The business applications can be transactional applications. analytical applications, and fact sheet and contextual navigation applications. Transactional applications can allow task-based access to tasks that can include create and change. In addition or in the alternative, transactional applications can allow access to entire processes with guided navigation. Analytical applications can provide a user with a visual overview of complex tasks for monitoring and tracking purposes. Fact sheet applications and contextual navigation applications involve search and explore activities. Fact sheet applications and contextual navigation can allow a user to view essential information about an object and can allow contextual navigation between related objects. - The database
management computing system 212 includes adatabase management server 212 a that can run (execute) applications that can manage adatabase 212 b. For example, thedatabase 212 b can be an in-memory, column-oriented, relational database (e.g., SAP HANA®). The databasemanagement computing system 212 can includeextended application services 240 that can embed a full featured application server, web server, and development environment within the databasemanagement computing system 212. Theextended application services 240 can includeapplication content 242 and reusecontent 244 for use by theenterprise computing system 202 when providing a personalized, responsive, and simple UX across different types of computing devices and deployment options. -
FIG. 3 is a diagram of anexample system 300 that can implement the launchpad for the user interfaces and user experiences described herein. The launchpad acts as runtime shell environment for the apps described herein in which the personalized home page is one feature among many other services. The launchpad is based on a unified shell architecture. The guiding principle of the unified shell is to have a single, platform-independent, client-side runtime environment which can be hosted on different server platforms (e.g., SAP NetWeaver AS ABAP, SAP HANA XS, SAP HANA CloudPlatform). - In general, the framework described herein may support for modularizing comprehensive JavaScript applications. That means, instead of defining and loading one large bundle of JavaScript code, an application can be split into smaller parts which then can be loaded at runtime at the time when they are requested. These smaller individual files are called modules.
- A module is a JavaScript file that can be loaded and executed in a browser. The module may include a name, a description, a dependency, and a declaration location. The content bundled in a module is up to the developer, but typically the content has a common topic, such as forming a JavaScript class or namespace or the contained functions address a specific topic, for example client to server communication or mathematical functions.
- Modules have no predefined syntax or structure, but module developers can use the name, declaration, description, or dependency to identify such modules. The name identifies the module and is used with jQuery.sap.require to load the module. As human readers associate a module with the main JavaScript object declared in it, the module names by convention are a hierarchical sequence of dot-separated identifiers like sap.ui.core.Core. A developer can use all but the last identifier to group modules in a logical and/or organizational order, similar to packages in Java, and can use the last identifier to give the module a semantical name.
- Modules can declare themselves and their location of content by calling the static jQuery.sap.declare function with their name. This helps SAPUI5 to check at runtime whether a loaded module contains the expected content by comparing the required name against the declared name. As a side effect, jQuery.sap.declare ensures that the parent namespace of the module name exists in the current global namespace (window). For modules without declaration, the framework assumes that the module has the expected content and declares it with the name that was used for loading. In some cases a module declaration is mandatory.
- The description of a module is any JavaScript comment preceding the module's declaration statement and is intended to help to decide whether a module is useful for the intended purpose. The configuration UI displays the description next to the module name.
- Modules can use the jQuery.sap.require method to load other modules they depend on. While jQuery.sap.require internally has the effect of a loadModule call, it can also be regarded as a dependency declaration. The dependency declarations can be evaluated at runtime, but can also be analyzed at built time or at runtime on the server.
- In one example, the unified shell offers unified services with platform-independent interfaces (APIs) (e.g., services 301) to the hosted apps and shell components. The implementations of these services can utilize different service adapters for the respective platform to carry out platform-specific behavior. The unified shell can be enabled using a
shell container 302,shell services 304, and ashell renderer 306. In some implementations, the shell container may be independent ofshell services 304 by utilizing theshell renderer 306. - Applications (e.g., apps) 308 may be embedded in an
application container 310. As this is an independent re-use component, the embedding aspect is decoupled from therenderer 306. Theapplication container 310 can, for example, host SAPUI5 components, Web Dynpro ABAP applications and SAP GUI for HTML transactions. - The
shell services 304 andrenderers 306 are managed by thecentral shell container 302. Theshell container 302 utilizes aruntime configuration 312, which defines the concrete implementations forservices 314,adapters 316, andshell renderer 306, as well as global settings like theme, language, system and user data. Theruntime configuration 312 is fed by a number of settings, including, but not limited to static configuration settings in the hosting HTML page, dynamic configuration data read from the front-end server during startup, and/or dynamic settings passed as query parameters in the URL - In some implementations, the JavaScript components shown in
FIG. 300 are embedded into a single HTML page. The launchpad implementation of the SAP NetWeaver ABAP front-end server may contain a standard page called, for example,Fiorilaunchpad.html 318, or other URL directed to one ormore viewports 320. Users may create custom start pages which utilize the shell with different static configurations. - The web browser can use http data and OData to access
application backend systems 322 and UI front-end server 324 (e.g., service implementations 326 and UI contact 328) viaweb dispatcher 330. - Users can embed apps into the Launchpad. When embedding applications into the launchpad, the
system 300 differentiates between applications based on SAP GUI for HTML or Web Dynpro ABAP can be embedded using an iFrame (i.e., inline frame). Thesystem 300 differentiates between applications based on SAPUI5. As these have been implemented using the same UI technology, these can be embedded directly into the Launchpad using DOM injection. This approach also allows smooth, animated UI transitions and the reuse of shared components at runtime. Therefore, applications have to be implemented as self-contained SAPUI5 components, as described below. - In a specific example, users can embed SAPUI5 Applications into the launchpad using the
application container 310 configured with the following parameters: the URL (root path) of the application and the name of the SAPUI5 component. The root path is a path where the component controller for the SAPUI5 app (e.g., the Component.js file) is located. Theapplication container 310 registers the component namespace as module path for the application URL. - The SAPUI5 component is defined with a file structure having a file named Component.js, which should be located in the root folder of the application being embedded. The definition of an SAPUI5 component includes the component metadata. The component metadata includes a config object containing additional information. The launchpad-specific configuration is defined in this config object.
- The launchpad evaluates the following properties of the component configuration:
- ResourceBundle—Path to the resource bundle that holds the translated app title. Example: i18n/i18n.properties.
- TitleResource—Key of the app title text in the resource bundle. The title is typically displayed in the browser tab.
- FavIcon—Path to the “favicon” (*.ico) file for the app, which is typically displayed in the address bar or next to the window title or tab title.
- HomeScreenIconPhone, homeScreenIconPhone@2, homeScreenIcon Tablet, and/or homeScreenIconTablet@2—Paths to icons with different resolutions that are used when users add the (launchpad page containing the) app to their mobile devices' home screens. The properties with an @2 suffix enable referral to special icons for high-resolution devices.
- The launchpad uses URL hashes for its own navigation. Direct manipulation of the location hash would interfere with the launchpad navigation. For cross-app navigation, use the Cross-Application Navigation service. For inner-app navigation, use the SAPUI5 routing API. Ensure that all controls created by your component are destroyed when the component is destroyed. Avoid using sap.ui.localResources inside your Component.js file. sap.ui.localResources registers a path relative to the main page (Fiorilaunchpad.html).
-
FIG. 4A is an example screenshot 400 of a scrollable screen area. The scrollable screen area may provide one or more viewports that a user can scroll through. For example, the entire screen area may be a viewport that can be scrolled onto and off of a display screen. In another example, each region (e.g., container) within the screenshot 400 may be a viewport that can be scrolled between other viewports. As shown, the screenshot 400 includes aleft container 402, a shellmain container 404, aright container 406, and ashell toolbar 408. In general, it may be possible for a user to scroll (e.g., pan) left and right across different regions (e.g.,container 402,container 404,container 406, and container 408) on a display device screen. - In one example, the
shell toolbar 408 can be used to toggle between viewports. As shown inFIG. 4B , ascreenshot 410 includes arepresentation 411 of theShell Toolbar 408. Therepresentation 411 may be provided when theShell Toolbar 408 is off the screen. For example, if the user chooses to view other viewports that do not include thetoolbar 408, then arepresentation 411 of the toolbar can be provided. Therepresentation 411 includes a ToggleMe Area control 412 that can toggle between viewports (e.g.,container 402,container 404,container 406, and container 408). Therepresentation 411 also includes a Back to launchpadcontrol 414 to enable the user to return to their launchpad viewport. A Toggle Notifications control 416 is shown to enable the user to toggle the Notifications in and out of a view of the screen. - As shown in
FIG. 4C , ascreenshot 420 depicts a number ofViewports computing device 428. The Viewports 422-426 may be selected by a user to show additional data associated with each respective Viewport. For example, if a user selects an item on thelaunchpad viewport 424, ascrollable overlay 430 can be presented in part within the screen ofdevice 428. In one example, theoverlay 430 may be a single viewport that is scrollable by the user. In another example, a number of Viewports can be represented byoverlay 430. If the user selects a portion of the overlay, any Me area or notification area viewports may be hidden to display additional overlay data. - The architecture described herein can also enable a viewport that can be translated, faded, zoomed, and/or scaled on a display screen. As shown in
FIG. 5A , ascreenshot 500 includes aleft container 502, amain container 504, and aright container 506. Theleft container 502 may include a Me area while theright container 506 includes a notification area. More or fewer containers can be shown and any of the containers may be presented in any position on the screen in one or more viewports (or virtually off of the screen). The viewports described herein can support parallax side-to-side scrolling. In one example, when scrolling content, the user can shrink and fade content (e.g., as shown at arrow 508) from themain container 502. In another example, the user can scale up content and move content to another container/viewport, as shown by arrow 512 inFIG. 5B . Users can also zoom into and out of a region on a container/viewport. -
FIG. 5C illustrates a screenshot 520 of an example animation that can occur when a user interacts with a portion of a viewport. In particular, if the user is viewing a viewport (e.g., an open viewport), and selects aprofile icon 522, the profile image is faded from a user profile picture into a cancelicon 524. The fade includes a gradual removal of the icon by scaling down (e.g., shrinking from larger to smaller) the profile image. When the user closes the viewport, the cancelicon 524 is faded into the profile icon. The fade in includes scaling the cancelicon 524 from smaller to larger. In one example, if the left container is open and the Main container or Notification container is clicked, the same procedure can occur as in when closing the left Viewport/container. -
FIG. 5D illustrates ascreenshot 530 that depicts a user moving content from amain container 504. Here, the user is moving a launchpad intoleft container 502 frommain container 504. When the user begins to move the content, an animation is generated by the systems described herein to scale down (e.g., shrink) the launchpad element as the element is dragged to the left between containers/viewports -
FIG. 5E illustrates a screenshot 540 that depicts a user moving content from anotification container 506. Here, the user is moving notifications fromright container 506 intomain container 504. When the user begins to move the content, an animation is generated by the systems described herein to scale up (e.g., enlarge) the notification element as the element is dragged to the left between containers/viewports -
FIGS. 6A-6D illustrate screenshots of example user interfaces depicting notification aspects. As shown, inFIG. 6A , ascreenshot 600 depicts alaptop display 602A in which anotification 604A is being provided. Thenotification 604A can be provided in a sliding right to left motion into thedisplay 602A. For example, the notification can be provided from viewports outside of thedisplay 602A and into a main viewable content area. Similarly, thenotification 602B (or thesame notification 602A) can slide left to right (or right to left) outward away from the viewable area ondisplay 602B. For example, thenotification 602A may be provided as an alert and upon a threshold amount of time, thenotification 602A (or 602B) can slide out of the display and into a notification container in a right viewport (e.g., viewport 506), for example. - Referring to 6B, a
screenshot 610 depicts anotification 612 indicating a number of different icons/links/actionable content that can be selected to carry out an action. For example, afirst action area 614 in which a user can look into additional information in the notification, decline the notification, or acknowledge the notification. Looking into additional information may function to expand the notification, decline may remove the notification from view and in some examples, may delete the notification from a notification listing, trigger email receipts, or decline notices, etc. Acknowledging the notification may trigger email receipts, or additional notifications to other users. In some implementations, acknowledging a notification may place the notification onto an additional list of items to carry out with respect to the notification. In some implementations, a notification can provide one or more links and/or icons to enable a user to navigate 616 from the notification to an application, website, or other area pertaining to details in the notification. - Referring to
FIG. 6C , ascreenshot 620 depicts anotification 622 provided to a user in a viewport. The notification includes buttons in the notification that the user can select. Here, the buttons include transparent icons with textual description below each button. - Referring to
FIG. 6D , ascreenshot 630 depicts threenotifications first notification 632 includes a red status indicating an urgent status. Thesecond notification 634 includes a green status indicating a status with a non-urgent date. Thethird notification 636 includes a white status indicating a non-urgent and non-date specific status. -
FIG. 7 is anexample data model 700 for a notification architecture. Thedata model 700 includes anorigin system block 702, anotification block 704, asensitive content block 706, anotification type 708, arecipient block 710, aconsumption channel block 712, aconfiguration block 714, atemplate block 716, and anaction block 718. - The origin system block 702 defines where a particular notification originates. Existing messaging/notification frameworks can be used to store this information. The origin system is also responsible for deciding which notification is sent to which user and which recipient list.
- The
notification block 704 is the central data entity containing the content from the backend and all administrative data. It is identified by a compound key of ID, Notification Type, and Origin System. Thesensitive content block 706 is stored separately, so that it can be managed separately for security and data-privacy reasons. In order to ease the processing (e.g., in case of asynchronous queues), the notification may have a processing status (e.g., created, delivered, erroneous, etc.). - The
notification type 708 identifies the type of the notification (e.g., Purchase Order Approval, Leave Request . . . ). It may be used to identify the notification and also to manage the delivery configuration on a type specific level. It also defines the behavior of sensitive content cache with respect to security and data privacy (different types can behave differently). The templates and the mass texts for stacked notifications are notification type specific as well. - The
recipient block 710 indicates one or more users in which the notification should be delivered to. A notification can have multiple recipients. The recipients are typically identified throughout all systems in order to deliver the notification to the correct user. The recipients are determined by the notification provider. - The
consumption channel block 712 defines the technical way (email, native mobile push, Fiori launchpad, etc.) in which a notification is delivered to a recipient. A recipient can have multiple consumption channels assigned, to specify how the notification is delivered. The detailed delivery information is part of the configuration. - The
configuration block 714 specifies the details about the notification delivery for a specific delivery channel and a specific user (e.g., display as banner or notification, do not disturb times, etc.). - The
template block 716 specifies templates detailing the way a notification is compiled to a human readable message format. The template is originated from the system that also generates the notification. The template can be replicated during the configuration of the source system or later on by an administrator. Templates are specific to a notification type and a consumption channel. - The
action block 718 specifies actions that represent a one click action, which can be performed on the notification without further user interaction involved (e.g. approve/reject). An action is channeled to the backend system for execution without further processing on the notification service. - In operation, an
origin system 702 is defined and anotification 704 is generated. The notification includes anotification type 708 and may also includeactions 718,sensitive content 706, and configuration details 714. Thenotification type 708 can be dictated by atemplate 716 that is also available to theorigin system 702. The notification may include one ormore recipients 710 and each recipient may be associated with aconsumption channel 712. -
FIG. 8 is an example block diagram 800 depicting an integration of notification services. Afrontend server 802 retrieves and displays notifications to a user viabackend server 804 using anotification API 806, for example. Alaunchpad notification center 808, a nativemobile notification center 810, and an email client 812 may be integrated to utilize notification services provided byserver 802. Such access can be provided by a reverse proxy 814, an SMP HCP block 816 (e.g., via push hub 818), and/oremail gateway 820, respectively for 808, 810, and 812. - The
frontend server 802 includes anotification service 822. Thenotification service 822 may be accessible as a central service to all notification providers and consumers. It may also be integrated seamlessly into the Fiori infrastructure (e.g.,FIGS. 1-3 ). Therefore, thenotification service 822 may be deployed to either the on premiseFiori Frontend Server 802 or/and as a central service on theHCP 816. Thenotification service 822 may serve as a central aggregation point as well as a runtime and configuration place. - The
notification service 822 includes one ormore notification processors 824,inbound adapters 826,notification APIs 806,callback adapters 828,outbound adapters 830, notification stores 832, templates in a template cache 834, sensitive content cache 836,cache configurations 838, andconfigurations 840. - The
notification processor 824 is one component responsible for processing and sending notifications to the configured consumers including the template handling and processing. As such, thenotification processor 824 includes acache handler 842 to cache notifications and a template engine 844 to generate notifications using particular templates. Thenotification processor 824 can read (836) sensitive data from the notification provider when needed and handling the caching (838) of sensitive data handling the consumption lifecycle (e.g., read, snoozed, etc.), handling the action processing (e.g., approved, rejected, etc.) towards the notification provider, and handling the configuration. -
Inbound adapters 826 may be configured to receive the push notifications from the notification providers and storing them in the notification store. There is typically one adapter per technical communication channel (e.g., RFC, OData). The channel specific data format is transformed into the internal storage format. Depending on the backend system type, there might also be a generic component. -
Notification APIs 806 may be implemented on thesystem 800, which provides convenient functions for the notification provisioning developer. This component may not perform any implicit commits in order to not mess with the commit logic of the caller. The Notification API is also responsible for queuing the calls towards the notification service. -
Callback adapters 828 may provide backend type specific implementations to synchronously trigger the notification related functionality in the backend (e.g., triggering actions, reading un-cached sensitive data, reading templates, etc.). The Inbound and Callback adapter are a logical couple for communicating with the backend systems. -
Outbound adapters 830 may be responsible for transferring the push notification to the consumption channels. There may be one adapter per technical channel (e.g., mobile, email). The adapter implementation can enrich the internal notification service data with additional channel specific data (e.g., form-factor configurations from thefrontend server 802 in the mobile scenario). -
Notification stores 832 store notifications that were received from the notification providers. Thestore 832 also contains lifecycle information (e.g., read, snoozed, etc.). It contains the notification content, which can safely be sent to non-secure communication channels like email or mobile push channels. - Templates may include text templates for generating the notification message. Templates may be stored in a template cache 834. Together with the notification data from the backend, the template engine may generate the messages for the different consumption channels. The templates (i.e., the way, the text is generated) are originated from the backend system. During the configuration time of the connected backend system, the relevant templates are replicated from the backend and cached in the template cache. The update can be triggered manually at a later time. In some implementations, the notification service may also implement a template editor (e.g., for backend systems, where no access is available). In this case, the Template Cache is not solely a cache but a primary persistence. An administrator may invalidate the cache.
- Sensitive content cache 836 stores information that is related to the notification store content. The sensitive content is decoupled from the non-sensitive content in order for the customer to be able to handle it differently (e.g., switching off caching for certain notification types or the lifetime of cached information). The content of the cache can be encrypted according to SEC97/106. The notification provider is responsible for classifying which parts of the notification have to be treated as sensitive and non-sensitive content.
Cache configurations 838, andconfigurations 840 contain all relevant configurations for the notification service. - In order to enable an application as a service provider the developer implements an interface from the
Notification API 806 in order to process the actions and deliver the notification types and sensitive texts. The developer may also register the implementation in theNotification API 806 for the specific provider and call a provided functionality from theNotification API 806. The notification provider also may deliver the intent for the intent based navigation on the consumption channel. Configurations done by an administrator may function to configure the landscape and the infrastructure including, but not limited to communication channels to/from the notification provider, service end point (notification service and Notification API), authentication, and protocol (e.g.,inbound adapter 826/callback adapter 828). - The notification service may provide functions and features to allow administrators and the IT responsible to reliably operate the system. This includes (but is not limited to) for example monitoring for delivered and stuck notifications, logging and tracing, manual deletion of notifications, resending of notifications, and/or invalidating cache.
-
FIG. 9 is an example swim lane diagram 900 depicting provision of messages using a notification service described herein. Thearchitecture 800 may carry out swim lane diagram 900. The components may include, but are not limited to, thelaunchpad 808, the mail/mobile 810/812, thenotification service 822, thebackend 804 andnotification processor 824. - A new notification is created by a notification provider, processed and sent 902 to various consumption channels (from the backend server 804). The notification is received 904 by the inbound adapter (e.g., notification service 822) belonging to the technical communication channel, then parsed by the adapter and provided to the
notification processor 824. - After the inbound handling, the notification processor further processes 906 the notification. The non-sensitive content and the administrative data are stored in the notification store. The sensitive content is stored in the sensitive content cache (via the cache handler). During this step, the template engine also processes the notification to create a non-sensitive version to be sent 908 to the non-secure channels (e.g., email or mobile).
- If an active frontend session with the Fiori Launchpad (FLP) 808 exists for a user, the FLP is notified 910 about new notifications. This enables the
FLP 808 to update the notification list, by calling back to the notification service for a notification delta. Since theFLP 808 is a secured channel, this information can contain sensitive content. Again, the template engine is used to create the notification content. In case there is no sensitive content cached on the notification service, the cache handler calls 912 the backend (via the callback adapter) to get the sensitive content. -
FIG. 10 is an example swim lane diagram depictingaction processing 1000 on notifications. To not force end-users to always navigate to the corresponding application, actions for processing 1002 the notification can directly be exposed in the notification center. Even though the diagram only shows the FLP as a trigger, it could be a mobile or email client as well. The processing trigger is received by the Notification Processor. The processor delegates the call to the backend system via to the callback adapter. After the action is processed 1004 in the backend, a (delete-) delta will be pushed 1006 to the notification service if processing the action results in the notification not being relevant any longer. - In order to improve the performance and avoid delays in updating the clients, a Delete on Action Flag may be introduced in the notification protocol. With that flag, the notification provider could inform 1008 the notification service, that the message can be deleted directly after the action was triggered.
- In order to allow the customer to control the lifecycle of the sensitive content, it may be separated from the non-sensitive content and the administration data. With the separate handling of the sensitive data in a sensitive content cache, it is possible to provide notification type specific control over the caching.
- The lifecycle of a notification is primarily controlled by the notification provider. That means for example, if a workflow item is deleted or unassigned, the notification provider has to send a subsequent delta notification to the notification service. For handling the lifecycle of notification type information, there may be two types of changes: incompatible changes and compatible changes. Incompatible changes may include for example, adding parameters to the notification text. In this case already delivered notifications do not have enough information stored on the notification service to completely assemble the notification text. Compatible changes may include, for example, correcting typos in the template text.
- The template engine typically uses a template which harmonizes with the runtime information of a notification (i.e., number and type of parameters). Therefore, rather than just overwriting a notification type on the notification service, a new version may be created in case of incompatible changes. Thus, the old notifications can use proprietary templates and new notifications may be mapped to the latest version.
- In case of compatible changes, the information just needs to be re-fetched from the backend and the active version needs to be updated from that information.
- An invalidation will be triggered by an administrator via a report. That report typically supports (i.e., automatically determines), weather an incompatible or compatible change applies. This could be checked by calling back to the backend system and compare the notification type with the active one cached on the notification service based on a set of predefined rules.
- The end user may have additional capabilities to control the presentation and the handling of a notification in the FLP. Even though, these operations could be perceived as lifecycle operations, the changes are not driven by business logic or actions (e.g., approve, reject). The effect of operations is handled between the consumer and the notification service (e.g., snooze, stack, mark read, etc.). The status is kept on the notification level in the notification service. The availability of operations can depend on the notification type or can be specified by the notification provider via attributes in the contract.
- Stacking enables the user to perform mass actions on certain notification types. It may be identified by the backend if a notification type is stackable or not. If yes, the backend has to deliver the “stacked headline text” (e.g., “{x} new Leave Request to approve”) and the mass action texts (e.g., “Approve all”) in addition to the standard action texts (e.g., “Approve”).
- The stacking itself (i.e., interaction, triggering of actions) is a frontend capability (like Fiori Launchpad). The notification service does not provide stacking specific operations. That means for example, that the mass actions will result in single batched action calls for each notification item, rather than executing a “special” stack wrapper on the notification service. The notification service hast to make sure, though, that enough meta information is delivered, so that the frontend can handle the stacking properly.
- The end user may have the possibility to navigate to an appropriate Fiori application when clicking/tapping a notification. The navigation will be based on the intent based navigation concept, which will be used cross channel.
- The status of a notification should be synchronized across all consumption channels of a user. If a user, for example, removes a notification from his list on the mobile device, this should be reflected in the notification center on the FLP.
- The infrastructure described herein supports badges on the native mobile app as well as within the
Fiori Launchpad 808 to inform the user about new notifications. The UX design also distinguishes between read/unread notifications on the one hand side and new notifications on the other hand. The read state of a notification as kept with a notification instance and is set to true, if one of the following events occur the user performed an action on a notification, the user clicked the notification and triggered an intent based navigation, or the user performed a “Mark all as read” action if supported by the respective notification center (e.g. in Launchpad or native mobile). - The new state is the basis for the badge counting. It is not tracked with a notification instance, since the user is only interested in the number of new notifications (which he has not viewed yet). The notification service keeps a separate new-counter per user instead. This counter is incremented by one, as soon as a new notification for the user arrives and is set to zero (all viewed), as soon as the notification center in the Launchpad is opened. This number is shown as a badge on the notification center icon in FLP as well as a badge on the native mobile application.
-
FIG. 11 is an example swim lane diagram depicting aprocess 1100 for incrementing a badge counter. The following sequence describes the high level logic of incrementing the badge counter. When a notification is received 1102, the new-counter for every recipient is incremented by one. If the notification is pushed to a mobile device, the current new-counter is delivered 1106 per user to themobile infrastructure 1104. This can be used to show the badge number on the native mobile app. The online clients (like FLP) get notified (via a Web Socket based push) about the new notification and in addition to the delta list of notifications it has to read the current new-counter from the notification service via anOData request 1108. - In some implementations, particular rules can be established for notifications. An example rule may define when a counter is set to zero. For example, a counter may be set to zero when
- The counter is set to zero when a user clicks on notification icon to access Notification Center, when a User is in the notification Center, new notification arrives, navigating back to FLP or clicking Notification Icon, when a User is inside an app, High Priority Banner is shown, User clicks banner, counter is set to zero or minus one, when a User is on a mobile device, native notification is shown, tap on native notification will set counter to zero or minus one.
- Another example rule may define when a notification is displayed and viewed. For example, a notification may be considered viewed when a user clicks on notification icon to access Notification Center, when the User is in the notification Center, new notification arrives, when the User is inside an app, High Priority Banner is shown, User clicks banner, when the user is on a mobile device, native notification is shown, tap on native notification to navigate will set this item as viewed.
- Another example rule may define when a notification is read when the user clicks on notification to navigate to app and/or when the user clicks High Priority Banner, and/or when a user clicks native banner/alert, etc.
-
FIG. 12 is an example swim lane diagram depicting a process 1200 for resetting a badge counter. Resetting the badge counter can include a resetCounter function being called 1202 on by the notification service, after the user opens 1204 the notification center (either on mobile or desktop). This may reset the new counter for the user triggering the request. The information to delete the badge on the native app is sent 1206 to the mobile device as well. In addition, a notification, that the new counter changed, is pushed 1208 to all online clients (like FLP, via a WebSocket based push). This triggers re-reading of the news counter from the notification service via aget request 1210. By this logic the reset of the badge is synced to all online clients. - The end-to-end notification experience may leverage the native notification infrastructure (e.g. APNS on iOS). For enabling notifications on mobile channels and abstracting the specifics of the different mobile platforms, the notification service uses SAP's mobile platform (on premise or in the cloud). In order to overcome the APNS “certificate issue”, the HCPms Push Hub will be used (see [HCPmsPushHub]). In case users request a non-cloud based solution for routing notifications to own custom-specific packaged apps, one could also imagine that the SMP itself provides a solution for dealing with APNS and custom-certificates in the future.
- The SMP may be enabled to deliver a notification identified by the user name and intend based navigation target to the end user. The notification may be delivered, if the target application is installed on the user's device. In general, a notification delivered to a mobile device is technically bound to a native mobile app on that device.
- Since the notification, pushed to a mobile device, is usually processed by servers outside of an SAP network, the mobile push channel is considered as not secure. Therefore, the push notification can only contain non-sensitive content. Therefore the notification can actively pull the sensitive content from the notification service as soon as the user accesses the notification in the native notification center if the platform supports it.
- The integration of the backend with the notification service, as well as the integration of the frontend with the notification service should happen on the data level through services. That means, the notification provider does not provide any sort of UI snippets to be plugged into the notification center (FLP or native mobile). If further user interactions with the notification are requested, the user can navigate from the notification center to the registered Fiori app.
- The Provider Interface covers the communication between a notification provider and the notification service in both directions: On the one hand side it allows the notification provider to push new notifications to the notification service. This can ensure that the notification can call back to the notification provider to get cross-notification-instance specific content (e.g. notification type specific templates, mass texts for stacked notifications) and to trigger the execution of actions (e.g. approve, reject).
- The interface towards the consumer may provide pre-aggregated and processed notifications (e.g., language dependent, based on consumption channel specific templates). The interface may also contain links to operations and actions for the consumer to call back upon user interaction and should be prepared to support Web Socket based updates.
- The consumer API may be consumed by the Fiori Launchpad, by mobile apps, and in the future potentially by non Fiori apps, email plugins, or by consumers provided by customers and partners. Therefore OData may be used as the protocol for the provisioning.
-
FIG. 13 is an example of anotification list view 1300. As shown, thenotification list view 1300 can be arranged and/or organized bydate 1302, bynotification type 1304, or bypriority 1306. Here, the bydate 1302 option is selected. Eachnotification list 1300 are organized in date order. Each notification pertains to a different application available and provided within a computing device. In general, a list of notifications is associated with a user (or a user role). - In the
example notification 1308, a travel request notification is awaiting approval by the user associated with thenotification 1308. The user can select approve 1316 ordecline 1318. Other actions are possible. For example, an action to forward to another user may be provided. An action to make a change request to the timing of the travel request may also be provided. - Items can be added to the
list 1300 based on internal events within apps or systems. The list can display various types of notifications, which can all differ in terms of appearance, content, and functionality. In some implementations, the list is ordered by a timestamp (e.g., most recent notification first). The time stamp for a notification group may be based on the most recent notification within the group. - In some implementations, the notifications can include a priority indicator, a tap/click option to navigate to a particular relevant app or source associated with the notification, a read/unread status, an actionable notification item (e.g., perform tasks directly from the notification), scrolling, subscription based notification alerts (e.g., to KPIs or following a business object).
- In some implementations, the
notification list 1300 can be displayed and arranged bytype 1304. When the type is chosen, items in the list may appear as grouped notifications. Bulk actions can be hidden by an administrator for critical approvals. - In some implementations, on initial display, all items may be collapsed. The priority indicator may be presented at the notification group level. The highest priority of a single item defines group priority. In some implementations, a single item can appear as well when only one notification is in the list.
- In some implementations, a
priority 1306 sorting may be selected. The priority sorting may sort by reverse chronological order of when the message is received. Notifications may include attributes including, but not limited to title, description image/icon, author/source, timestamp, object status/priority, read/unread, action, operation, trigger to expand/contract/truncate notification. -
FIG. 14 is an illustration of anexample process 1400 for generating and displaying notifications, such asnotification 1300, for example. The notifications may be generated and displayed within any number of applications. Atblock 1402, theprocess 1400 may include detecting, with a processor, an availability of at least one notification available for display in the user interface. Atblock 1404, theprocess 1400 may include generating, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action. - At
block 1406, theprocess 1400 may include generating, with the processor and for the container, additional selectable actions and appending the additional selectable actions to the at least one selectable action. The additional selectable actions may be generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface. Example actions may include accept, reject, move, archive, respond, mark as low or high importance, elevate or de-elevate status, update document, etc. - At
block 1408, theprocess 1400 may include determining, with the processor, which display device type of a plurality of display device types in which the user interface is being accessed. For example, a tablet, a laptop, a mobile phone, a desktop or other computing device may be configured to display particular applications and notifications according to the display size, type, and/or display features. - At
block 1410, theprocess 1400 may include generating, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions. The container may be arranged for display according to the determined display device type. - In some implementations, the
process 1400 also includes displaying, in the user interface in a display location, the container, the display location determined based on the determined display device and a role associated with the at least one user. For example, particular containers holding notifications may be displayed in one area of a device based on device size and based on the user role being associated with performing particular actions associated with similar notifications. In some implementations, theprocess 1400 also includes the display location being predefined for the context determined to be associated with the at least one notification. - In some implementations, the
process 1400 also includes in response to detecting one or more additional notifications, generating a container for each of the one or more additional notifications, and generating, for display in the user interface, the container for each of the one or more additional notifications. Each container may depict a plurality of selectable action. Each container may be arranged for display according a determined display device providing the user interface. - In some implementations, the
process 1400 also includes the one or more additional notifications being provided from a plurality of source applications associated with at least one user accessing the user interface. The additional selectable actions may provide access to a plurality applications hosted outside of the user interface. - In some implementations, the
process 1400 also includes merging each notification received in the user interface into a list, displaying the list in a viewport and generating a plurality of actions that enable at least one bulk operation for the notifications in the list. In some implementations, theprocess 1400 also includes having the additional actions implemented upon selection within a respective notification. - In some implementations, the
process 1400 also includes having each display device type be associated with a different set of notification rules. the display device type may include a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device. - The various systems and techniques described herein may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The various techniques may implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine readable non-transitory storage device, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program, such as the computer program(s) described above, can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
- Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. Elements of a computer may include at least one processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer also may include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magnetooptical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of nonvolatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magnetooptical disks; and CDROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in special purpose logic circuitry.
- Implementations may be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation, or any combination of such backend, middleware, or frontend components. Components may be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
Claims (20)
1. A computer-implemented method for generating notifications in a user interface, the method comprising:
detecting, with a processor, an availability of at least one notification available for display in the user interface;
generating, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action;
generating, with the processor and for the container, additional selectable actions and appending the additional selectable actions to the at least one selectable action, the additional selectable actions being generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface;
determining, with the processor, a display device type in which the user interface is being accessed; and
generating, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions, the container being arranged for display according to the display device type.
2. The computer-implemented method of claim 1 , further comprising, displaying, in the user interface in a display location, the container, the display location determined based on the display device and a role associated with the at least one user.
3. The computer-implemented method of claim 2 , wherein the display location is predefined for the context determined to be associated with the at least one notification.
4. The computer-implemented method of claim 1 , further comprising:
in response to detecting one or more additional notifications,
generating a container for each of the one or more additional notifications; and
generating, for display in the user interface, the container for each of the one or more additional notifications, each container depicting a plurality of selectable action,
wherein each container is arranged for display according a display device providing the user interface.
5. The computer-implemented method of claim 4 , wherein the one or more additional notifications are provided from a plurality of source applications associated with at least one user accessing the user interface, the additional selectable actions providing access to a plurality applications hosted outside of the user interface.
6. The computer-implemented method of claim 1 , further comprising:
merging each notification received in the user interface into a list;
displaying the list in a viewport; and
generating a plurality of actions that enable at least one bulk operation for the notifications in the list.
7. The computer-implemented method of claim 1 , wherein the additional actions are implemented upon selection within a respective notification.
8. The computer-implemented method of claim 1 , wherein each display device type is associated with a different set of notification rules, the display device type including a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device.
9. A system for generating a user interface, the system comprising:
a shell container, executing in a web browser and providing a plurality of services for generating notifications in a user interface;
an application container, executing in the web browser, the application container and
at least one processor to programmed to,
obtain at least one notification,
provide, for display in a display device, the user interface depicting the at least one notification,
detect, with a processor, an availability of at least one notification available for display in the user interface,
generate, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action,
generate, with the processor and for the container, additional selectable actions and append the additional selectable actions to the at least one selectable action, the additional selectable actions being generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface,
determine, with the processor, a display device type in which the user interface is being accessed, and
generate, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions, the container being arranged for display according to the display device type.
10. The system of claim 9 , wherein the at least one processor is further programmed to display, in the user interface in a display location, the container, the display location determined based on the display device and a role associated with the at least one user.
11. The system of claim 9 , wherein the at least one processor is further programmed to:
in response to detecting one or more additional notifications,
generating a container for each of the one or more additional notifications; and
generating, for display in the user interface, the container for each of the one or more additional notifications, each container depicting a plurality of selectable action,
wherein each container is arranged for display according a display device providing the user interface.
12. The system of claim 9 , wherein the at least one processor is further programmed to:
merge each notification received in the user interface into a list;
display the list in a viewport; and
generate a plurality of actions that enable at least one bulk operation for the notifications in the list.
13. The system of claim 9 , wherein the additional actions are implemented upon selection within a respective notification.
14. The system of claim 9 , wherein each display device type is associated with a different set of notification rules, the display device type including a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device.
15. A computer program product for generating a plurality of notifications for display in a user interface, the computer program product being tangibly embodied on a non-transitory computer-readable storage medium and comprising instructions that, when executed by at least one computing device, are configured to cause the at least one computing device to:
obtain at least one notification;
provide, for display in a display device, the user interface depicting the at least one notification;
detect, with a processor, an availability of at least one notification available for display in the user interface;
generate, with the processor, a container for the at least one notification, the container being adapted to include the at least one notification and at least one selectable action;
generate, with the processor and for the container, additional selectable actions and append the additional selectable actions to the at least one selectable action, the additional selectable actions being generated based at least in part on a context determined to be associated with the at least one notification and at least one user accessing the user interface;
determine, with the processor, a display device type in which the user interface is being accessed; and
generate, for display in the user interface, the container depicting the at least one selectable action and the additional selectable actions, the container being arranged for display according to the display device type.
16. The computer program product of claim 15 , wherein the instructions, when executed by the at least one computing device, are configured to cause the at least one computing device to:
display, in the user interface in a display location, the container, the display location determined based on the display device and a role associated with the at least one user.
17. The computer program product of claim 15 , wherein the instructions, when executed by the at least one computing device, are configured to cause the at least one computing device to:
in response to detecting one or more additional notifications,
generate a container for each of the one or more additional notifications; and
generate, for display in the user interface, the container for each of the one or more additional notifications, each container depicting a plurality of selectable action,
wherein each container is arranged for display according a display device providing the user interface.
18. The computer program product of claim 15 , wherein the instructions, when executed by the at least one computing device, are configured to cause the at least one computing device to:
merge each notification received in the user interface into a list;
displaying the list in a viewport; and
generating a plurality of actions that enable at least one bulk operation for the notifications in the list.
19. The computer program product of claim 15 , wherein the additional actions are implemented upon selection within a respective notification.
20. The computer program product of claim 15 , wherein each display device type is associated with a different set of notification rules, the display device type including a display on any one of a mobile phone device, a tablet device, a laptop device, and a desktop device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/591,995 US20170329614A1 (en) | 2016-05-13 | 2017-05-10 | Notifications in multi application user interfaces |
Applications Claiming Priority (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662335892P | 2016-05-13 | 2016-05-13 | |
US201662335897P | 2016-05-13 | 2016-05-13 | |
US201662335879P | 2016-05-13 | 2016-05-13 | |
US201662335888P | 2016-05-13 | 2016-05-13 | |
US201662335887P | 2016-05-13 | 2016-05-13 | |
US201662335899P | 2016-05-13 | 2016-05-13 | |
US201662335883P | 2016-05-13 | 2016-05-13 | |
US201662335875P | 2016-05-13 | 2016-05-13 | |
US201662335895P | 2016-05-13 | 2016-05-13 | |
US201662335886P | 2016-05-13 | 2016-05-13 | |
US201662335873P | 2016-05-13 | 2016-05-13 | |
US15/591,995 US20170329614A1 (en) | 2016-05-13 | 2017-05-10 | Notifications in multi application user interfaces |
Publications (1)
Publication Number | Publication Date |
---|---|
US20170329614A1 true US20170329614A1 (en) | 2017-11-16 |
Family
ID=60294606
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/461,330 Active US10353534B2 (en) | 2016-05-13 | 2017-03-16 | Overview page in multi application user interface |
US15/462,084 Abandoned US20170329468A1 (en) | 2016-05-13 | 2017-03-17 | Application finder on multi application user interface |
US15/462,072 Active 2037-11-03 US10649611B2 (en) | 2016-05-13 | 2017-03-17 | Object pages in multi application user interface |
US15/591,989 Abandoned US20170329483A1 (en) | 2016-05-13 | 2017-05-10 | Viewport for multi application user interface |
US15/591,995 Abandoned US20170329614A1 (en) | 2016-05-13 | 2017-05-10 | Notifications in multi application user interfaces |
US15/591,999 Abandoned US20170344218A1 (en) | 2016-05-13 | 2017-05-10 | Launchpad for multi application user interface |
Family Applications Before (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/461,330 Active US10353534B2 (en) | 2016-05-13 | 2017-03-16 | Overview page in multi application user interface |
US15/462,084 Abandoned US20170329468A1 (en) | 2016-05-13 | 2017-03-17 | Application finder on multi application user interface |
US15/462,072 Active 2037-11-03 US10649611B2 (en) | 2016-05-13 | 2017-03-17 | Object pages in multi application user interface |
US15/591,989 Abandoned US20170329483A1 (en) | 2016-05-13 | 2017-05-10 | Viewport for multi application user interface |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/591,999 Abandoned US20170344218A1 (en) | 2016-05-13 | 2017-05-10 | Launchpad for multi application user interface |
Country Status (1)
Country | Link |
---|---|
US (6) | US10353534B2 (en) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180295227A1 (en) * | 2013-02-07 | 2018-10-11 | Tencent Technology (Shenzhen) Company Limited | Method, device and storage medium for setting position of function setting key of mobile terminal |
CN109697010A (en) * | 2018-11-22 | 2019-04-30 | 努比亚技术有限公司 | A kind of suspended window position control method, terminal and computer readable storage medium |
US10318253B2 (en) | 2016-05-13 | 2019-06-11 | Sap Se | Smart templates for use in multiple platforms |
US10346184B2 (en) | 2016-05-13 | 2019-07-09 | Sap Se | Open data protocol services in applications and interfaces across multiple platforms |
US10353534B2 (en) | 2016-05-13 | 2019-07-16 | Sap Se | Overview page in multi application user interface |
US10353564B2 (en) | 2015-12-21 | 2019-07-16 | Sap Se | Graphical user interface with virtual extension areas |
US10528440B2 (en) * | 2016-11-28 | 2020-01-07 | Sap Se | Metadata cataloging framework |
US10579238B2 (en) | 2016-05-13 | 2020-03-03 | Sap Se | Flexible screen layout across multiple platforms |
US20200084195A1 (en) * | 2017-03-08 | 2020-03-12 | Amazon Technologies, Inc. | Detecting digital certificate expiration through request processing |
US10915303B2 (en) | 2017-01-26 | 2021-02-09 | Sap Se | Run time integrated development and modification system |
US11119628B1 (en) * | 2015-11-25 | 2021-09-14 | Snap Inc. | Dynamic graphical user interface modification and monitoring |
US11200282B1 (en) * | 2018-03-22 | 2021-12-14 | Atlassian Pty Ltd. | Integrated views of multiple different computer program applications with action options |
US20220011911A1 (en) * | 2018-05-25 | 2022-01-13 | Palantir Technologies Inc. | Interactive display with workflow management system |
US11366868B1 (en) * | 2021-03-11 | 2022-06-21 | Google Llc | Notification of change of value in stale content |
US20220358428A1 (en) * | 2021-05-04 | 2022-11-10 | Honeywell International Inc. | User interaction and notification system |
US20230103361A1 (en) * | 2021-10-06 | 2023-04-06 | Saudi Arabian Oil Company | Supply Chain Alert Management |
US20230176711A1 (en) * | 2021-12-07 | 2023-06-08 | Google Llc | Immersive, multi-state Uni-Card |
US11694144B2 (en) * | 2018-07-19 | 2023-07-04 | Sage Intacct, Inc. | Automated identification and notification of performance trends |
US20230325045A1 (en) * | 2022-03-18 | 2023-10-12 | Zoho Corporation Private Limited | Presenting entity activities |
Families Citing this family (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11126978B1 (en) * | 2015-03-06 | 2021-09-21 | Wells Fargo Bank, N.A. | Status information for financial transactions |
CN105373381B (en) * | 2015-10-20 | 2020-08-21 | 惠州Tcl移动通信有限公司 | Manufacturing method and manufacturing system of desktop starter of mobile terminal |
US9858063B2 (en) | 2016-02-10 | 2018-01-02 | Vignet Incorporated | Publishing customized application modules |
US9928230B1 (en) | 2016-09-29 | 2018-03-27 | Vignet Incorporated | Variable and dynamic adjustments to electronic forms |
US10540661B2 (en) | 2016-05-13 | 2020-01-21 | Sap Se | Integrated service support tool across multiple applications |
USD846559S1 (en) * | 2016-07-21 | 2019-04-23 | Htc Corporation | Display screen with graphical user interface |
CN106899750A (en) * | 2016-08-03 | 2017-06-27 | 阿里巴巴集团控股有限公司 | Information displaying method based on card, information show the processing method and processing device of business |
US20180060092A1 (en) * | 2016-08-31 | 2018-03-01 | Microsoft Technology Licensing, Llc | Group Data and Priority in an Individual Desktop |
US10222776B2 (en) * | 2016-09-12 | 2019-03-05 | Linestream Technologies | Wizard for configuring a motor |
USD838278S1 (en) * | 2016-09-29 | 2019-01-15 | United Services Automobile Association (Usaa) | Display screen or portion thereof with a payday forecast graphical user interface |
USD829729S1 (en) * | 2016-09-29 | 2018-10-02 | United Services Automobile Association (Usaa) | Display screen or portion thereof with graphical user interface |
US10372443B2 (en) * | 2016-10-18 | 2019-08-06 | Oracle International Corporation | Multi-platform pattern-based user interfaces |
CA3041807A1 (en) * | 2016-10-26 | 2018-05-03 | New Pig Corporation | Spill risk assessment for liquid storage facilities |
US10635509B2 (en) | 2016-11-17 | 2020-04-28 | Sung Jin Cho | System and method for creating and managing an interactive network of applications |
JP6708110B2 (en) * | 2016-12-13 | 2020-06-10 | カシオ計算機株式会社 | Information processing device and program |
US11169673B2 (en) * | 2017-01-18 | 2021-11-09 | Michael E. Murphy | Systems and methods for intelligent layered interactive derived programmatic elements for fixed content |
US10346004B2 (en) * | 2017-01-18 | 2019-07-09 | Michael E Murphy | Systems and methods for intelligent layered interactive programmatic elements for fixed content |
EP3577547A4 (en) * | 2017-04-05 | 2020-10-28 | Microsoft Technology Licensing, LLC | Desktop launcher |
US20190034067A1 (en) * | 2017-07-28 | 2019-01-31 | Sap Se | Seamless user-directed configuration of applications during runtime |
USD834605S1 (en) * | 2017-09-06 | 2018-11-27 | Box, Inc. | Display screen or portion thereof with graphical user interface for display of open task drawer |
USD833472S1 (en) * | 2017-09-06 | 2018-11-13 | Box, Inc. | Display screen or portion thereof with graphical user interface for display of profile page |
USD833459S1 (en) * | 2017-09-06 | 2018-11-13 | Box, Inc. | Display screen or portion thereof with graphical user interface for display of content approval |
US11200034B2 (en) * | 2017-10-23 | 2021-12-14 | Open Text Sa Ulc | Universal application framework for streamlined frontend development of user interface applications |
USD916718S1 (en) * | 2017-10-30 | 2021-04-20 | Siemens Healthcare Gmbh | Display screen or portion thereof with a graphical user interface |
CN108228046A (en) * | 2017-11-29 | 2018-06-29 | 努比亚技术有限公司 | Flexible flexible terminal display control method, terminal and computer storage media |
CN109976840B (en) * | 2017-12-27 | 2022-03-04 | 航天信息股份有限公司 | Method and system for realizing multi-language automatic adaptation based on foreground and background separation platform |
EP3508970B1 (en) * | 2018-01-05 | 2023-07-12 | Canon Production Printing Holding B.V. | A dynamic user interface system and a method therefor |
JP7020927B2 (en) * | 2018-01-09 | 2022-02-16 | キヤノン株式会社 | Image forming device and its control method |
US10785340B2 (en) | 2018-01-25 | 2020-09-22 | Operr Technologies, Inc. | System and method for a convertible user application |
USD902219S1 (en) * | 2018-02-06 | 2020-11-17 | Dynamic Trend, Inc. | Display screen, or portion thereof, having a graphical user interface with an options trading visual aid |
USD896819S1 (en) * | 2018-02-06 | 2020-09-22 | Dynamic Trend, Inc. | Display screen, or portion thereof, having a graphical user interface with an options trading visual aid |
US10409584B1 (en) | 2018-02-09 | 2019-09-10 | American Megatrends International, Llc | Peripheral device firmware update using rest over IPMI interface firmware update module |
US10416988B1 (en) | 2018-02-09 | 2019-09-17 | American Megatrends International, Llc | Peripheral device firmware update using rest over IPMI interface firmware shell utility |
US10776286B1 (en) | 2018-02-09 | 2020-09-15 | American Megatrends International, Llc | Rest over IPMI interface for firmware to BMC communication |
US10572242B1 (en) * | 2018-02-09 | 2020-02-25 | American Megatrends International, Llc | Firmware update using rest over IPMI interface |
US10489142B1 (en) | 2018-02-09 | 2019-11-26 | American Megatrends International, Llc | Secure firmware integrity monitoring using rest over IPMI interface |
US10649792B1 (en) | 2018-02-09 | 2020-05-12 | American Megatrends International, Llc | Cloning of firmware configuration settings using rest over IPMI interface |
US10628176B1 (en) | 2018-02-09 | 2020-04-21 | American Megatrends International, Llc | Firmware configuration using REST over IPMI interface |
US10956533B1 (en) | 2018-03-20 | 2021-03-23 | Amdocs Development Limited | System, method, and computer program for real-time HTML rendering of windows applications |
USD873842S1 (en) * | 2018-03-23 | 2020-01-28 | Martell Broadcasting Systems, Inc. | Display screen with transitional search results user interface |
US20190324776A1 (en) * | 2018-04-18 | 2019-10-24 | Microsoft Technology Licensing, Llc | Dynamic management of interface elements based on bound control flow |
USD892829S1 (en) * | 2018-04-20 | 2020-08-11 | Adp, Llc | Display screen or a portion thereof with an animated graphical user interface |
USD892149S1 (en) * | 2018-04-20 | 2020-08-04 | Adp, Llc | Display screen or a portion thereof with an animated graphical user interface |
USD892148S1 (en) * | 2018-04-20 | 2020-08-04 | Adp, Llc | Display screen or a portion thereof with an animated graphical user interface |
US10824401B2 (en) * | 2018-04-30 | 2020-11-03 | MphasiS Limited | Method and system for automated creation of graphical user interfaces |
US10327098B1 (en) * | 2018-04-30 | 2019-06-18 | Paypal, Inc. | Locations platform for managing and providing of user experiences |
US10740246B2 (en) * | 2018-05-10 | 2020-08-11 | Sap Se | Storage of an inverted index in non-volatile memory |
USD869491S1 (en) | 2018-06-03 | 2019-12-10 | Apple Inc. | Electronic device with graphical user interface |
USD933672S1 (en) | 2018-06-03 | 2021-10-19 | Apple Inc. | Display screen or portion thereof with animated graphical user interface |
US10740121B2 (en) * | 2018-06-22 | 2020-08-11 | Sap Se | User interface for navigating multiple applications |
US10775974B2 (en) * | 2018-08-10 | 2020-09-15 | Vignet Incorporated | User responsive dynamic architecture |
EP3844700A4 (en) | 2018-08-27 | 2021-08-25 | Box, Inc. | Activity-based application recommendations |
CN109165366A (en) * | 2018-09-27 | 2019-01-08 | 上海哔哩哔哩科技有限公司 | List display method of adjustment, device and storage medium based on selected object |
US11158423B2 (en) | 2018-10-26 | 2021-10-26 | Vignet Incorporated | Adapted digital therapeutic plans based on biomarkers |
CN114397980A (en) * | 2018-11-26 | 2022-04-26 | 华为技术有限公司 | Application display method and electronic equipment |
USD896241S1 (en) | 2018-12-03 | 2020-09-15 | Illumina, Inc. | Display screen or portion thereof with graphical user interface |
US11232172B2 (en) | 2018-12-04 | 2022-01-25 | Sap Se | Collaborative web application and data system |
US10838744B2 (en) * | 2018-12-04 | 2020-11-17 | Sap Se | Web component design and integration system |
USD902946S1 (en) * | 2019-01-31 | 2020-11-24 | Salesforce.Com, Inc. | Display screen or portion thereof with graphical user interface |
US10762990B1 (en) | 2019-02-01 | 2020-09-01 | Vignet Incorporated | Systems and methods for identifying markers using a reconfigurable system |
US11893095B2 (en) * | 2019-03-18 | 2024-02-06 | Bank Of America Corporation | Graphical user interface environment providing a unified enterprise digital desktop platform |
CN109948102B (en) * | 2019-03-27 | 2021-05-25 | 维沃移动通信有限公司 | Page content editing method and terminal |
CN109960561B (en) * | 2019-03-29 | 2022-04-26 | 北京金山云网络技术有限公司 | Page element display method and device and electronic equipment |
USD910674S1 (en) * | 2019-03-29 | 2021-02-16 | Amesite Inc. | Display screen or portion thereof with graphical user interface |
USD930677S1 (en) * | 2019-03-29 | 2021-09-14 | Amesite Inc. | Display screen or a portion thereof with graphical user interface |
US11128587B2 (en) | 2019-05-13 | 2021-09-21 | Sap Se | Enterprise messaging using a virtual message broker |
USD913324S1 (en) | 2019-05-29 | 2021-03-16 | Apple Inc. | Display screen or portion thereof with animated graphical user interface |
USD931298S1 (en) | 2019-05-30 | 2021-09-21 | Apple Inc. | Display screen or portion thereof with graphical user interface |
CN110297636B (en) * | 2019-07-03 | 2023-06-27 | 广州鲁邦通物联网科技股份有限公司 | Page automatic generation and parameter management method, system and device based on page configuration file |
US11132418B2 (en) * | 2019-08-01 | 2021-09-28 | Kindest, Inc. | Systems and methods for generating floating button interfaces on a web browser |
US11645344B2 (en) | 2019-08-26 | 2023-05-09 | Experian Health, Inc. | Entity mapping based on incongruent entity data |
US11733669B2 (en) * | 2019-09-27 | 2023-08-22 | Rockwell Automation Technologies, Inc. | Task based configuration presentation context |
US11366567B2 (en) | 2019-09-27 | 2022-06-21 | Rockwell Automation Technologies, Inc. | Preferential automation view curation |
USD958165S1 (en) * | 2019-10-24 | 2022-07-19 | Daktronics, Inc. | Portion of a display screen with a graphical user interface |
CN113076154B (en) * | 2020-01-03 | 2023-09-05 | 华为技术有限公司 | Method and device for splitting screen under multiple applications and electronic equipment |
US11185758B2 (en) | 2020-03-03 | 2021-11-30 | Sony Interactive Entertainment Inc. | Game console application with action cards |
US11413531B2 (en) | 2020-03-03 | 2022-08-16 | Sony Interactive Entertainment Inc. | Game console application with action card strand |
US11169665B2 (en) | 2020-03-03 | 2021-11-09 | Sony Interactive Entertainment Inc. | Game console user interface with application previews |
US11301273B2 (en) * | 2020-03-11 | 2022-04-12 | Atlassian Pty Ltd. | Computer user interface for a virtual workspace having multiple application portals displaying context-related content |
US11182054B2 (en) * | 2020-03-27 | 2021-11-23 | Coupang Corp. | Web-browser plugin for consolidating requested disaggregated information |
EP3885932A1 (en) | 2020-03-27 | 2021-09-29 | Tata Consultancy Services Limited | Method and device for dynamic viewport generation to enhance viewport usability |
IL297858A (en) | 2020-05-01 | 2023-01-01 | Monday Com Ltd | Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices |
CN111399947B (en) * | 2020-06-02 | 2020-09-04 | 平安国际智慧城市科技股份有限公司 | Application program guide page optimization pushing method and device and computer equipment |
USD948535S1 (en) * | 2020-06-22 | 2022-04-12 | Apple Inc. | Display screen or portion thereof with graphical user interface |
US11379089B2 (en) | 2020-07-02 | 2022-07-05 | Servicenow, Inc. | Adaptable user interface layout for applications |
US11620182B2 (en) | 2020-08-31 | 2023-04-04 | Bank Of America Corporation | System for resolution of technical issues using computing system-specific contextual data |
US11763919B1 (en) | 2020-10-13 | 2023-09-19 | Vignet Incorporated | Platform to increase patient engagement in clinical trials through surveys presented on mobile devices |
CN112256370A (en) * | 2020-10-20 | 2021-01-22 | 北京字跳网络技术有限公司 | Information display method and device and electronic equipment |
CN112286607B (en) * | 2020-10-27 | 2023-09-08 | 北京奇艺世纪科技有限公司 | View control method and device |
CN114579901A (en) * | 2020-11-16 | 2022-06-03 | 华为技术有限公司 | Method and device for converting front-end component and back-end component |
US11307749B1 (en) * | 2021-01-13 | 2022-04-19 | Dell Products L.P. | Managing content of a user interface |
US11893213B2 (en) | 2021-01-14 | 2024-02-06 | Monday.com Ltd. | Digital processing systems and methods for embedded live application in-line in a word processing document in collaborative work systems |
US11592962B2 (en) * | 2021-01-29 | 2023-02-28 | Salesforce, Inc. | Online tool graphical user interface with tiles |
US11301538B1 (en) * | 2021-02-18 | 2022-04-12 | Atlassian Pty Ltd. | Data management in multi-application web pages |
CN113238723A (en) * | 2021-04-02 | 2021-08-10 | 福州智象信息技术有限公司 | Dynamic rotation method, device, equipment and medium for display screen |
USD968456S1 (en) * | 2021-04-05 | 2022-11-01 | Chemtreat, Inc | Portion of a monitor display with graphical user interface |
USD968457S1 (en) * | 2021-04-05 | 2022-11-01 | Chemtreat, Inc | Portion of a monitor display with graphical user interface |
JP2023002900A (en) * | 2021-06-23 | 2023-01-11 | ヤンマーホールディングス株式会社 | Management method, management terminal, and management system |
US11487406B1 (en) * | 2021-09-01 | 2022-11-01 | Microsoft Technology Licensing, Llc | Windowing container |
CN113821292A (en) * | 2021-09-22 | 2021-12-21 | 联想(北京)有限公司 | Information processing method and device, electronic equipment and storage medium |
US11928239B2 (en) | 2021-09-30 | 2024-03-12 | Sap Se | Sensitive data management system |
US11705230B1 (en) | 2021-11-30 | 2023-07-18 | Vignet Incorporated | Assessing health risks using genetic, epigenetic, and phenotypic data sources |
US11901083B1 (en) | 2021-11-30 | 2024-02-13 | Vignet Incorporated | Using genetic and phenotypic data sets for drug discovery clinical trials |
US11899912B2 (en) * | 2022-04-07 | 2024-02-13 | Sap Se | Smart filtering in an overview page |
US20240100428A1 (en) * | 2022-09-26 | 2024-03-28 | Microsoft Technology Licensing, Llc | Systems and methods for presenting visual content |
US11966565B1 (en) | 2023-04-17 | 2024-04-23 | International Business Machines Corporation | Mobile device task views based on contextual learning |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154232A1 (en) * | 2002-01-08 | 2003-08-14 | Joerg Beringer | Facilitating improved workflow |
US6750885B1 (en) * | 2000-01-31 | 2004-06-15 | Journyx, Inc. | Time keeping and expense tracking server that interfaces with a user based upon a user's atomic abilities |
US20080163099A1 (en) * | 2006-12-28 | 2008-07-03 | Oracle International Corporation | Drill down functionality in a dashboard application |
US20090113310A1 (en) * | 2007-10-26 | 2009-04-30 | International Business Machines Corporation | Role tailored portal solution integrating near real-time metrics, business logic, online collaboration, and web 2.0 content |
US20120117507A1 (en) * | 2008-01-30 | 2012-05-10 | Google Inc. | Notification of Mobile Device Events |
US20130024760A1 (en) * | 2011-07-21 | 2013-01-24 | Sap Ag | Personalized Dashboard Architecture |
US20130067365A1 (en) * | 2011-09-13 | 2013-03-14 | Microsoft Corporation | Role based user interface for limited display devices |
US20140123072A1 (en) * | 2012-09-28 | 2014-05-01 | Oracle International Corporation | System for navigation in a computer user interface |
US20140351744A1 (en) * | 2013-05-22 | 2014-11-27 | Samsung Electronics Co., Ltd. | Method of operating notification screen and electronic device supporting the same |
US20170123397A1 (en) * | 2015-10-30 | 2017-05-04 | Rockwell Automation Technologies, Inc. | Automated creation of industrial dashboards and widgets |
US9807145B2 (en) * | 2013-05-10 | 2017-10-31 | Successfactors, Inc. | Adaptive tile framework |
Family Cites Families (149)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5097533A (en) | 1988-11-29 | 1992-03-17 | International Business Machines Corporation | System and method for interfacing computer application programs written in different languages to a software system |
US5754174A (en) * | 1992-08-27 | 1998-05-19 | Starfish Software, Inc. | User interface with individually configurable panel interfaces for use in a computer system |
US5517663A (en) | 1993-03-22 | 1996-05-14 | Kahn; Kenneth M. | Animated user interface for computer program creation, control and execution |
AU1258195A (en) | 1993-11-17 | 1995-06-06 | Collegeview | Method and apparatus for displaying three-dimensional animated characters upon a computer monitor's screen |
US5682469A (en) | 1994-07-08 | 1997-10-28 | Microsoft Corporation | Software platform having a real world interface with animated characters |
US6393495B1 (en) | 1995-11-21 | 2002-05-21 | Diamond Multimedia Systems, Inc. | Modular virtualizing device driver architecture |
US5727950A (en) | 1996-05-22 | 1998-03-17 | Netsage Corporation | Agent based instruction system and method |
US6021403A (en) | 1996-07-19 | 2000-02-01 | Microsoft Corporation | Intelligent user assistance facility |
US5877759A (en) | 1997-03-26 | 1999-03-02 | Netscape Communications Corporation | Interface for user/agent interaction |
US6025841A (en) | 1997-07-15 | 2000-02-15 | Microsoft Corporation | Method for managing simultaneous display of multiple windows in a graphical user interface |
US6128603A (en) * | 1997-09-09 | 2000-10-03 | Dent; Warren T. | Consumer-based system and method for managing and paying electronic billing statements |
US6088731A (en) | 1998-04-24 | 2000-07-11 | Associative Computing, Inc. | Intelligent assistant for use with a local computer and with the internet |
US6085184A (en) | 1998-12-22 | 2000-07-04 | Ac Properties B.V. | System, method and article of manufacture for a dynamic toolbar in a tutorial system |
US6751606B1 (en) | 1998-12-23 | 2004-06-15 | Microsoft Corporation | System for enhancing a query interface |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US7028264B2 (en) * | 1999-10-29 | 2006-04-11 | Surfcast, Inc. | System and method for simultaneous display of multiple information sources |
US20020005865A1 (en) | 1999-12-17 | 2002-01-17 | Barbara Hayes-Roth | System, method, and device for authoring content for interactive agents |
JP4402797B2 (en) | 2000-03-02 | 2010-01-20 | 株式会社日立製作所 | Information processing device |
US20010054066A1 (en) | 2000-06-13 | 2001-12-20 | Louis Spitzer | Apparatus and method for transmitting information from signage to portable computing device, and system utilizing same |
JP2002024285A (en) | 2000-06-30 | 2002-01-25 | Sanyo Electric Co Ltd | Method and device for user support |
WO2002007091A2 (en) | 2000-07-14 | 2002-01-24 | Haltsymptoms.Com, Inc. | Electronic navigation of information associated with parts of a living body |
US6912719B2 (en) | 2000-08-08 | 2005-06-28 | International Business Machines Corporation | Type descriptor metamodel |
US7275079B2 (en) | 2000-08-08 | 2007-09-25 | International Business Machines Corporation | Common application metamodel including C/C++ metamodel |
US6915523B2 (en) | 2000-08-08 | 2005-07-05 | International Business Machines Corporation | PL/I metamodel |
JP2002082749A (en) | 2000-09-07 | 2002-03-22 | Sony Corp | Information processor, application software executing method, and recording medium |
JP2002091971A (en) | 2000-09-11 | 2002-03-29 | Sony Corp | Agent system, method/device for providing information and data recording medium |
US6788313B1 (en) | 2000-09-28 | 2004-09-07 | International Business Machines Corporation | Method and apparatus for providing on line help for custom application interfaces |
US7478047B2 (en) | 2000-11-03 | 2009-01-13 | Zoesis, Inc. | Interactive character system |
US20040133606A1 (en) | 2003-01-02 | 2004-07-08 | Z-Force Communications, Inc. | Directory aggregation for files distributed over a plurality of servers in a switched file system |
US20040056878A1 (en) | 2001-01-30 | 2004-03-25 | Lau Johnny Sya Chung | Digital assistants |
US20020149611A1 (en) | 2001-04-11 | 2002-10-17 | May Julian S. | Emoticons |
US20030028498A1 (en) | 2001-06-07 | 2003-02-06 | Barbara Hayes-Roth | Customizable expert agent |
US20030023752A1 (en) | 2001-07-12 | 2003-01-30 | International Business Machines Corporation | Pluggable URL providers in a J2EE server |
US7920682B2 (en) | 2001-08-21 | 2011-04-05 | Byrne William J | Dynamic interactive voice interface |
US20030093508A1 (en) | 2001-10-18 | 2003-05-15 | Seiko Epson Corporation | System for installing and launching network applications |
US7913183B2 (en) * | 2002-10-08 | 2011-03-22 | Microsoft Corporation | System and method for managing software applications in a graphical user interface |
US7024417B1 (en) | 2002-11-14 | 2006-04-04 | Hyperion Solutions Corporation | Data mining framework using a signature associated with an algorithm |
US7707544B2 (en) | 2002-12-05 | 2010-04-27 | Bea Systems, Inc. | System and method for generating and reusing software application code with source definition files |
US7849175B2 (en) | 2002-12-23 | 2010-12-07 | Sap Ag | Control center pages |
US9009595B2 (en) | 2003-02-05 | 2015-04-14 | Joseph P. Catanese | User manipulation of video feed to computer screen regions |
US7797146B2 (en) | 2003-05-13 | 2010-09-14 | Interactive Drama, Inc. | Method and system for simulated interactive conversation |
US7895234B2 (en) | 2003-09-22 | 2011-02-22 | Rockwell Automation Technologies, Inc. | Systems and methods for sharing portal configurations |
US20070067373A1 (en) | 2003-11-03 | 2007-03-22 | Steven Higgins | Methods and apparatuses to provide mobile applications |
US7818742B2 (en) | 2004-05-21 | 2010-10-19 | Bea Systems, Inc. | Portal federated applications and portal federated web applications |
JP4459735B2 (en) | 2004-06-30 | 2010-04-28 | 本田技研工業株式会社 | Product explanation robot |
US7739695B2 (en) | 2004-07-19 | 2010-06-15 | Sap Ag | Computer implemented method and system for running a plurality of business processes |
US20060041848A1 (en) | 2004-08-23 | 2006-02-23 | Luigi Lira | Overlaid display of messages in the user interface of instant messaging and other digital communication services |
US8145601B2 (en) | 2004-09-09 | 2012-03-27 | Microsoft Corporation | Method, system, and apparatus for providing resilient data transfer in a data protection system |
US7769709B2 (en) | 2004-09-09 | 2010-08-03 | Microsoft Corporation | Method, system, and apparatus for creating an archive routine for protecting data in a data protection system |
FR2876197B1 (en) | 2004-10-01 | 2006-12-22 | Bull Sa Sa | METHOD FOR THE FLEXIBLE MANAGEMENT OF MULTIPLE ACTIVITIES EXECUTED ON PARTITIONABLE PLATFORMS OF A MULTI-PROCESSOR SYSTEM |
US7797338B2 (en) | 2004-12-09 | 2010-09-14 | Aol Inc. | System and method for facilitating personalization of applications based on anticipation of users' interests |
US7827026B2 (en) | 2004-12-21 | 2010-11-02 | Xerox Corporation | Bilingual authoring assistant for the “tip of the tongue” problem |
US7933399B2 (en) | 2005-03-22 | 2011-04-26 | At&T Intellectual Property I, L.P. | System and method for utilizing virtual agents in an interactive voice response application |
US7603375B2 (en) | 2005-03-30 | 2009-10-13 | Siebel Systems, Inc. | System and method for generating a custom application |
GB0507801D0 (en) | 2005-04-19 | 2005-05-25 | Ibm | A system for processing a request to a portlet |
US20060253791A1 (en) | 2005-05-03 | 2006-11-09 | Kuiken David P | Simplified interactive graphical user interfaces for sorting through a stack of overlapping windows on a display in order along the Z (depth) axis |
US20060271398A1 (en) | 2005-05-26 | 2006-11-30 | Jamie Belcastro | Web-based pharmacist |
US7546547B2 (en) | 2005-05-26 | 2009-06-09 | International Business Machines Corporation | Method, apparatus and computer program product for implementing automatic reapportionment of graphical subwindows based upon sensed, dynamic changes |
US8225231B2 (en) * | 2005-08-30 | 2012-07-17 | Microsoft Corporation | Aggregation of PC settings |
US20070083821A1 (en) | 2005-10-07 | 2007-04-12 | International Business Machines Corporation | Creating viewports from selected regions of windows |
US7966269B2 (en) | 2005-10-20 | 2011-06-21 | Bauer James D | Intelligent human-machine interface |
US7930681B2 (en) | 2005-12-30 | 2011-04-19 | Sap Ag | Service and application management in information technology systems |
US7739310B1 (en) | 2006-01-03 | 2010-06-15 | Emc Corporation | Extensible portlet templates |
US20080155409A1 (en) | 2006-06-19 | 2008-06-26 | Andy Santana | Internet search engine |
US20080127220A1 (en) | 2006-06-30 | 2008-05-29 | Robert Paul Morris | Methods, systems, and computer program products for creating an input-value-specific loadable instance of an application |
US8869027B2 (en) * | 2006-08-04 | 2014-10-21 | Apple Inc. | Management and generation of dashboards |
US20080096533A1 (en) | 2006-10-24 | 2008-04-24 | Kallideas Spa | Virtual Assistant With Real-Time Emotions |
US8555176B2 (en) | 2007-03-12 | 2013-10-08 | Microsoft Corporation | Third party menus for enabling collaboration |
JP4692529B2 (en) | 2007-08-07 | 2011-06-01 | セイコーエプソン株式会社 | Graphical user interface device |
US7796022B2 (en) | 2007-12-18 | 2010-09-14 | Birtcher Brandon R | Notification in a virtual receptionist method and system |
US8037110B2 (en) | 2007-12-27 | 2011-10-11 | Microsoft Corporation | Business data access client for online/offline client use |
US9003059B2 (en) | 2008-03-31 | 2015-04-07 | Microsoft Technology Licensing, Llc | Running applications in an online or offline mode based on the availability of the connection to the remote web server |
US20090327911A1 (en) | 2008-06-27 | 2009-12-31 | Sanjay Ningune | Method and system for customizing access to a resource |
US7862744B2 (en) * | 2008-07-23 | 2011-01-04 | Mamtek International Limited | Methods and systems for preparing materials for sucralose production |
US9202171B2 (en) | 2008-11-11 | 2015-12-01 | Digideal Corporation | Virtual game assistant based on artificial intelligence |
US9111007B2 (en) | 2009-02-04 | 2015-08-18 | Jataayu Software Limited | Adaptive rendering of a webpage on an electronic display device |
US10241752B2 (en) | 2011-09-30 | 2019-03-26 | Apple Inc. | Interface for a virtual digital assistant |
US9858925B2 (en) | 2009-06-05 | 2018-01-02 | Apple Inc. | Using context information to facilitate processing of commands in a virtual assistant |
US20130219333A1 (en) | 2009-06-12 | 2013-08-22 | Adobe Systems Incorporated | Extensible Framework for Facilitating Interaction with Devices |
US8631481B2 (en) | 2009-12-18 | 2014-01-14 | France Telecom | Access to a network for distributing digital content |
US8964013B2 (en) | 2009-12-31 | 2015-02-24 | Broadcom Corporation | Display with elastic light manipulator |
US8799765B1 (en) | 2010-02-01 | 2014-08-05 | Inkling Systems, Inc. | Systems for sharing annotations and location references for same for displaying the annotations in context with an electronic document |
US8856672B2 (en) | 2010-05-11 | 2014-10-07 | Microsoft Corporation | Integrated user interface controls for web dialogs |
US9552123B1 (en) | 2010-05-27 | 2017-01-24 | Amazon Technologies, Inc. | Integrating applications in a portal |
US8776097B2 (en) | 2010-09-15 | 2014-07-08 | Myspace, Llc | Dynamic native binding for managed assemblies |
US8635464B2 (en) | 2010-12-03 | 2014-01-21 | Yacov Yacobi | Attribute-based access-controlled data-storage system |
US20120158521A1 (en) | 2010-12-15 | 2012-06-21 | Mccullen Nicholas | System and Method for Personalized Secure Website Portal |
US9164776B2 (en) | 2010-12-22 | 2015-10-20 | Sap Ag | Dynamic determination of navigation targets in a flexible user interface environment |
US9201631B2 (en) | 2011-01-27 | 2015-12-01 | Amplifier Marketing Pty Limited | Method and system for providing content |
US9003297B2 (en) | 2011-02-17 | 2015-04-07 | Mworks Worldwide, Inc. | Integrated enterprise software and social network system user interfaces utilizing cloud computing infrastructures and single secure portal access |
US9760566B2 (en) | 2011-03-31 | 2017-09-12 | Microsoft Technology Licensing, Llc | Augmented conversational understanding agent to identify conversation context between two humans and taking an agent action thereof |
US10642934B2 (en) | 2011-03-31 | 2020-05-05 | Microsoft Technology Licensing, Llc | Augmented conversational understanding architecture |
US20130086473A1 (en) | 2011-09-30 | 2013-04-04 | Sap Ag | Central access launch center for web based scenarios |
US9158520B2 (en) | 2011-12-07 | 2015-10-13 | Yahoo! Inc. | Development of platform independent applications |
JP5792607B2 (en) | 2011-12-09 | 2015-10-14 | 株式会社ソニー・コンピュータエンタテインメント | Image processing apparatus and image processing method |
KR101408168B1 (en) | 2011-12-09 | 2014-06-17 | 도시바삼성스토리지테크놀러지코리아 주식회사 | Apparatus and method for providing graphic user interface |
US9836177B2 (en) | 2011-12-30 | 2017-12-05 | Next IT Innovation Labs, LLC | Providing variable responses in a virtual-assistant environment |
US20130204813A1 (en) | 2012-01-20 | 2013-08-08 | Fluential, Llc | Self-learning, context aware virtual assistants, systems and methods |
US9088634B1 (en) | 2012-05-07 | 2015-07-21 | Amazon Technologies, Inc. | Dynamic media transcoding at network edge |
US8781293B2 (en) | 2012-08-20 | 2014-07-15 | Gorilla Technology Inc. | Correction method for object linking across video sequences in a multiple camera video surveillance system |
US9449348B2 (en) | 2012-08-28 | 2016-09-20 | Facebook, Inc. | Providing a locality viewport through a social networking system |
US9430211B2 (en) | 2012-08-31 | 2016-08-30 | Jpmorgan Chase Bank, N.A. | System and method for sharing information in a private ecosystem |
US9576574B2 (en) | 2012-09-10 | 2017-02-21 | Apple Inc. | Context-sensitive handling of interruptions by intelligent digital assistant |
US9032045B1 (en) | 2012-09-25 | 2015-05-12 | Amazon Technologies, Inc. | Systems and methods for using a uniform resource locator to call for different types of content |
US9059974B2 (en) | 2012-12-21 | 2015-06-16 | Mobile Iron, Inc. | Secure mobile app connection bus |
TWI547158B (en) | 2013-01-29 | 2016-08-21 | Acti Corp | Integrate multiple images in a single summary window |
KR102225942B1 (en) | 2013-02-28 | 2021-03-10 | 엘지전자 주식회사 | Apparatus and method for processing a multimedia commerce service |
US20150012399A1 (en) * | 2013-03-14 | 2015-01-08 | Bill.Com, Inc. | System and Method for Enhanced Access and Control for Modification of Auto-Learned Conflict Resolution and Related Rule and Value Replacements |
JP5950282B2 (en) | 2013-05-13 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Apparatus and method for generating a user interface |
IN2013DE01423A (en) * | 2013-05-14 | 2015-07-10 | Sap Ag | |
US10481981B2 (en) | 2013-06-19 | 2019-11-19 | Virtual Forge GmbH | System and method for automatic correction of a database configuration in case of quality defects |
US9665270B2 (en) | 2013-06-28 | 2017-05-30 | Sap Se | Layout algorithm for entity relation model diagram |
US9483328B2 (en) | 2013-07-19 | 2016-11-01 | Twilio, Inc. | System and method for delivering application content |
US9258668B2 (en) * | 2013-07-31 | 2016-02-09 | Sap Se | Mobile application framework extensibiilty |
US9176801B2 (en) | 2013-09-06 | 2015-11-03 | Sap Se | Advanced data models containing declarative and programmatic constraints |
US9225515B2 (en) | 2013-09-13 | 2015-12-29 | Sap Portals Israel Ltd | Shared portal context session |
US20150089403A1 (en) | 2013-09-20 | 2015-03-26 | Jin You ZHU | Dynamic generation of user interface |
US10095471B2 (en) | 2013-09-20 | 2018-10-09 | Oracle International Corporation | Context aware voice interface for computing devices |
US20150278868A1 (en) | 2013-11-26 | 2015-10-01 | Google Inc. | Systems and methods for identifying and exposing content element density and congestion |
US9870202B2 (en) | 2013-12-05 | 2018-01-16 | Sap Se | Business object model layer interface |
US8978010B1 (en) | 2013-12-18 | 2015-03-10 | Sap Ag | Pruning compilation dependency graphs |
US10445769B2 (en) | 2013-12-24 | 2019-10-15 | Google Llc | Systems and methods for audience measurement |
US9830044B2 (en) | 2013-12-31 | 2017-11-28 | Next It Corporation | Virtual assistant team customization |
WO2015105994A1 (en) | 2014-01-08 | 2015-07-16 | Callminer, Inc. | Real-time conversational analytics facility |
US20150206169A1 (en) | 2014-01-17 | 2015-07-23 | Google Inc. | Systems and methods for extracting and generating images for display content |
US9483780B2 (en) | 2014-03-27 | 2016-11-01 | Google Inc. | Providing content using integrated objects |
KR102213190B1 (en) | 2014-05-26 | 2021-02-05 | 삼성전자 주식회사 | Method for arranging home screen and electronic device thereof |
US9223549B1 (en) | 2014-06-30 | 2015-12-29 | Sap Ag | User interface generation using a model layer |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US9720889B1 (en) | 2014-07-10 | 2017-08-01 | Google Inc. | Systems and methods for detecting auto-redirecting online content |
US9740462B2 (en) | 2014-08-27 | 2017-08-22 | Sap Se | Adaptive, context-aware, model-based suggestions |
US20160070580A1 (en) | 2014-09-09 | 2016-03-10 | Microsoft Technology Licensing, Llc | Digital personal assistant remote invocation |
US9917923B2 (en) | 2014-09-26 | 2018-03-13 | Oracle International Corporation | Building message relationships for offline operation of an enterprise application |
US20160092883A1 (en) | 2014-09-30 | 2016-03-31 | Jutta Weber | Timeline-based visualization and handling of a customer |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
US9578173B2 (en) | 2015-06-05 | 2017-02-21 | Apple Inc. | Virtual assistant aided communication with 3rd party service in a communication session |
US9933931B2 (en) | 2015-06-23 | 2018-04-03 | Microsoft Technology Licensing Llc | Freeze pane with snap scrolling |
US10628420B2 (en) | 2015-12-18 | 2020-04-21 | Ca, Inc. | Dynamic virtual service |
US10230812B1 (en) | 2016-01-29 | 2019-03-12 | Amazon Technologies, Inc. | Dynamic allocation of subtitle packaging |
US10523693B2 (en) | 2016-04-14 | 2019-12-31 | Radware, Ltd. | System and method for real-time tuning of inference systems |
US10579238B2 (en) | 2016-05-13 | 2020-03-03 | Sap Se | Flexible screen layout across multiple platforms |
US20170331915A1 (en) | 2016-05-13 | 2017-11-16 | Sap Se | Providing an offline mode for applications and interfaces across multiple platforms |
US10318253B2 (en) | 2016-05-13 | 2019-06-11 | Sap Se | Smart templates for use in multiple platforms |
US10346184B2 (en) | 2016-05-13 | 2019-07-09 | Sap Se | Open data protocol services in applications and interfaces across multiple platforms |
US20170329466A1 (en) | 2016-05-13 | 2017-11-16 | Sap Se | User interface application and digital assistant |
US10353534B2 (en) | 2016-05-13 | 2019-07-16 | Sap Se | Overview page in multi application user interface |
US10007936B1 (en) | 2016-12-27 | 2018-06-26 | Valutrend Corporation | Product review platform based on social connections |
US10331425B2 (en) | 2017-06-28 | 2019-06-25 | Google Llc | Automated source code adaption to inject features between platform versions |
US11138277B2 (en) | 2017-08-21 | 2021-10-05 | Airship Group, Inc. | Delivery of personalized platform-specific content using a single URL |
-
2017
- 2017-03-16 US US15/461,330 patent/US10353534B2/en active Active
- 2017-03-17 US US15/462,084 patent/US20170329468A1/en not_active Abandoned
- 2017-03-17 US US15/462,072 patent/US10649611B2/en active Active
- 2017-05-10 US US15/591,989 patent/US20170329483A1/en not_active Abandoned
- 2017-05-10 US US15/591,995 patent/US20170329614A1/en not_active Abandoned
- 2017-05-10 US US15/591,999 patent/US20170344218A1/en not_active Abandoned
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6750885B1 (en) * | 2000-01-31 | 2004-06-15 | Journyx, Inc. | Time keeping and expense tracking server that interfaces with a user based upon a user's atomic abilities |
US20030154232A1 (en) * | 2002-01-08 | 2003-08-14 | Joerg Beringer | Facilitating improved workflow |
US20080163099A1 (en) * | 2006-12-28 | 2008-07-03 | Oracle International Corporation | Drill down functionality in a dashboard application |
US20090113310A1 (en) * | 2007-10-26 | 2009-04-30 | International Business Machines Corporation | Role tailored portal solution integrating near real-time metrics, business logic, online collaboration, and web 2.0 content |
US20120117507A1 (en) * | 2008-01-30 | 2012-05-10 | Google Inc. | Notification of Mobile Device Events |
US20130024760A1 (en) * | 2011-07-21 | 2013-01-24 | Sap Ag | Personalized Dashboard Architecture |
US20130067365A1 (en) * | 2011-09-13 | 2013-03-14 | Microsoft Corporation | Role based user interface for limited display devices |
US20140123072A1 (en) * | 2012-09-28 | 2014-05-01 | Oracle International Corporation | System for navigation in a computer user interface |
US9807145B2 (en) * | 2013-05-10 | 2017-10-31 | Successfactors, Inc. | Adaptive tile framework |
US20140351744A1 (en) * | 2013-05-22 | 2014-11-27 | Samsung Electronics Co., Ltd. | Method of operating notification screen and electronic device supporting the same |
US20170123397A1 (en) * | 2015-10-30 | 2017-05-04 | Rockwell Automation Technologies, Inc. | Automated creation of industrial dashboards and widgets |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447843B2 (en) * | 2013-02-07 | 2019-10-15 | Tencent Technology (Shenzhen) Company Limited | Method, device and storage medium for setting position of function setting key of mobile terminal |
US20180295227A1 (en) * | 2013-02-07 | 2018-10-11 | Tencent Technology (Shenzhen) Company Limited | Method, device and storage medium for setting position of function setting key of mobile terminal |
US11573684B2 (en) | 2015-11-25 | 2023-02-07 | Snap Inc. | Dynamic graphical user interface modification and monitoring |
US11119628B1 (en) * | 2015-11-25 | 2021-09-14 | Snap Inc. | Dynamic graphical user interface modification and monitoring |
US10353564B2 (en) | 2015-12-21 | 2019-07-16 | Sap Se | Graphical user interface with virtual extension areas |
US10649611B2 (en) | 2016-05-13 | 2020-05-12 | Sap Se | Object pages in multi application user interface |
US10318253B2 (en) | 2016-05-13 | 2019-06-11 | Sap Se | Smart templates for use in multiple platforms |
US10346184B2 (en) | 2016-05-13 | 2019-07-09 | Sap Se | Open data protocol services in applications and interfaces across multiple platforms |
US10353534B2 (en) | 2016-05-13 | 2019-07-16 | Sap Se | Overview page in multi application user interface |
US10579238B2 (en) | 2016-05-13 | 2020-03-03 | Sap Se | Flexible screen layout across multiple platforms |
US10528440B2 (en) * | 2016-11-28 | 2020-01-07 | Sap Se | Metadata cataloging framework |
US10915303B2 (en) | 2017-01-26 | 2021-02-09 | Sap Se | Run time integrated development and modification system |
US20200084195A1 (en) * | 2017-03-08 | 2020-03-12 | Amazon Technologies, Inc. | Detecting digital certificate expiration through request processing |
US11621948B2 (en) * | 2017-03-08 | 2023-04-04 | Amazon Technologies, Inc. | Detecting digital certificate expiration through request processing |
US11200282B1 (en) * | 2018-03-22 | 2021-12-14 | Atlassian Pty Ltd. | Integrated views of multiple different computer program applications with action options |
US20220011911A1 (en) * | 2018-05-25 | 2022-01-13 | Palantir Technologies Inc. | Interactive display with workflow management system |
US11694144B2 (en) * | 2018-07-19 | 2023-07-04 | Sage Intacct, Inc. | Automated identification and notification of performance trends |
CN109697010A (en) * | 2018-11-22 | 2019-04-30 | 努比亚技术有限公司 | A kind of suspended window position control method, terminal and computer readable storage medium |
US11366868B1 (en) * | 2021-03-11 | 2022-06-21 | Google Llc | Notification of change of value in stale content |
US20220350847A1 (en) * | 2021-03-11 | 2022-11-03 | Google Llc | Notification of change of value in stale content |
US11809510B2 (en) * | 2021-03-11 | 2023-11-07 | Google Llc | Notification of change of value in stale content |
US20220358446A1 (en) * | 2021-05-04 | 2022-11-10 | Honeywell International Inc. | Device-specific productivity enhancements |
US20220358440A1 (en) * | 2021-05-04 | 2022-11-10 | Honeywell International Inc. | Mobile device based productivity improvements |
US20220358444A1 (en) * | 2021-05-04 | 2022-11-10 | Honeywell International Inc. | Device-based productivity system |
US20220358428A1 (en) * | 2021-05-04 | 2022-11-10 | Honeywell International Inc. | User interaction and notification system |
US20230103361A1 (en) * | 2021-10-06 | 2023-04-06 | Saudi Arabian Oil Company | Supply Chain Alert Management |
US20230176711A1 (en) * | 2021-12-07 | 2023-06-08 | Google Llc | Immersive, multi-state Uni-Card |
US11829579B2 (en) * | 2021-12-07 | 2023-11-28 | Google Llc | Immersive, multi-state Uni-Card |
US20240045571A1 (en) * | 2021-12-07 | 2024-02-08 | Google Llc | Immersive, Multi-State Uni-Card |
US20230325045A1 (en) * | 2022-03-18 | 2023-10-12 | Zoho Corporation Private Limited | Presenting entity activities |
Also Published As
Publication number | Publication date |
---|---|
US20170344218A1 (en) | 2017-11-30 |
US20170329479A1 (en) | 2017-11-16 |
US20170329468A1 (en) | 2017-11-16 |
US10649611B2 (en) | 2020-05-12 |
US20170329483A1 (en) | 2017-11-16 |
US20170329500A1 (en) | 2017-11-16 |
US10353534B2 (en) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170329614A1 (en) | Notifications in multi application user interfaces | |
US10740121B2 (en) | User interface for navigating multiple applications | |
US11003630B2 (en) | Remote access of metadata for collaborative documents | |
US11615162B2 (en) | Event listening integration in a collaborative electronic information system | |
US10318253B2 (en) | Smart templates for use in multiple platforms | |
US10540661B2 (en) | Integrated service support tool across multiple applications | |
CN108604155B (en) | Managing messages between users to collaboratively edit an electronic document | |
EP3244301A1 (en) | User interface application and digital assistant | |
KR101916488B1 (en) | Extensible system action for sharing while remaining in context | |
US10769350B2 (en) | Document link previewing and permissioning while composing an email | |
US20170331915A1 (en) | Providing an offline mode for applications and interfaces across multiple platforms | |
US20170329505A1 (en) | Transferring parameters in applications and interfaces across multiple platforms | |
EP3497561B1 (en) | User interface extender | |
US9195519B2 (en) | Disabling the self-referential appearance of a mobile application in an intent via a background registration | |
EP3255909A1 (en) | Messaging application interacting with one or more extension applications | |
EP3944641A1 (en) | Message extension app store | |
EP4130968A1 (en) | Optimization schemes for controlling user interfaces through gesture or touch | |
US20210304142A1 (en) | End-user feedback reporting framework for collaborative software development environments | |
US20160125527A1 (en) | Financial Information Management System and User Interface | |
US9495364B2 (en) | Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform | |
JP2020004280A (en) | Display control apparatus, display control method and display control program | |
WO2023147425A1 (en) | Automatic canvas creation associated with a group-based communication channel | |
Liu et al. | MUIT: a middleware for adaptive mobile web-based user interfaces in WS-BPEL | |
US11606321B1 (en) | System for generating automated responses for issue tracking system and multi-platform event feeds | |
US11880342B2 (en) | Embedded reference object and interaction within a visual collaboration system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
AS | Assignment |
Owner name: SAP SE, GERMANY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SCHON, JAMILA;KRENKLER, MICHAEL;JANN, FLORIAN;AND OTHERS;SIGNING DATES FROM 20180530 TO 20180608;REEL/FRAME:046064/0313 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |