HISTORY PREVIEW AND SHORTCUT TO RESTORE A WORK SCENE FOR A REMOTE APP

A computing system includes a computing device configured to select a remote app to be launched based on user input, and display a history record of the selected remote app. The history record provides a preview of items previously handled by the user with the remote app. One of the items is selected based on user input. An operation record server is configured to store app history data provided by the remote app corresponding to the items previously handled by the user with the remote app. The remote app is launched with the app history data associated with the selected item so that the remote app is restored back to the item previously handled by the user.

Technical Field

The present disclosure relates to computing systems, and more particularly, to a computing system that launches a remote app restored to an item previously handled by the remote app.

BACKGROUND

In a typical work day, users are able to access an ever-increasing amount of information through their computing devices. This information is readily accessible from a wide range of workspace resources, one category of which is applications. These applications can be SaaS apps and web apps, which may also be referred to as remote apps.

When a user returns to their computing device, the user is able to view a recent apps area in their workspace. The recent apps area allows a user to launch the apps and access previous items handled by the user with the apps.

SUMMARY

A server includes a memory configured to store app history data provided by a remote app corresponding to items previously handled by a user of a computing device with the remote app. A processor is coupled to the memory and is configured to synch the app history data with the computing device to provide a history record of the remote app. The history record may provide a preview of the items previously handled by the user with the remote app.

The processor may receive from the computing device user selection of one of the items previously handled by the user with the remote app. The remote app is then launched with the app history data associated with the selected item so that the remote app is restored back to the item previously handled by the user.

The memory may receive the app history data form the remote app in response to the user of the computing device closing the remote app. The memory may not receive the app history data while the user is performing a task with the restored selected item. The stored app history data is updated each time the remote app is closed.

The app history data may include metadata. The app history data may further include a respective title for each item previously handled by the user with the remote app, and wherein synching the app history data may be based on providing the respective title for each item to the computing device.

The respective title for each item may be linked to the app history data associated with that item. The history record may include the respective title for each item, with the preview of the items previously handled by the user including the respective title for each item. The user selection of one of the items received by the processor may correspond to the respective title associated with the selected item.

Each item previously handled by the user of the computing device is based on the remote app receiving user input so that activities are performed by the remote app. The remote app may be a SaaS app or a web app.

Another aspect is directed to a method for operating the operation record sever as described above. The method includes storing app history data provided by a remote app corresponding to items previously handled by a user of a computing device with the remote app. The app history data is synched with the computing device to provide a history record of the remote app, with the history record providing a preview of the items previously handled by the user with the remote app. User selection of one of the items previously handled by the user with the remote app is received from the computing device. The method further includes launching the remote app with the app history data associated with the selected item so that the remote app is restored back to the item previously handled by the user.

Yet another aspect is directed to a computing system comprising a computing device and an operation record server. The computing device is configured select a remote app to be launched based on user input, and display a history record of the selected remote app. The history record provides a preview of items previously handled by the user with the remote app. The user then selects one of the displayed items based on user input.

The operation record server is configured to store app history data provided by the remote app corresponding to the items previously handled by the user with the remote app. The remote app is launched with the app history data associated with the selected item so that the remote app is restored back to the item previously handled by the user.

DETAILED DESCRIPTION

Referring initially toFIG.1, a non-limiting network environment10in which various aspects of the disclosure may be implemented includes one or more client machines12A-12N, one or more remote machines16A-16N, one or more networks14,14′, and one or more appliances18installed within the computing environment10. The client machines12A-12N communicate with the remote machines16A-16N via the networks14,14′.

In some embodiments, the client machines12A-12N communicate with the remote machines16A-16N via an intermediary appliance18. The illustrated appliance18is positioned between the networks14,14′ and may also be referred to as a network interface or gateway. In some embodiments, the appliance18may operate as an application delivery controller (ADC) to provide clients with access to business applications and other data deployed in a data center, the cloud, or delivered as Software as a Service (SaaS) across a range of client devices, and/or provide other functionality such as load balancing, etc. In some embodiments, multiple appliances18may be used, and the appliance(s)18may be deployed as part of the network14and/or14′.

The client machines12A-12N may be generally referred to as client machines12, local machines12, clients12, client nodes12, client computers12, client devices12, computing devices12, endpoints12, or endpoint nodes12. The remote machines16A-16N may be generally referred to as servers16or a server farm16. In some embodiments, a client device12may have the capacity to function as both a client node seeking access to resources provided by a server16and as a server16providing access to hosted resources for other client devices12A-12N. The networks14,14′ may be generally referred to as a network14. The networks14may be configured in any combination of wired and wireless networks.

In some embodiments, a server16may execute a remote presentation services program or other program that uses a thin-client or a remote-display protocol to capture display output generated by an application executing on a server16and transmit the application display output to a client device12.

In yet other embodiments, a server16may execute a virtual machine providing, to a user of a client device12, access to a computing environment. The client device12may be a virtual machine. The virtual machine may be managed by, for example, a hypervisor, a virtual machine manager (VMM), or any other hardware virtualization technique within the server16.

In some embodiments, the network14may be: a local-area network (LAN); a metropolitan area network (MAN); a wide area network (WAN); a primary public network14; and a primary private network14. Additional embodiments may include a network14of mobile telephone networks that use various protocols to communicate among mobile devices. For short range communications within a wireless local-area network (WLAN), the protocols may include802.11, Bluetooth, and Near Field Communication (NFC).

FIG.2depicts a block diagram of a computing device20useful for practicing an embodiment of client devices12, appliances18and/or servers16. The computing device20includes one or more processors22, volatile memory24(e.g., random access memory (RAM)), non-volatile memory30, user interface (UI)38, one or more communications interfaces26, and a communications bus48.

The user interface38may include a graphical user interface (GUI)40(e.g., a touchscreen, a display, etc.) and one or more input/output (I/O) devices42(e.g., a mouse, a keyboard, a microphone, one or more speakers, one or more cameras, one or more biometric scanners, one or more environmental sensors, and one or more accelerometers, etc.).

The non-volatile memory30stores an operating system32, one or more applications34, and data36such that, for example, computer instructions of the operating system32and/or the applications34are executed by processor(s)22out of the volatile memory24. In some embodiments, the volatile memory24may include one or more types of RAM and/or a cache memory that may offer a faster response time than a main memory. Data may be entered using an input device of the GUI40or received from the I/O device(s)42. Various elements of the computer20may communicate via the communications bus48.

The illustrated computing device20is shown merely as an example client device or server, and may be implemented by any computing or processing environment with any type of machine or set of machines that may have suitable hardware and/or software capable of operating as described herein.

The processor22may be analog, digital or mixed-signal. In some embodiments, the processor22may be one or more physical processors, or one or more virtual (e.g., remotely located or cloud) processors. A processor including multiple processor cores and/or multiple processors may provide functionality for parallel, simultaneous execution of instructions or for parallel, simultaneous execution of one instruction on more than one piece of data.

The communications interfaces26may include one or more interfaces to enable the computing device20to access a computer network such as a Local Area Network (LAN), a Wide Area Network (WAN), a Personal Area Network (PAN), or the Internet through a variety of wired and/or wireless connections, including cellular connections.

In described embodiments, the computing device20may execute an application on behalf of a user of a client device. For example, the computing device20may execute one or more virtual machines managed by a hypervisor. Each virtual machine may provide an execution session within which applications execute on behalf of a user or a client device, such as a hosted desktop session. The computing device20may also execute a terminal services session to provide a hosted desktop environment. The computing device20may provide access to a remote computing environment including one or more applications, one or more desktop applications, and one or more desktop sessions in which one or more applications may execute.

An example virtualization server16may be implemented using Citrix Hypervisor provided by Citrix Systems, Inc., of Fort Lauderdale, Florida (“Citrix Systems”). Virtual app and desktop sessions may further be provided by Citrix Virtual Apps and Desktops (CVAD), also from Citrix Systems. Citrix Virtual Apps and Desktops is an application virtualization solution that enhances productivity with universal access to virtual sessions including virtual app, desktop, and data sessions from any device, plus the option to implement a scalable VDI solution. Virtual sessions may further include Software as a Service (SaaS) and Desktop as a Service (DaaS) sessions, for example.

Referring toFIG.3, a cloud computing environment50is depicted, which may also be referred to as a cloud environment, cloud computing or cloud network. The cloud computing environment50can provide the delivery of shared computing services and/or resources to multiple users or tenants. For example, the shared resources and services can include, but are not limited to, networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, databases, software, hardware, analytics, and intelligence.

In the cloud computing environment50, one or more clients52A-52C (such as those described above) are in communication with a cloud network54. The cloud network54may include backend platforms, e.g., servers, storage, server farms or data centers. The users or clients52A-52C can correspond to a single organization/tenant or multiple organizations/tenants. More particularly, in one example implementation the cloud computing environment50may provide a private cloud serving a single organization (e.g., enterprise cloud). In another example, the cloud computing environment50may provide a community or public cloud serving multiple organizations/tenants. In still further embodiments, the cloud computing environment50may provide a hybrid cloud that is a combination of a public cloud and a private cloud. Public clouds may include public servers that are maintained by third parties to the clients52A-52C or the enterprise/tenant. The servers may be located off-site in remote geographical locations or otherwise.

The cloud computing environment50can provide resource pooling to serve multiple users via clients52A-52C through a multi-tenant environment or multi-tenant model with different physical and virtual resources dynamically assigned and reassigned responsive to different demands within the respective environment. The multi-tenant environment can include a system or architecture that can provide a single instance of software, an application or a software application to serve multiple users. In some embodiments, the cloud computing environment50can provide on-demand self-service to unilaterally provision computing capabilities (e.g., server time, network storage) across a network for multiple clients52A-52C. The cloud computing environment50can provide an elasticity to dynamically scale out or scale in responsive to different demands from one or more clients52. In some embodiments, the computing environment50can include or provide monitoring services to monitor, control and/or generate reports corresponding to the provided shared services and resources.

In some embodiments, the cloud computing environment50may provide cloud-based delivery of different types of cloud computing services, such as Software as a service (SaaS)56, Platform as a Service (PaaS)58, Infrastructure as a Service (IaaS)60, and Desktop as a Service (DaaS)62, for example. IaaS may refer to a user renting the use of infrastructure resources that are needed during a specified time period. IaaS providers may offer storage, networking, servers or virtualization resources from large pools, allowing the users to quickly scale up by accessing more resources as needed. Examples of IaaS include AMAZON WEB SERVICES provided by Amazon.com, Inc., of Seattle, Washington, RACKSPACE CLOUD provided by Rackspace US, Inc., of San Antonio, Tex., Google Compute Engine provided by Google Inc. of Mountain View, Calif., or RIGHTSCALE provided by RightScale, Inc., of Santa Barbara, Calif.

PaaS providers may offer functionality provided by IaaS, including, e.g., storage, networking, servers or virtualization, as well as additional resources such as, e.g., the operating system, middleware, or runtime resources. Examples of PaaS include WINDOWS AZURE provided by Microsoft Corporation of Redmond, Washington, Google App Engine provided by Google Inc., and HEROKU provided by Heroku, Inc. of San Francisco, Calif.

SaaS providers may offer the resources that PaaS provides, including storage, networking, servers, virtualization, operating system, middleware, or runtime resources. In some embodiments, SaaS providers may offer additional resources including, e.g., data and application resources. Examples of SaaS include GOOGLE APPS provided by Google Inc., SALESFORCE provided by Salesforce.com Inc. of San Francisco, Calif., or OFFICE 365 provided by Microsoft Corporation. Examples of SaaS may also include data storage providers, e.g. DROPBOX provided by Dropbox, Inc. of San Francisco, Calif., Microsoft ONEDRIVE provided by Microsoft Corporation, Google Drive provided by Google Inc., or Apple ICLOUD provided by Apple Inc. of Cupertino, Calif.

Similar to SaaS, DaaS (which is also known as hosted desktop services) is a form of virtual desktop infrastructure (VDI) in which virtual desktop sessions are typically delivered as a cloud service along with the apps used on the virtual desktop. Citrix Cloud is one example of a DaaS delivery platform. DaaS delivery platforms may be hosted on a public cloud computing infrastructure such as AZURE CLOUD from Microsoft Corporation of Redmond, Washington (herein “Azure”), or AMAZON WEB SERVICES provided by Amazon.com, Inc., of Seattle, Washington (herein “AWS”), for example. In the case of Citrix Cloud, Citrix Workspace app may be used as a single-entry point for bringing apps, files and desktops together (whether on-premises or in the cloud) to deliver a unified experience.

The unified experience provided by the Citrix Workspace app will now be discussed in greater detail with reference toFIG.4. The Citrix Workspace app will be generally referred to herein as the workspace app70. The workspace app70is how a user gets access to their workspace resources, one category of which is applications. These applications can be SaaS apps, web apps or virtual apps. The workspace app70also gives users access to their desktops, which may be a local desktop or a virtual desktop. Further, the workspace app70gives users access to their files and data, which may be stored in numerous repositories. The files and data may be hosted on Citrix ShareFile, hosted on an on-premises network file server, or hosted in some other cloud storage provider, such as Microsoft OneDrive or Google Drive Box, for example.

To provide a unified experience, all of the resources a user requires may be located and accessible from the workspace app70. The workspace app70is provided in different versions. One version of the workspace app70is an installed application for desktops72, which may be based on Windows, Mac or Linux platforms. A second version of the workspace app70is an installed application for mobile devices74, which may be based on iOS or Android platforms. A third version of the workspace app70uses a hypertext markup language (HTML) browser to provide a user access to their workspace environment. The web version of the workspace app70is used when a user does not want to install the workspace app or does not have the rights to install the workspace app, such as when operating a public kiosk76.

Each of these different versions of the workspace app70may advantageously provide the same user experience. This advantageously allows a user to move from client device72to client device74to client device76in different platforms and still receive the same user experience for their workspace. The client devices72,74and76are referred to as endpoints.

As noted above, the workspace app70supports Windows, Mac, Linux, iOS, and Android platforms as well as platforms with an HTML browser (HTML5). The workspace app70incorporates multiple engines80-90allowing users access to numerous types of app and data resources. Each engine80-90optimizes the user experience for a particular resource. Each engine80-90also provides an organization or enterprise with insights into user activities and potential security threats.

An embedded browser engine80keeps SaaS and web apps contained within the workspace app70instead of launching them on a locally installed and unmanaged browser. With the embedded browser, the workspace app70is able to intercept user-selected hyperlinks in SaaS and web apps and request a risk analysis before approving, denying, or isolating access.

A high definition experience (HDX) engine82establishes connections to virtual browsers, virtual apps and desktop sessions running on either Windows or Linux operating systems. With the HDX engine82, Windows and Linux resources run remotely, while the display remains local, on the endpoint. To provide the best possible user experience, the HDX engine82utilizes different virtual channels to adapt to changing network conditions and application requirements. To overcome high-latency or high-packet loss networks, the HDX engine82automatically implements optimized transport protocols and greater compression algorithms. Each algorithm is optimized for a certain type of display, such as video, images, or text. The HDX engine82identifies these types of resources in an application and applies the most appropriate algorithm to that section of the screen.

For many users, a workspace centers on data. A content collaboration engine84allows users to integrate all data into the workspace, whether that data lives on-premises or in the cloud. The content collaboration engine84allows administrators and users to create a set of connectors to corporate and user-specific data storage locations. This can include OneDrive, Dropbox, and on-premises network file shares, for example. Users can maintain files in multiple repositories and allow the workspace app70to consolidate them into a single, personalized library.

A networking engine86identifies whether or not an endpoint or an app on the endpoint requires network connectivity to a secured backend resource. The networking engine86can automatically establish a full VPN tunnel for the entire endpoint device, or it can create an app-specific p-VPN connection. A p-VPN defines what backend resources an application and an endpoint device can access, thus protecting the backend infrastructure. In many instances, certain user activities benefit from unique network-based optimizations. If the user requests a file copy, the workspace app70can automatically utilize multiple network connections simultaneously to complete the activity faster. If the user initiates a VoIP call, the workspace app70improves its quality by duplicating the call across multiple network connections. The networking engine86uses only the packets that arrive first.

An analytics engine88reports on the user's device, location and behavior, where cloud-based services identify any potential anomalies that might be the result of a stolen device, a hacked identity or a user who is preparing to leave the company. The information gathered by the analytics engine88protects company assets by automatically implementing counter-measures.

A management engine90keeps the workspace app70current. This not only provides users with the latest capabilities, but also includes extra security enhancements. The workspace app70includes an auto-update service that routinely checks and automatically deploys updates based on customizable policies.

Referring now toFIG.5, a workspace network environment100providing a unified experience to a user based on the workspace app70will be discussed. The desktop, mobile and web versions of the workspace app70all communicate with the workspace experience service102running within the Citrix Cloud104. The workspace experience service102then pulls in all the different resource feeds via a resource feed micro-service108. That is, all the different resources from other services running in the Citrix Cloud104are pulled in by the resource feed micro-service108. The different services may include a virtual apps and desktop service110, a secure browser service112, an endpoint management service114, a content collaboration service116, and an access control service118. Any service that an organization or enterprise subscribes to are automatically pulled into the workspace experience service102and delivered to the user's workspace app70.

In addition to cloud feeds120, the resource feed micro-service108can pull in on-premises feeds122. A cloud connector124is used to provide virtual apps and desktop deployments that are running in an on-premises data center. Desktop virtualization may be provided by Citrix virtual apps and desktops126, Microsoft RDS128or VMware Horizon130, for example. In addition to cloud feeds120and on-premises feeds122, device feeds132from Internet of Thing (IoT) devices134, for example, may be pulled in by the resource feed micro-service108. Site aggregation is used to tie the different resources into the user's overall workspace experience.

The cloud feeds120, on-premises feeds122and device feeds132each provides the user's workspace experience with a different and unique type of application. The workspace experience can support local apps, SaaS apps, virtual apps, and desktops browser apps, as well as storage apps. As the feeds continue to increase and expand, the workspace experience is able to include additional resources in the user's overall workspace. This means a user will be able to get to every single application that they need access to.

Still referring to the workspace network environment20, a series of events will be described on how a unified experience is provided to a user. The unified experience starts with the user using the workspace app70to connect to the workspace experience service102running within the Citrix Cloud104, and presenting their identity (event1). The identity includes a user name and password, for example.

The workspace experience service102forwards the user's identity to an identity micro-service140within the Citrix Cloud104(event2). The identity micro-service140authenticates the user to the correct identity provider142(event3) based on the organization's workspace configuration. Authentication may be based on an on-premises active directory144that requires the deployment of a cloud connector146. Authentication may also be based on Azure Active Directory148or even a third party identity provider150, such as Citrix ADC or Okta, for example.

Once authorized, the workspace experience service102requests a list of authorized resources (event4) from the resource feed micro-service108. For each configured resource feed106, the resource feed micro-service108requests an identity token (event5) from the single-sign micro-service152.

The resource feed specific identity token is passed to each resource's point of authentication (event6). On-premises resources122are contacted through the Citrix Cloud Connector124. Each resource feed106replies with a list of resources authorized for the respective identity (event7).

The resource feed micro-service108aggregates all items from the different resource feeds106and forwards (event8) to the workspace experience service102. The user selects a resource from the workspace experience service102(event9).

The workspace experience service102forwards the request to the resource feed micro-service108(event10). The resource feed micro-service108requests an identity token from the single sign-on micro-service152(event11). The user's identity token is sent to the workspace experience service102(event12) where a launch ticket is generated and sent to the user.

The user initiates a secure session to a gateway service160and presents the launch ticket (event13). The gateway service160initiates a secure session to the appropriate resource feed106and presents the identity token to seamlessly authenticate the user (event14). Once the session initializes, the user is able to utilize the resource (event15). Having an entire workspace delivered through a single access point or application advantageously improves productivity and streamlines common workflows for the user.

Referring now toFIG.6, a computer system300providing a shortcut to launch a remote app352restored back to an item previously handled by a user of a computing device310will now be discussed. The shortcut is based on displaying a history record322of the remote app352to the user of the computing device310. The history record322provides a preview of items previously handled by the user with the remote app352, and is synched with app history data342stored in an operation record server340.

In response to the user selecting a displayed item in the history record322, the operation record server340sends a launch command346to an app server350with the remote app352. The launch command346includes app history data342associated with the selected item. This allows the remote app352to be launched so that a work scene for the item previously handled by the user is restored.

The user is now able to continue where they left off with the selected item. Restoring the selected item previously handled by the user is advantageously performed without any additional user input after the user selects the item in the displayed history record322.

Without the above shortcut, additional steps are needed for a user to return to an item previously handled by the remote app352. Currently, when a user returns to their computing device310, the user is able to view a recent apps area in their workspace. The recent apps area allows a user to launch the apps and access previous items handled by the user with the apps.

For example, the user first opens the desired remote app that includes the item, and then navigates to a displayed title corresponding to the item. To restore the remote app to the item, the user selects a URL linked to the title or finds the title in a history list of the remote app itself.

As will be discussed in greater detail below, the user is able to restore a work scene in a remote app352by selecting the item from the displayed history record322of the remote app352. The selected item from the displayed history record322is synched with the app history data342stored in the operation record server340to provide the shortcut for launching the remote app352with the app history data342. The app history data342allows the remote app352to restore the work scene for the item previously handled by the user.

The illustrated computer system300includes the computing device310, the operation record server340, and the app server350providing the remote app352. Even though only one computing device310is illustrated, the computer system300typically includes a plurality of computing devices310. Such computing devices310generally operate within an enterprise or organization.

The remote app352may be a SaaS app or web app accessed by the user of the computing device310to perform various activities or tasks. The app is remote since it is not stored on the computing device310.

The remote app352, for example, may be used to create Jira tickets. Jira is provided by Atlassian, and is used for bug tracking, issue tracking, and project management. A ticket in Jira, or any other service desk platform, is an event that needs to be investigated or a work item that needs to be addressed.

Other example remote apps352include SalesForce provided by SalesForce.com, Inc. and Slack provided by Slack Technologies. SalesForce provides customer relationnship management (CRM) services, and Slack provides instant messaging within a workplace.

The operation record server340is in communications with the computing device310and the app server350. The operation record server340may be configured as a microservice within the enterprise or organization. A microservice is an architectural style that configures the function of the operation record server340as a set of small services. Each service runs in its own process. The services communicate with the computing device310and the app server350using lightweight protocols, often over messaging or HTTP.

The operation record server340includes an app history data database to store the collected app history data342on usage of the remote app352. The remote app352is instructed to collect the app history data354. In response to the user closing the remote app352, the collected app history data354is reported to the operation record server340for storage in the app history data database.

The remote app352is not modified, but instead, a rule is defined so that history data354on remote app usage is reported to an interface. In this case, the interface is associated with the operation record server340.

Using Jira as an example, the user accesses the remote app352to generate a Jira ticket with id JIRA-001. The remote app352collects app history data354on generation of the Jira ticket. When the user closes the remote app352, the collected app history data354is reported to the operation record server340.

The format of the app history data354may vary between different remote apps352. Still using the Jira ticket with id JIRA-001 as an example, the app history data354may be in the following format:

The above history view title is determined and generated by the remote app352, which is JIRA-001 in this example. The history metadata is a set of data that describes and gives information about other data within the JIRA-001 ticket. Many distinct types of metadata exist, including descriptive metadata, structural metadata, administrative metadata, reference metadata, statistical metadata and legal metadata.

For instance, the structural metadata is metadata about containers of data and indicates how compound objects are put together. It describes the types, versions, relationships and other characteristics of the JIRA-001 ticket. The reference metadata is information about the contents of the JIRA-001ticket. Since the app history data354is reported by the remote app352itself, this allows enough information to be reported to the operation record server340to restore the work scene to where the user left off.

The operation record server340synchs344the stored app history data342with the computing device310. The app history data342may be synched with the local workspace on the computing device310. The computing device310includes the workspace app70, as discussed above, which provides the local workspace. The workspace app70is executed by a processor312so that the user gets access to their workspace resources, one category of which is the remote apps352.

The workspace app70includes a browser316to access the remote app352. The browser316may be a managed browser. The source code in the managed browser364is modified to add functionality to synch318with the app history data342in the operation record server340. In one embodiment, the workspace app70uses the history view titles from the operation record server340to build up the titles for each item displayed in the history record322.

An example history record322of the remote app352will now be discussed in reference toFIG.7. The history record322is for a Jira remote application352previously accessed by the user of the computing device310. The history record322is displayed in response to the user using the input device324to position a cursor326over a Jira icon324representing the Jira remote app352.

The Jira icon324may be displayed in response to the user viewing the recent apps area328that is part of the local workspace330. The user selects or highlights the Jira remote app352by positioning the cursor326over the Jira icon324. The cursor326is an indicator used to show the current position for user interaction on the display320.

In response to the user positioning the cursor326over the Jira icon324, the history record322is displayed without user input. The history record322provides a preview of the items previously handled by the user with the Jira remote app352. In this example, the user previously reviewed or edited three Jira tickets: JIRA-001, JIRA-002 and JIRA-003.

The history record322includes the respective titles as determined by the Jira remote app352. The user selects one of the Jira tickets by moving the cursor326over the corresponding title, and clicking the input device324used to guide the cursor326.

A high level sequence diagram370showing operation of the computing system300is provided inFIG.8. To start, the remote app352reports history data354on usage of the remote app to the operation record server340at line372. The history data354is reported in response to the user of the computing device310closing the remote app352.

The operation record server340then synchs the app history data342with the local workspace330of the computing device310at line374. The local workspace330uses the history view titles from the app history data342to build up the titles in the history record322.

When the user wants to return to an item previously handled by the remote app352, the item is displayed in the record history322. The record history322is displayed in response to the user positioning a cursor326over the icon324of the remote app352.

The users selects the desired item displayed in the history record322. In response, the local workspace330sends metadata at line376associated with the synch app history data318for the selected item to the operation record server340. The metadata is a subset of the metadata associated with the app history data342being stored on the operation record server340.

The operation record server340uses the received metadata to send a launch command346to the remote app352at line378. The received metadata is associated with the corresponding metadata being stored on the operation record server340for the selected item. The remote app352is then launched with the metadata associated with the selected item so that the remote app352is restored to where the user last left off with the selected item.

A more detailed sequence diagram400showing operation of the computing system300is provided inFIG.9. The user first accesses and performs a task with the remote app352at line402. The browser316operating in the local workspace330of the computing device310communicates directly with the remote app352. That is, the operation record server340is bypassed.

The user closes the remote app352at line404when the user is finished performing tasks with the remote app352. In response to the remote app352being closed, the remote app reports app history data354on usage of the remote app at line406to the operation record server340. The app history data354as reported by the remote app352includes metadata associated with the tasks performed by the user with the remote app352.

The operation record server340at line408synchs the app history data342with the local workspace330. The local workspace330uses the metadata associated with the app history data342to generate the synched318app history data. The metadata includes, for example, the history view titles from the items handled by the user with the remote app352.

The closed remote app352now appears in the recent apps area328in the local workspace330at line410. When the user wants to return to an item previously handled by the remote app352, the user positions a cursor326over the icon324of the remote app352at line412. In response to the cursor326being position over the icon324, the history record322of the remote app352is displayed at line414.

The users selects the desired item displayed in the history record322at line416. In response, the local workspace330sends metadata associated with the synch app history data318for the selected item to the operation record server340at line418. This causes the remote app352to be launched with the metadata associated with the selected item so that the remote app352is restored to where the user last left off with the selected item. The user is now able to access and perform tasks with the restored selected item at line420.

Referring now toFIG.10, a flowchart450illustrating a method for operating the operation record server340will be discussed. From the start (Block452), the method includes storing app history data342at Block454. The app history data342is provided by a remote app352corresponding to items previously handled by a user of a computing device310with the remote app352.

The app history data342is synched with the computing device310at Block456. The synched app history data318provides a history record322of the remote app3523. The history record322provides a preview of the items previously handled by the user with the remote app352.

The operation record server340receives from the computing device310user selection of one of the items previously handled by the user with the remote app352at Block458. The remote app352is launched at Block460with the app history data342associated with the selected item so that the remote app352is restored back to the item previously handled by the user. The method ends at Block462.

As will be appreciated by one of skill in the art upon reading the above disclosure, various aspects described herein may be embodied as a device, a method or a computer program product (e.g., a non-transitory computer-readable medium having computer executable instruction for performing the noted operations or steps). Accordingly, those aspects may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects.

Furthermore, such aspects may take the form of a computer program product stored by one or more computer-readable storage media having computer-readable program code, or instructions, embodied in or on the storage media. Any suitable computer readable storage media may be utilized, including hard disks, CD-ROMs, optical storage devices, magnetic storage devices, and/or any combination thereof.

Many modifications and other embodiments will come to the mind of one skilled in the art having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is understood that the foregoing is not to be limited to the example embodiments, and that modifications and other embodiments are intended to be included within the scope of the appended claims.