A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to knowledge base management and generation and more particularly to techniques for computerized collection, organization, and retrieval of content accessed through a multi-tenant database.
The rate at which information is being generated is difficult to quantify. Two economists at the University of California at Berkeley Hal Varian and Peter Lyman estimated that the total production of new information in the year 2000 was approximately 1.5 exabytes or about 37,000 times as much information as is in the entire holdings Library of Congress. In the year 2003 it was determined that new information production was more than double the production of information in the year 2000. Managing this production of information has been a constant pursuit of society. As a result, many systems have been developed to organize information and provide searchable databases through which information may be accessed and used to address various situations. The internet may be considered one of these searchable databases.
However, due to the magnitude of disparate information available in the public domain, such as on the internet, only a very small percentage of the information is available due to the massive amounts of information through which one must peruse. The information is typically buried amongst articles contained in magazines, journals, papers, newspapers, books, notebooks and the like. Alternatively, the information is stored in digital format in information stores such as databases, digital libraries and the like. Unless otherwise stated, the term “article” as used in this application should be construed to include any transcribed or printed information, or information available in digital format, or combinations or portions thereof. The information in an article may include text, graphics, charts, audio information, video information, multimedia information, and other types of information in various formats. An article may be published or unpublished. Since these articles could number in the millions it is difficult for the same to be accessed, read, and understood in a reasonable time. Management of such a vast amount of information becomes more problematic when allowing creation and storage of information on a common database that is used to access the information.
There is a need, therefore, to provide techniques that facilitate accessing and generating content on a computer database that is accessible to multiple users over a computer network.
The present invention features a computer implemented method and network for managing a knowledge base stored in a multi-tenant architecture. The method includes storing information corresponding to a plurality of KnowledgeArticles amongst a plurality of tables. Information in a first of the plurality of tables includes data corresponding to an online version of said KnowledgeArticles and data related to changes to the KnowledgeArticles. Information contained in a second table comprises a subset of the data that is independent of the data related to the changes. Changes to the KnowledgeArticles are recorded in the second table in response to changes made to the first table. Access to information in the first table is restricted access to users having write access to said KnowledgeArticles. These and other embodiments are discussed more fully below.
Referring to
A given application server of MTS may simultaneously process requests for a great number of users, and a given database table may store rows for a potentially much greater number of users. To that end, and as shown in
Architecture 12 provides access to a database 44 by multiple users 20, 22 and 24 of client side facilities 14 over data communication network 18 using standard computer systems (not shown). To that end, network interface resources 32 include a plurality of virtual portals 45-47. Each virtual portal 45-47 provides an “instance” of a portal user interface coupled to allow access to database 44. Typically, tenants obtain rights to store information, referred to as tenant information 48 and 50, on database 44 and make the same accessible to one or more users 20, 22 and 24 to whom the tenant provides authorization. This is typically achieved by rental agreements between the tenant and an owner/provider of architecture 12. In this manner, architecture 12 provides an on-demand database service to users 20, 22 and 24 that is not necessarily concerned with building and/or maintaining the database system; rather, these functions are addressed between the tenant and the owner/provider.
With architecture 12, multiple users 20, 22 and 24 may access database 44 through a common network address, in this example a universal resource locator (URL). In response, webpages and other content may be provided to users 20, 22 and 24 over data communication network 18. The resources of database 44 that users 20, 22 and 24 may access can be different, depending on user's 20, 22 and 24 security or permission level and/or tenant association. As a result, data structures included in tenant information 48 and 50 are managed so as to be allocated at the tenant level, while other data structures might be managed at the user level. Because architecture 12 supports multiple tenants including possible competitors, security protocols 52 and other system software 54, stored for example on hard drive 38, maintain applications and applications' use to only those users 20, 22 and 24 with proper access rights. Also, because many tenants may desire access to architecture 12 rather than maintain their own system, redundancy, up-time, and backup are additional functions that may be implemented in architecture 12.
Referring to both
Referring to both
Referring to both
The ART. ID. column 86 is a standard identification for the knowledge article associated with the information. The key_prefix column 87 is a unique identifier for the row entry in KAT 63. Columns 88-91 identify the status of the KAT as either being deleted, archived, draft, or online. Each of these states may be mutually exclusive and are identified by the presence of a flag that are maintained in Procedure Language/Structured Query Language. An archived KnowledgeArticle is one that is not deleted, or has neither an online or draft status associated therewith. The online status indicates that a KnowledgeArticle is published as part of a public KnowledgeBase and is accessible by users thereof having appropriate access. A draft KAT is one that has not an online status and is currently accessible to a limited number of users of architecture 12 having rights to modify and/or generate KnowledgeArticles. Master_language column 92 includes information identifying the original language in which the knowledge article associated therewith was drafted. A KnowledgeArticle may be generated in virtually any known language, e.g., English, German, Chinese, machine and the like. The information in Master_language column 89 is also present in the row of the KAV 64 corresponding thereto.
The URL column 94 identifies the link through which the KAT associated therewith can be accessed, typically having 255 characters maximum. It typically consists of a name that is unique, i.e., no two columns in KAT 63 will have the same URL. This means that the same KnowledgeArticles may have different addresses each associated with a different translation. It is desired to avoid having a dead link, one through which the KAT cannot be accessed. This may arise, for example, were a KAT deleted. This is avoided by providing a servlet to parse information in URL column 94 that identifies an assigned renderer, discussed more fully below, by article type, lookup the right KAV id, and then forward dispatch with rewritten URL. For example: http://<server:port>/knowledge/FAQ/FAQ_for_NokiaPhones. The “/FAQ” provides the article type, and a renderer is identified based on that information. Database 44 is accessed to identify the renderer as a function of subtype, as well as to get the right KnowledgeArticleVersion id from UrlName+additional context, e.g., status language and the like.
MISC column 99 includes information readily understandable and typically only meaningful to a user. URL column 94 includes information from an alternate identifier of the KAT that is typically only meaningful to the user. Custom title column 95 may include information related to a secondary or nickname of the knowledge article associated therewith.
The user document definition of KAT 63 is as follows.
Referring to both
The user document definition of KAV 64 is as follows.
KnowledgeArticle entries in KAV 64 may be categorized in a hierarchy. For example, were one KAT concerning a product, a second KnowledgeArticle may relate to details of a function provided by the product and thus would be sub-typed so as to be related to the original KnowledgeArticle. These concrete subtypes are defined by the tenant and/or owner of the KnowledgeArticle. This information along with metadata is stored in core.custom_entity_definition with a special bit set to identify them as article types. Other categories of sub-typed articles may include a KnowledgeArticle on frequently asked questions (FAQs), a KnowledgeArticle on offers, promotions and the like.
Referring to
It should be noted that the SObjects visible to VISUALFORCE may not necessarily be exposed to a public Application Programming Interface (API), such as APEX, which is available from the assignee of the current invention. To that end, the SObjects are established to be read-only and a recursive least squares (RLS) file is applied showing KnowledgeArticles having an online status, applying the RLS filter to only show online articles in the user's desired language while hiding remaining fields, as desired. To that end, not all information contained in tables 63, 64 and 64 is available to every user 20, 22 and 24 that may view KnowledgeArticles. Rather, the level of access to information contained in tables 63, 64 and 65 is dependent upon whether the user 20, 22 and 24 has publication authority, as well as the type of publication authority.
A publisher is a user 20, 22 and 24 that may create the initial draft version of a KnowledgeArticle, referred to as an Initial KnowledgeArticle (IKA). The commands to create a new KnowledgeArticle operate only on the KAV 64, Offer_kav, not KnowledgeArticle 63, Offer_ka. Restricting publisher status is tied to the security filters when the user 20, 22 and 24 accesses database 44. Offer_kav.Parent field has is ApiInsertable=“false”, and the Offer_ka is auto-created then set Offer_kav.Parent=Offer_ka.Id internally.
Typically the tenant with which the publisher is associated has a default language in which all KnowledgeArticles are drafted. However, a publisher may change the language so that a KnowledgeArticle is not necessarily the tenant's default language. A tenant may restrict this freedom and require all KnowledgeArticles be published in a default language. The row in KAT 63 and KAV 64 corresponding to an IKA is referred to as a “master version row”. Modifications of the IKA are saved as new versions, i.e., an additional row of information in KAT 63 and KAV 64 is generated which is identical to information in the master_row, excepting the status and the version information reflects the modifications. However, there exists modifications of a KnowledgeArticle that do not warrant generating a new row of information in KAT 63 or KAV 64 corresponding to a new version. For example were changes to a KnowledgeArticle such that changes to syntax and spelling were effectuated white leaving the overall content static. The publish may opt not to create a new version. Rather, the publisher may generate a draft from an existing version that is online and maintains the exact same version number. Once modifications have been effectuated and the same associated with a published status, the publisher may have the KnowledgeArticle, formerly having a draft status, replace the KnowledgeArticle formerly having an online status. No archiving of the KnowledgeArticle formerly having an online status occurs, because the two KnowledgeArticles correspond to a common version number. Thus, the KnowledgeArticle formerly having an online status is deleted. To create a new draft version as copy of an OKA, a PROCESS verb is employed. Were database 44 not to contain an OKA, an error would occur and be communicated to the publisher. For Offer_kav.PublishStatus field is read-only in the public API.
Translations of a KnowledgeArticle, referred to as a translated KnowledgeArticle (TKA) from the language identified in the master-version row may be generated at some point during or after the publication process, perhaps even after the is online. The master-row of KAV 64 is related to the row in the KAV 64 corresponding to the TKA by virtue of sharing a common VersionNumber and PublishStatus. Thus, were the OKA the subject of one or more TKA, which was also published, i.e., online, the deletion of the OKA deletes all corresponding TKAs. For example, the OKA may have been published in several different languages providing multiple TKAs. It should be understood, however, that a draft TKA can be related to only one of a draft master KnowledgeArticle or an online KnowledgeArticle, but not both.
Other users 20, 22 and 24, in addition to the publisher, are authorized to translate KnowledgeArticle into specific languages and are referred to as translators. Access granted to translators may be restricted in virtually any manner conceivable, dependent upon workflow rules. For example, a translator may be provided access to only certain sub-types of KnowledgeArticle, or KnowledgeArticles that have been published for a predetermined amount of time or KnowledgeArticle published in a certain geographic area, or a combination of the foregoing and the like.
Referring to
Typically users 20, 22 and 24 accessing database 44 are able to read KnowledgeArticles that are in an online status and in a default language that is associated with the user 20, 22 and 24. If no online version of a KnowledgeArticle exists in the language associated with the user 20, 22 and 24 requesting access to database 44, then the user 20, 22 and 24 would not perceive the KnowledgeArticle: User 20, 22 and 24 would not know that the KnowledgeArticle existed. This level of access to KnowledgeArticles is in addition to the security access filtering discussed above and typically is not enforced at that level. As a result, restricting users 20, 22 and 24 to access KnowledgeArticles based upon a pre-authorize language is not a real security filter. Typically, only a single row of information in KAV 64 corresponding to the KnowledgeArticle requested is provided to a user 20, 22 and 24 and it is the row that best fits the overall language preferences of the user 20, 22 and 24.
Referring to
Referring to
Information concerning KnowledgeArticles is recited in a section 208 of web page 190 entitled “Article Results”. A link 210 and a short abstract 212 corresponds to each KnowledgeArticle identified in section 208. Adjacent to each link 210 is a check box 214. Abstract 212 consists of about two rows of characters in superimposition with other metadata to inform a user 20, 22 and 24 as to the contents contained in the corresponding KnowledgeArticle. Activating the link 210 opens an Article Window 2116, discussed more fully below with respect to
Also included on web page 190 is a data entry box 224 in which a user 20, 22 and 24 may introduce a search query to access database 44 and obtain desired cases and/or KnowledgeArticles. Along those lines, for a particular case number, the KnowledgeArticles retrieved that are associated therewith may be filtered, using data entry box 224, entitled “Filter Article Results”.
Referring to
Referring to
Referring to
Referring to
Almost all access to the knowledge base takes a single slice through the versions. Usually it's the online slice, except when a publisher is searching through the draft workspace. We will apply a filter during query and keyword search to ensure we use the right slice according to user and request context.
The Computer code for operating and configuring network 10 to intercommunicate and to process web pages, applications and other data and media content as described herein is preferably downloaded and stored on a hard disk, but the entire program code, or portions thereof, may also be stored in any other volatile or non-volatile memory medium or device as is well known, such as a ROM or RAM, or provided on any media capable of storing program code, such as any type of rotating media including floppy disks, optical discs, digital versatile disk (DVD), compact disk (CD), microdrive, magneto-optical disks, and magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data. Additionally, the entire program code, or portions thereof, may be transmitted and downloaded from a software source over a transmission medium, e.g., over the Internet, or from another server, as is well known, or transmitted over any other conventional network connection as is well known (e.g., extranet, VPN, LAN, etc) using any communication medium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as are well known. It will also be appreciated that computer code for implementing embodiments of the present invention can be implemented in any programming language that can be executed on a client system and/or server or server system such as, for example, C, C++, HTML, any other markup language, Java™, JavaScript, ActiveX, any other scripting language, such as VBScript, and many other programming languages as are well known may be used. (Java™ is a trademark of Sun Microsystems, Inc.). Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
The present application claims priority to U.S. provisional patent application No. 61/331,300 filed May 4, 2010, entitled APPLICATION PROGRAMMING INTERFACE FOR A MULTI-TENANT ON-DEMAND DATABASE and identifying Oliver Y. Pin, Etienne Girauday, Orjan Kjellberg and Mark A. Fischer as inventors. This aforementioned patent application is incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61331300 | May 2010 | US |