The present invention relates to electronic communication. In particular, the present invention relates to systems, methods and computer program products for the automatic generation of a suggested message. Today, many text completion and auto-correct tools are available for use with text messages. Although such tools make our lives easier, a need for improvement remains.
A computer-implemented message processing and suggestion generation process in accordance with the present invention includes the receipt by a device of information associated with a first message under a first active message session and the processing and storing of one or more portions of the information. Upon the subsequent receipt by the device of information associated with another message under another active message session, at least portions of the information associated with a first message are retrieved and a determination made as to a correlation between the information associated with the messages. If a correlation is determined, at least one suggested message is generated and provided to the device based on the correlated information.
In some embodiments, the device is a mobile device and the processing, retrieval and message suggestion generating are performed by the mobile device. In some embodiments, the messaging services include one or more of a short messaging service (SMS), a multimedia messaging service (MMS), an instant messaging service (IMS) and an enterprise instant messaging service (EIM).
In some embodiments, the message processing and suggestion generation process incorporates one or more of priority information and access information stored in the device and retrieved in response to the receipt of the subsequent message. In some embodiments, the message processing and suggestion generation process incorporates available contextual information such as location, time of day, motion, and direction of travel. In some embodiments, the message processing and suggestion generation process incorporates accessible social networking service information associated with the message receiver.
Other embodiments of the present invention, including system and computer program product are described herein.
By way of introduction, the following description shows various embodiments of the present invention. Conventional devices, components, techniques and other functional and individual components thereof understood by one of ordinary skill in the art may not be described in detail. By way of example only, the devices/servers/data sources referenced in the various embodiments herein are understood to include conventional hardware (such as processor(s), computer memory) software, and firmware components collectively configured to perform the functions described. On the other hand, specifics are in many cases provided merely for ease of explanation or understanding the various embodiments and possible variations thereof. The various embodiments of the present invention described herein should not be construed as limiting the numbers, types or combinations of networks, devices, servers, services or components within the scope of the present invention. Other networks, devices, servers, services, systems, applications, or components (not shown) may also be present.
One conventional form of messaging service is commonly referred to as instant messaging (IM) services (IMS). Basic IMS (aka online chat services) offer on-demand/real-time transmission of text messages over a network. Also, as is known, some IMS' offer enhanced features, such as video calling and web conferencing services that integrate video with voice over IP (VOIP), and desktop sharing. As is known, social network services sometimes offer IMS functionality. For example, Facebook® offers a form of IM as part of its social network services, and Twitter® services can be thought of as a form of instant messaging service. Other social network services, such as more dating-focused services, offer online chat features. Enterprise instant messaging (EIM) services were developed in response to business demand for improved security and legal compliance for IM services. Some EIM offerings offer interoperability with other EIM networks and some public IM networks (such as IM services available from Yahoo! Inc.) so that enterprise employees may use one interface for both their internal EIM system and their contacts on public IM networks. EIM features are more frequently integrated with enterprise e-mail and calendaring functions. A non-exhaustive list of available EIM platforms includes those offered by Microsoft Corporation, Oracle Corporation, IBM Corporation, and other more industry-focused EIM platforms, such as are offered by Thomson Reuters Corporation and by Bloomberg L.P. to financial services companies.
Another conventional form of messaging services—short message services (“SMS”)—also sometimes referred to as mobile messaging, was developed under the Global System for Mobile Communications (GSM) standards. However, SMS is now available on other mobile technologies and networks, including 3G, satellite and landline networks. SMS use standard (stateless) communication protocols to allow users of SMS-enabled devices, such as smart phones and other fixed or portable devices, to create, send and receive short text messages (up to 160 characters). SMS message delivery employs known “store and forward” technology. The SMS standard does not guarantee message delivery and verification of delivery may not be available in some SMS implementations. Most SMS messages are sent from mobile phone to mobile phone(s), i.e., from person-to-person(s) (P2P). However, application-to-person (A2P) type SMS messaging—between an application and application subscriber(s)—is growing. For example, social network services (SNS) increasingly use A2P-type messaging to send SMS text messages from their social network systems to their SNS participants. Multimedia message services (“MMS”) extend SMS capabilities beyond text to include multimedia content. SMS and MMS are collectively referred to herein as “SMS/MMS.” The spread of smartphones has contributed to the ubiquity of IMS, EIM, SMS, and MMS messaging (collectively or individually referred to herein, as the context indicates, as a “message” or “messaging.”
A social network refers to any online social structure where the users are connected by a common feature. The common feature can include (without limitation) explicitly defined relationships/connections, e.g., friendship, family, work, interests, as well as relationships implied by connections with other social network users. By way of example only, a first social network can be focused on business networking, a second social network focused on academics, a third more directed to local businesses, a fourth social network focused on dating, while other social networks have other specific or more general focus. The relationships/connections of a social network can be represented by a social graph, which can be stored in and accessed from a (local or remote) data store. A non-exhaustive list of social network services includes those offered by Twitter, Inc., LinkedIn Corporation, YouTube, LLC and under the Facebook® brand.
As is known, data/information may be stored on, or communicated via network 102 to one or more user devices 101a . . . 101n, servers 103A . . . 103n, services 107A . . . 107n, ME 100 and other data stores/sources 105A . . . 105n, 108. In some embodiments, ME 100 receives one or more messages from one or more user devices 101a . . . 101n associated with respective users a_1 . . . a_n over network 102. In some embodiments, part or all of the inventive message processing can be performed directly by and tightly coupled to ME 100, or indirectly performed by more loosely coupled processes or any suitable combination of the preceding.
In some embodiments, network 102 is the Internet, but other conventional (wired or wireless) network(s) (or combinations thereof) will suffice, such as one or more wide area networks (WAN), medium area networks (MAN), local area networks (LAN) and personal area networks (PAN). Also, as is known, one or more of devices 101a . . . 101n or servers 103A-103n may operate as a “server” or a “client” in a server-client network architecture, as a so-called “peer” device in a peer-to-peer environment, or as part of cluster or group—such as in a so-called server “farm” or “cloud.” In some embodiments, one or more devices 101a . . . 101n can perform the inventive messaging processing on a peer-to-peer basis. In some embodiments, the inventive messaging process is at least partially distributed across one or more devices, servers and other components of network 102.
As depicted in
An embodiment of a message engine (“ME”) 100 in accordance with the present invention is hosted on server 103n. In some embodiments, ME 100 is embodied as software stored in computer memory and executing on processor components (not depicted) of server 103n. In some embodiments, ME 100 can be co-resident with one or more other services/applications, such as social network service/application (SNS) 107n on server 103n (as depicted). A non-exhaustive list of other servers/services and data sources (not depicted) that can provide input to ME 100 include: location/environment data such as are available from a conventional global positioning system (GPS) application, widely available on smart phones and automobile navigation systems; a micro-blogging server; a profile server, a web server, a search server and integrated search engine, such as is offered by Google, Inc., for retrieving results from the Internet that correspond to search terms input to the search engine; and other third party servers/services. A more detailed example of information sources and information processing will be described with reference to
In some embodiments, devices 101a . . . 101n include conventional user interfaces (“UI”), which are adapted to interface with ME 100. An example (without limitation) of such UIs adapted in accordance with the present invention will be described with reference to
In some embodiments, ME 100 is conventionally adapted to interact with the UI to accept the input of and store/retrieve user provided profile or access information in user engagement data (UED) data store 105n or DRR 105E. By way of example only, such access information may include login information (such as user identification and password) and other information enabling access to information associated with services 107A . . . 107n, or data stores/sources 105A . . . 105D, 108.
In some embodiments, conventional pre-or post-processing of information is performed. A few examples include (without limitation) one or more information: weightings, rankings, prioritizations, normalizations, comparisons, combinations, measurements, and modifications. In some embodiments, suggested messages are presented based on calculated relative probabilities. By way of further example, (without limitation) a message suggestion generation process may reflect access information or predefined relationship priority input by a user through a UI to user's device and stored in the device and/or another data store; derived from information retrieved from accessible service(s) or data store(s). An example (without limitation) of the processing of dynamic information as well as other information will be described in more detail with reference to
ME 100 receives the forwarded, pre-processed message. ME 100 uses the message excerpts to query a data structure stored in a pre-defined computer memory space (not depicted) of server 103n to determine if there is a concurrently open message session involving user a_2 (Mary) and another user. In some embodiments, the data structure is a conventional table-like structure (also referred to herein as a dynamic information table), an example of which will be discussed with reference to
Retrieved access information is used to query corresponding services 107A . . . 107n and data stores of interest for information. Retrieved environmental information, such as GPS/navigation information and functionality is used to determine Mary's current location, calculate/input a route into Mary's automobile navigation system, which calculates an estimated travel time to Java Joe's of 15 minutes. The retrieved information 200A is correlated/processed, and one or more suggested messages are transmitted to device 101b. For purposes of this example (without limitation), a suggested message is “Sounds great Colleen. I am in my car and should arrive at Java Joe's shortly.” The suggested message is received by device 101b and is displayed on user interface 101bUI of device 101b, which is conventionally paired to (and displayed on the connected graphical display of) the automobile's systems. For purposes of this example (without limitation), the suggested message is also converted to speech by connected conventional text-to-speech message functionality and the resulting audio output through the audio system (not depicted) of Mary's automobile. For purposes of this example (without limitation), Mary selects a suggested message using conventional voice-command technology, and the selected message is sent to and received by Colleen's device 101c. The received message is displayed in the now active message window 101cb of user interface 101cUI of device 101c. In this example, confirmation of message delivery is available through and requested from messaging service 107xy. Delivery confirmation is received by device 101b and is forwarded to ME 100, and the pre-defined computer memory space is updated with particulars, e.g., time and location of the meeting.
Later, while the message session between user a_2 (Mary) and a_c (Colleen) is still open, another user a_1 (Donna) opens a message session window 101ab in user interface 101aUl of her smart phone 101a. User a_1 (Donna) enters a message into the input portion 101ai of message session window 101ab of user interface 101aUl and sends the following message to user a_2 (Mary, Donna's mother) “Hi mom, can you buy some milk on your way home?” The message is received by user a_2's (Mary's) device 101b and another message session window 101ba is opened/activated in user interface 101bUI of device 101b with the message from Donna displayed therein. As before, the message is pre-processed by device 101b and is forwarded to ME 100 for further processing. ME 100 receives the pre-processed message, and ME 100 identifies a concurrently open message session between user a_2 (Mary) and user a_c (Colleen). Dynamic information regarding the meeting (e.g., time and location of the meeting) between Mary and Colleen at Java Joe's is retrieved from computer memory, and the dynamic information is used by ME 100 in the message suggestion generation process. In some embodiments, the dynamic information is supplemented by other historical/available information, such as scheduling information and other electronic communications.
In some embodiments, ME 100 leverages awareness of the dynamic information and (by way of example only) suggests a combination of messages that reflect such dynamic information. By way of example (without limitation), a first suggested message to be sent to user a_1 (Donna) is “Driving home now, I'll pick up some milk” and a second message to be sent to user a_c (Colleen) is “Sorry, I need to cancel our meeting at Java Joe's because of a late-breaking conflict.” Another example of a suggested message combination generated by ME 100 is: a first suggested message to user a_1 (Donna) “I promised to meet Colleen (from work) for coffee. Is it OK if I pick up milk after that ends (at 7 p.m.)? Let me know;” and a second message to user a_c (Colleen) “Sorry, I may need to cancel our meeting at Java Joe's because of a late-breaking conflict. I will let you know ASAP.” For purposes of this example only, Mary selects the latter combination message suggestion via user interface 101bUI of device 101b. In response to the selection, the first message of the selected message combination is sent via message session 101ba of device 101b and is received by and displayed on user interface 101aUI of user a_1's (Donna's) device 101a. The second message of the selected message combination is sent via message session 101bc of device 101b and is received by and displayed on user interface 101cUI of user a_c's (Colleen's) device 101c. Delivery confirmation of each message is requested/received by device 101b and is forwarded to ME 100. ME 100 receives the forwarded delivery confirmations, and the pre-defined memory space is updated to reflect the updated (pending) nature of the entries.
User a_1 (Donna) receives Mary's message on the user interface 101aUI of device 101a and sends a reply to Mary “The milk can wait until after 7 pm. Love, Donna.” User a_c (Colleen) receives the message sent to her by Mary on UI 101cUI of device 101c and replies to Mary “OK. Hope to see you soon.” Donna's and Colleen's respective reply messages are received by Mary's device 101b and displayed in the respective message session windows 101ba and 101bc of device 101b and on the connected display of her automobile. As before, the reply messages are converted to speech by the connected text-to-speech functionality and the audio played through the automobile's audio system. As before, the messages are pre-processed by device 101b and forwarded to ME 100 for further processing. ME 100 retrieves dynamic information from memory and correlates each message as a confirmatory response to Mary's respective prior messages. The status of the corresponding dynamic information is tentatively updated as “confirmed” and metadata/excerpts of the message are tentatively updated for possible future reference. ME 100 correlates each message to its corresponding message thread and generates/sends two suggested messages to user a_2's (Mary's) device 101b. As before, the messages are received by Mary's device 101b and displayed in the respective message session windows 101ba and 101bc of device 101b. The messages are also displayed on her automobile's connected display and converted to speech, and each is read to Mary by connected text-to-speech functionality. The first message is a suggested confirmation to Donna “OK. Love Mom.” The second message is a suggested response to Colleen “We are all set. See you at Java Joe's in a few.” Mary accepts and sends the respective suggestions to Donna and Colleen. Confirmation of delivery transmission is received and forwarded to ME 100, which commits the aforementioned tentative updates to storage.
In some embodiments ME 100 accesses and uses information 200A stored (with reference also now to
Information 200A comprises information, including but not limited to user information, user data, user messages, and related content and metadata. By way of example only, information 200A can be a message composed by user a_1 (
Referring again to
With reference again to
With reference again to
With reference again
With reference again to
With reference again to
By way of introduction to the example depicted in
For purposes of this example, the message service offered by SNS 107n does not store the contents of a message session after the message session is closed. Colleen logs in to the SNS 107n application on her smart phone device 101c and sends a message to former business colleague and friend user a_2 (Wendy) “Hi Wendy, I am at Java Joe's on J Street. Can you join me for a quick catch up?” Wendy is also active in SNS 107n and uses its messaging service. Wendy is driving home when the Colleen's message is received on her smart phone device 101b. Wendy's device 101b is conventionally connected via the IEEE 802.15 standard (aka “Bluetooth”) to her automobile's audio, navigation and other systems (e.g., speech recognition and text-to-speech). Wendy's device 101b is conventionally adapted to forward Colleen's message to ME 100
With reference now to
In step 301, the message is, in some embodiments, conventionally parsed and excerpts of the message copied into a data store such as UED 105n or DRR 105E for possible re-use. By way of example only, such message excerpts can provide information about the message source/sender/recipient, message type, date, time, context and other information obtained by excerpting certain pre-defined keywords. The computer-implemented process then proceeds to step 302.
In step 302, ME 100 uses message excerpts identifying the message sender/receiver to retrieve relationship, priority and access information from storage, such as UED 105n or DRR 105E. The retrieved access information indicates that Wendy uses SNS 107n and e-mail/calendar service 107B and retrieved priority information indicates that Wendy has assigned Colleen to a mid-level (“friend”) priority. ME 100 also uses the message excerpts identifying the message receiver to query computer memory for associated dynamic information. As will be discussed in more detail below, such dynamic information can be stored in a table, but numerous other conventional data structures and techniques are equally viable. For purposes of this example, no dynamic information associated with Wendy (the message receiver) is currently found. In some embodiments, SNS 107n is queried to obtain, derive, supplement or confirm relationship or priority information. Retrieved access information can also be used to query corresponding services 107A . . . 107n and data stores of interest for information. In some embodiments, available environmental information, such as GPS/navigation information and functionality is used to determine Wendy's current location, calculate/input a route into Wendy's automobile navigation system and determine an estimated travel time to Java Joe's. In some embodiments, the excerpted message content is analyzed, such as through conventional natural language processing technology, and provides contextual hints and other information. By way of example only, such information can facilitate classification of the message type, e.g., in this case as a “meeting.” In some embodiments, excerpts of previous message exchanges between Wendy and Colleen (if any) are retrieved from storage and analyzed for possible re-use during the message suggestion process. The retrieved information 200A is correlated and processed, which may include intermediate weighting/ranking, and suggested messages can be generated. The computer-implemented process proceeds to step 303.
In step 303, generated suggested messages (if any) are presented to Wendy's device 101b, and in this example, through the networked systems of her automobile. If no messages are suggested, the computer implemented process proceeds to step 304 (see below). For purposes of this example only, suggested messages are generated and are presented to Wendy through the UI in a ranked (high to low) order based on suggested probabilities, one of which is “Sounds great Colleen. I am in my car and should arrive at Java Joe's in about 15 minutes” and the computer-implemented process proceeds to step 305 (
In step 305, if Wendy does not accept any suggested message, the computer-implemented process proceeds to step 308 (see below). For purposes of this example only, in step 305, Wendy selects/accepts the aforementioned suggested message, and the computer-implemented process proceeds to step 306.
In step 306, the dynamic information table (currently empty for purposes of this example only) is retrieved, and an information entry is tentatively created in the dynamic information table for subsequent storage (pending confirmation of message transmission) with message particulars, e.g., entry type, time, location, status and other message excerpts. In some embodiments, the UI is conventionally adapted to enable users to customize the layout of a dynamic information data structure. An example (without limitation) of a dynamic information table layout containing such tentative updates is illustrated below as Table 1:
In some embodiments, message content/context is excerpted and stored in DRR 105E or UED 105n for possible re-use. Those of ordinary skill in the art will appreciate that even if the message session information was separately transmitted to Wendy's e-mail/calendar service 107B, there would be (at best) some time lag before the information could be received by, reflected in and accessible through the e-mail/calendar service. The computer-implemented process proceeds to step 307.
In step 307, the accepted message is sent to Colleen, and Wendy closes the message session. Transmission of the message is confirmed, and the information updates and dynamic information table stored in one or more of computer memory, DRR 105E, and UED 105n. In some embodiments, excerpts of message content are also stored in one or more of DRR 105E and UED 105n. The computer-implemented process then returns to step 300 (
With reference now to step 308, if all suggested messages were rejected in step 305 (see above), the user is presented in step 308 with other options. By way of example only, such options can be presented through a conventional UI (not depicted) and include: selection and editing of a suggested message; creation of an entirely new message; selection from among one or more generic messages such as “Sorry, can't chat right now;” or some combination of the foregoing. If the user declines the other options presented, the computer-implemented process proceeds to step 310. If the user selects one of the presented options (such as an option to select and edit a suggested message), the computer-implemented process proceeds to step 309.
In step 309, the user may use conventional editing functionality to select/edit a suggested/generic message or create a new message. Upon completion of any edits, the computer-implemented process returns to steps 306, 307 (see above) and then to step 300 (
Continuing this example, shortly after that, while user a_2 (Wendy) is traveling to Java Joe's to meet user a_c (Colleen), another user a_1 (Ann—Wendy's daughter) sends a message from Ann's mobile device 101a to Wendy “Hi Mom, can you grab some milk on your way home?” As described above, the message is received by Wendy's cell phone 101b and is forwarded to ME 100.
In step 300, the message from Ann to Wendy (which has been forwarded to ME 100 on server 103n) is detected by the conventional background process (daemon) on server 103n. The process forks, with the forwarded message further processed in step 301, while the daemon exits and continues listening for message input in step 300.
In step 301, ME 100 (as described previously) parses the message, stores excerpts of the parsed message in computer memory and/or persistent data store(s) such as DRR 105E and the computer-implemented process proceeds to step 302.
In step 302, the message analysis and suggestion generation process begin. As described previously, ME 100 retrieves available dynamic information, (including any message excerpts stored in step 301), and other information not forwarded from user a_2's (Wendy's) device 101b, such as specified relationship and priority information for Ann, along with any access information regarding available services, information from specified data stores of interest (collectively information 200A (
In step 303, generated suggested message(s) (if any) are displayed on the UI 101bUI (
The computer-implemented process proceeds to step 305 (
Referring now to step 305, for purposes of this example only, assume that Wendy (via the UI) chooses selection #2 from Table 2 (above), and the computer-implemented process proceeds to step 306.
In step 306, the dynamic information table (see e.g. Table 1) is retrieved, a new entry created, with metadata and particulars of the selected message and other relevant entries updated. An example of a tentatively updated (pending confirmation of transmission) dynamic information table is illustrated below as Table 1a. With reference now to Table 1a, the entries reflect tentative updates (pending confirmation of transmission). In particular, as illustrated, the status column of entry #2 in Table 1a has been modified to a “pending” status and marked with an * to indicate (as illustrated by the other info column) its linkage (in this example) to entry #1. The status column of entry #1 has also been modified from the previous “sent” status to “waiting for response” and likewise marked with an * to indicate its linkage to entry #2. In this example, DRR 105E is also tentatively updated (pending confirmation of transmission) with applicable metadata and excerpts of the latest message exchange, for possible future reference.
The computer-implemented process proceeds to step 307.
In step 307, the selected message (ref. step 305, select #2 in Table 2) is sent to Ann. In this example, the tentative information updates (in step 306) to the dynamic information table (Table 1a) are confirmed/stored in UED 105n, and any tentative information updates to metadata and excerpts of the conversation are stored in one or more of DRR 105E and UED 105n for possible future reference and re-use. The computer-implemented process returns to step 300 (
In this example, Ann receives the message from Wendy and Ann replies, “It can wait Mom. See you after 7 pm. Love, Ann.” The message is sent to Wendy, forwarded and detected as described above in step 300, and the computer-implemented process again proceeds to step 301.
In step 301, ME 100 parses the message, stores excerpts of the parsed message in a data store such as DRR 105E and the computer-implemented process proceeds to step 302.
In step 302, the analysis/generation process commences (as described previously). In this example, ME 100 retrieves the dynamic information table (see Table 1a). Based on the (parsed) message contents, information from the dynamic information table, ME 100 identifies the latest message (from Ann) as a confirmatory response to entry #1 in Table 1a above. As before, the dynamic information table is tentatively (pending confirmation of transmission) updated. An example of such a tentatively updated table is illustrated below as Table 1b. With reference now to Table 1b, the table entries reflect several tentative updates as compared to Table 1a (above). For example, the “status” column of Entry #3 in Table 1b is updated to “Confirmed” from its previous “pending” status (ref. Entry #2, Table 1a). The status column for Entry #2 in Table 1b is updated to “Confirmed” from its previous “waiting for response” status (ref. Entry #1, Table 1a). The “entry #/type” column for message-type entries #1 and #2 in Table 1b are updated with an * to indicate their linkage/relatedness (ref. “other info” column of Entry #2 in Table 1a). In this example, a reminder-type alarm has also been set to remind Wendy (at 7 p.m.) to buy milk on her drive home, as indicated by the + symbol and informational note in the other info column for entry #2 in Table 1b. As before, DRR 105E and UED 105n are tentatively updated (pending confirmation of transmission) with metadata and excerpts of the conversation, for possible future reference.
The computer-implemented process proceeds to step 303.
In step 303, as described above, ME 100 generates and displays a message on the UI of Wendy's device 101b and the automobile's connected systems. In this example, the message displayed indicates the confirmatory nature of Ann's message and that no response is required. The computer-implemented process proceeds to step 304.
In step 304, tentative updates (if any, such as to Table 1b (step 303) are confirmed, and the updated information and dynamic information table are stored in one or more of server 103n computer memory, UED 105n and DRR 105E. In some embodiments, tentative updates to metadata and excerpts of the message are stored in one or more of UED 105n and DRR 105E data stores, for possible future reference and re-use. The computer-implemented process proceeds to step 300.
The present invention may be a system, a method, or a computer program product. The computer program product may include a computer-readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer-readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer-implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions.
The descriptions of the various embodiments of the present invention have illustrated examples of architecture, functionality, and the operation of various embodiments of devices, methods, and computer program products in accordance with of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of computer executable instructions for implementing the corresponding logical function(s). It is understood that the functions noted in a given block (or step) may occur in a different order from the examples described in the Detailed Description and Drawings. For example, two blocks shown in succession may, in fact, be executed substantially concurrently (and vice versa), or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It is also understood that a block (and/or combination of blocks) of the block diagrams and/or flowcharts can be implemented by special purpose hardware-based systems and/or combinations of such hardware with computer instructions that perform the specified functions or process steps.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.