Apparatus and method for report sharing within an instant messaging framework

A computer implemented method includes sending to a report server a first request for report content initiated by a first user. The report content is served to the first user. The report content is displayed to the first user. A second request from the first user is sent to the report server to share the report content with a second user. That the second user has permission to view the report content is confirmed. The report content is served and displayed to the second user.

BRIEF DESCRIPTION OF THE INVENTION

This invention relates generally to reporting and instant messaging. More particularly, this invention relates to sharing a report document in an interactive manner.

BACKGROUND OF THE INVENTION

Instant messaging refers to real time communication between two or more people over a network, such as the Internet. A user requires a client program and a connection to an instant messaging service. Usually the instant messaging service is administered by an instant messenger server. The composition and function of these servers are well known in the art. Once connected to an instant messaging service, users can send messages, including text and graphics, in real time. The activity is often referred to as “chatting”. A conversation can be held with two or more people on the same computer, network, or across the Internet.

Business Intelligence (BI) generally refers to software tools used to improve business enterprise decision-making. These tools are commonly applied to financial, human resource, marketing, sales, customer and supplier analyses. More specifically, these tools can include: reporting and analysis tools to present information; content delivery infrastructure systems for delivery and management of reports and analytics; data warehousing systems for cleansing and consolidating information from disparate sources; and data management systems, such as relational databases or On Line Analytic Processing (OLAP) systems used to collect, store, and manage raw data.

A subset of business intelligence tools are report generation tools. There are a number of commercially available products to produce reports from stored data. For instance, Business Objects Americas of San Jose, Calif., sells a number of widely used report generation products, including Crystal Reports™, Business Objects OLAP Intelligence™, Business Objects Web Intelligence™, and Business Objects Enterprise™. As used herein, the term report refers to information automatically retrieved (i.e., in response to computer executable instructions) from a data source (e.g., a database, a data warehouse, a plurality of reports, and the like), where the information is structured in accordance with a report schema that specifies the form in which the information should be presented. A non-report is an electronic document that is constructed without the automatic retrieval of information from a data source. Examples of non-report electronic documents include typical business application documents, such as a word processor document, a presentation document, and the like.

A report document specifies how to access data and format it. A report document where the content does not include external data, either saved within the report or accessed live, is a template document for a report rather than a report document. Unlike other non-report documents that may optionally import external data within a document, a report document by design is primarily a medium for accessing and formatting, transforming or presenting external data.

A report is specifically designed to facilitate working with external data sources. In addition to information regarding external data source connection drivers, the report may specify advanced filtering of data, information for combining data from different external data sources, information for updating join structures and relationships in report data, and logic to support a more complex internal data model (that may include additional constraints, relationships, and metadata).

In contrast to a spreadsheet, a report is generally not limited to a table structure but can support a range of structures, such as sections, cross-tables, synchronized tables, sub-reports, hybrid charts, and the like. A report is designed primarily to support imported external data, whereas a spreadsheet equally facilitates manually entered data and imported data. In both cases, a spreadsheet applies a spatial logic that is based on the table cell layout within the spreadsheet in order to interpret data and perform calculations on the data. In contrast, a report is not limited to logic that is based on the display of the data, but rather can interpret the data and perform calculations based on the original (or a redefined) data structure and meaning of the imported data. The report may also interpret the data and perform calculations based on pre-existing relationships between elements of imported data. Spreadsheets generally work within a looping calculation model, whereas a report may support a range of calculation models. Although there may be an overlap in the function of a spreadsheet document and a report document, these documents express different assumptions concerning the existence of an external data source and different logical approaches to interpreting and manipulating imported data.

The desire to share documents is frequently inconsistent with the need to keep the information in the documents secret. Commonly, two different users have different permission sets to view and change data.

To date, instant messaging, business intelligence, and particularly report generation techniques, have operated in different domains. It would be desirable to provide techniques to integrate these separate domains.

SUMMARY OF INVENTION

The invention includes a computer implemented method. A first request for report content initiated by a first user is sent to a report server. The report content is served to the first user. The report content is displayed to the first user. A second request from the first user is sent to the report server to share the report content with a second user. That the second user has permission to view the report content is confirmed. The report content is served and displayed to the second user.

The invention also includes a computer readable medium storing executable instructions to facilitate an instant messaging conversation between a first computer and a second computer on a network. A first request for a report specified by a first user of the first computer is processed. A first portion of the report is returned to the first computer. A second request to share the first portion of the report with a second user of the second computer is received. It is confirmed that the second user has permission to view the first portion of the report. The first portion of the report is served to the second computer.

The invention also includes a computer readable medium storing executable instructions to support at a first computer an instant messaging conversation with a second computer. Report content is displayed on the first computer. A request from the first computer to share the report content with a second computer is initiated. The first computer processes a command to grant access to the report content at the second computer.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1illustrates a system100configured in accordance with an embodiment of the invention. The system100includes one or more coupled computers, e.g., arranged in a peer-to-peer architecture. The system100includes a first computer130-A and a second computer130-B. A data signal can be sent from the first computer to the second computer and vice versa via communication channel140, which may be any wired or wireless channel.

Each computer130includes a central processing unit102connected to a set of input/output devices104and a network connection circuit106via a bus108. As shown inFIG. 1, computer130-A includes a CPU102-A, input/output devices104-A, a network connection circuit106-A, and a bus108-A, while computer130-B includes a CPU102-B, input/output devices104-B, a network connection circuit106-B, and a bus108-B. For the purpose of simplicity, individual components, e.g.,102-A and102-B, are collectively referenced only by their number, e.g.,102.

The input/output devices104may include standard components, such as a keyboard, mouse, display, printer, and the like. The network connection circuit106provides connectivity to communication channel140.

Also connected to the bus108is a memory110. The memory110stores executable instructions to implement operations of the invention. In an embodiment, the memory110stores one or more of the following modules: a graphical user interface (GUI) module112, a BI module114, an instant messaging module116, and a permission module118.

The GUI module112may rely upon standard techniques to produce graphical components of a user interface, e.g., windows, icons, buttons, menus and the like, examples of which are discussed below. The user interface may include instructions to receive input from a pointer device and display a cursor on an output device.

The BI module114includes executable instructions to perform BI related functions on computers130-A or130-B, across network140or a wider network. BI related functions include: generating reports (locally or on a server), viewing a report, performing query and analysis, and the like. In an embodiment, the BI module114can include sub-modules, such as a report module, a server communications module, and the like.

The instant messaging module116includes executable instructions to facilitate participation in an instant messaging conversation between two or more parties across network140or a wider network. The permissions module118includes executable instructions to implement functions for viewing reports which have restrictions as to which users can view them. The permissions module118includes executable instructions to inform a report server or other networked component of the permissions set for a particular user. In an embodiment, permissions module118includes executable instructions to receive messages about permissions from another user or a server. For example, another user may grant a user temporary access permissions. Alternatively, a server may inform a user that access to a report has been denied.

The modules stored in memory110are exemplary. Additional modules such as an operating system can be included. It should be appreciated that the functions of the presented modules may be combined. In addition, a function of a module need not be performed on a single machine, e.g., the first computer or the second computer. Instead, the function may be distributed across system100or a wider network, if desired. In an embodiment of the present invention, the system100may operate in a non-peer-to-peer architecture.

FIG. 2illustrates a network architecture200in accordance with an embodiment of the invention. Computers130-A and130-B ofFIG. 1are coupled by sets of data signals204-A and204-B via instant messaging server250. These computers are also coupled by sets of data signals206-A and206-B to a report server220. The data signals may be carried by any wired or wireless infrastructure. In an embodiment, the data signals are encrypted and the servers220and250are placed behind firewalls.

The input/output devices104of computers130-A and130-B can include input devices such as a keyboard, mouse, and monitor. In addition, input/output devices104may include input/output devices such as handwriting recognition tablets, touch screen displays, scanners, printers, and the like. In an embodiment, either of computers130-A and130-B could be replaced by a smaller computing device, such as, a handheld computer. In an embodiment, the role of the report server220and instant messaging server250, and (optionally) one of the computers130-A or130-B can be combined.

The report server220includes standard computing components for storing and processing of reports. In an embodiment, the server includes a central processing unit222connected to a set of input/output devices224and a network connection circuit226all coupled via a bus228. The report server220can be coupled to a data store240via a set of data signals242. Also connected to the bus228is a memory230. The memory230stores executable instructions to implement operations of the invention. In an embodiment, the memory230may store a BI module232and a permissions module234. As with memory110, the modules stored in memory230are exemplary

The BI module232includes executable instructions to perform BI related functions on the report server220. These functions could be for computers130-A or130-B. BI related functions may include generating reports (locally or on a server), viewing a report, performing query and analysis, and the like. In an embodiment, the BI module232includes a report sub-module, a searching sub-module, and the like. The search sub-module includes executable instructions to implement functions for searching reports. The search sub-module includes executable instructions to implement functions for searching over a plurality of reports and within a report.

The permission module234includes executable instructions to implement serving up reports which have restrictions as to which users can view them. The permissions module234includes executable instructions to advise a user, or a computer130executing a local permission module118, whether the user can view a report. In an embodiment, permissions module234includes executable instructions to grant a user access to a report.

The server250includes standard computing components and executable instructions to host a collaborative working environment. In one embodiment, the server250includes executable instructions to host an instant messaging conversation between a plurality of users. Such computing components and executable instructions are well known in the art.

FIG. 3illustrates a workflow for sharing a report document within an instant messaging framework. In the first processing operation ofFIG. 3, a plurality of users start an instant messaging conversation302. For the purposes of illustration, the plurality of users can be replaced, without limitation, by two users, personified herein, as “Alice” and “Bob” representing user A and user B.

In processing operation304, Alice opens a report such that it is displayed on an output device104-A of her computer130-A. Optionally, Alice can manipulate the report (e.g., refresh, specify a parameter) or change the view of the report (e.g., page down, drill down, click through to a sub-report).

Alice directs that the report be displayed for Bob306. For example, Alice clicks a “Start Sharing” button or menu item in her user interface. In operation308, The report opens for Bob such that it is displayed on an output device104-B of his computer130-B. The report is already open for Alice. Alternative methods of opening and sharing a report document are described in U.S. patent application entitled “Apparatus and Method for Report Sharing within an Instant Messaging Framework”, Ser. No. 11/394,641, filed Mar. 31, 2006.

Permissions can be extended from Alice to Bob. At least one permissions module (e.g.,118-B or234) specifies baseline access permissions for Bob. In an embodiment, Alice, based upon her own set of permissions, is allowed to temporarily override the baseline access permissions and grant Bob access to additional information. In an embodiment, Alice can extend permissions to Bob that are equal to or less than her own permissions. These permissions can be extended in the form of a token transferred from permissions module118-A on Alice's computer to permissions modules118-B or234. The override can be limited in scope, duration, action, location, or the like. Examples of limitations of scope include limiting which reports and which data Bob has permissions to access. Bob's permissible actions can include one or more of read, write, save, export, print or the like. In an embodiment, a token exists for a specified period of time. The token can be limited to a given computer identified by an IP address, a MAC address, and the like.

In operation310, Alice and Bob exchange message back-and-forth with reference to the report. They are sharing between them and consuming the report together. In an embodiment, Bob's access to the report, including viewing and interacting, is modulated by Alice and permissions modules118-B and234.

Alice, having shared her view of the report with Bob, can stop sharing at any time. In an embodiment, when Alice stops sharing a report with Bob, a signal is sent from computer130-A to130-B, revoking Bob's override permissions, thereby disabling Bob's access to additional information beyond his baseline access permissions. In an embodiment, a signal is sent from Alice's computer to Bob's computer specifying that Bob's current view of a report is to be erased. Alice can then change her view of the report and again indicate that the report should be shared with Bob. She may want to do this because she does not want Bob to see some intermediate view between two views. For example, she may allow him to see the country wide sales data and his area's sales data, but not the regional sales data.

FIG. 4illustrates a series of processing operations associated with an embodiment of the invention. In the first processing operation ofFIG. 4, a user logs on to a report server402. The report server receives a request for report content404. The server processes the request406. In the case where the request is for a report, the processing can include retrieving the report from storage or creating the report by accessing data from a datastore, e.g., datastore240. The data is formatted per the report's schema. In the case where the request is for a portion of a previously generated report, the processing can include retrieving the portion of the report from storage. In some cases the portion of the report is created; the portion of the report could be contained in a generated sub-report. Actions of a user that can lead to a request for report content include, opening a report, paging down/up, drilling down in a report, rolling up in a report (the opposite of drilling down), searching through a report, providing a parameter to a report, refreshing a report, or entering a sub-report.

The processing of the request406can include checking the permissions of the users against the permissions needed to view the report or data. In processing operation408, the server serves up the report content to the users that have requested it or are to receive it by request of another user. In serving up the report contents, the server may elect to transmit to the users only the report content they immediately need. That is, while the full contents of the report may be created, only a subset of the report content is sent to the users for performance reasons. The server can, in optional processing operation410, cache the report contents it created in the foregoing operations ofFIG. 4.

FIG. 5illustrates a series of processing operations associated with an embodiment of the invention. A report server receives a request for report content404. The report server220retrieves the permission of the users and of the report504. In operation506the report server220applies instructions from the permissions module234to determine if a user can view a report. For example, a set of requests from Alice and Bob may result in a report being provided to Alice but not Bob because of differences in permissions. If Alice has the appropriate permissions, she can share the report with Bob. The server in serving up the report will compare the user's permissions against the report content and route the report accordingly. The report content includes the report and the underlying data. In an embodiment, a user would not be able to circumvent permissions restricting access to data by creating a report that accessed the data. Permissions control access to reports and to data.

If it is acceptable to release report content to a user (506—Yes), the report content is approved for release to the user508. Otherwise (506—No), the report content is prohibited from release to the user510. After processing operations508and510, processing continues at operation408ofFIG. 4.

FIG. 6illustrates two graphical user interface (GUI)600windows602-A and602-B. Windows602-A and602-B belong to Alice and Bob respectively. The GUIs include many standard features. For example, the windows602-A and602-B, collectively602, include a menu bar604. The windows each include a conversation digest pane610, i.e.,610-A and610-B. The second pane in window602is an input pane620, where Alice and Bob enter their text messages for each other.

The GUIs include features configured in accordance with aspects of the invention. The third pane in windows602is the report pane640, where the contents of a report are displayed and interacted with. Also, an interface for logging on to a report server, searching through a report, displaying help information, and the like can be displayed in the report pane640. The report pane640can also contain a non-report document. In an embodiment, the report pane640is a workspace for Alice and Bob to share reports and non-report documents. Included in report pane640is a set of tabs642. These tabs include tabs for different views. The set of tabs includes text or icons activating functions associated with report sharing. Also included in report pane640is a link644to the log in screen for the report server220.

FIG. 6also illustrates a workflow associated the invention. An example of the operation302ofFIG. 3is shown inFIG. 6. Alice and Bob start an instant messaging conversation. This conversation, Alice: “How are our regional sales doing so far this year?”, Bob: “Let's look at the sales report.”, et seq., is recorded in the conversation digest pane610.

FIG. 7illustrates a workflow involving the GUIs ofFIG. 6. Alice logs on to the report server220via login screen behind link644. The log in screen702to the report server220is shown in pane640. In an embodiment, the report server is specified in box704. Alice enters her user name and password in boxes706and708. If Alice has provided a correct name and password, Alice is logged into the report server. Bob is not automatically logged in with Alice. Alice can share her view of the report server later.

FIG. 8illustrates a workflow following the workflow ofFIG. 7. Alice has logged in to the report server, such as report server220ofFIG. 2. She can initiate sharing of her view of the report server with Bob by selecting the “start sharing” tab in the set of tabs642-A. Because Bob has not been included in Alice's interaction with the report server, his view in report pane640-B is unchanged. Alice can search for a report via interface804in report pane640-A.

FIG. 9illustrates a workflow in which Alice has opened a report and shared it with Bob. Alice's set of tabs642-A has changed to reflect that she has invited Bob to view the report she opened. The set of tabs642-A includes a series of functions902-A including “Stop Sharing” and “Log Off” functions. The report is shown in report pane640. Bob's view is904-B and Alice's view is904-A. Alice's cursor906-A does not appear in Bob's report pane640-B.

Bob's view is exposed when he selects the tab908marked Alice in his set of tabs642-B. In an embodiment, Bob sees exactly the same view as Alice. In an embodiment, Bob's baseline permissions are overridden such that he can view the report Alice is sharing with him. In on embodiment, Bob's view of the report is static; he cannot interact with the report.

FIG. 10illustrates a workflow involving the GUIs ofFIG. 6. In an embodiment, Bob can interact with the view Alice shares with him. In workflow1000, Alice and Bob jointly construct a query and run it on the report server. In this example, Alice inserts search terms in block1002and Bob inserts search terms in block1004.