U.S. patent application number 15/067969 was filed with the patent office on 2016-07-07 for content database for storing extracted content.
This patent application is currently assigned to NETAPP, INC.. The applicant listed for this patent is NETAPP, INC.. Invention is credited to Bryan R. Bell, Jim G. Crumpler, Steven S. Smith.
Application Number | 20160196358 15/067969 |
Document ID | / |
Family ID | 55700033 |
Filed Date | 2016-07-07 |
United States Patent
Application |
20160196358 |
Kind Code |
A1 |
Bell; Bryan R. ; et
al. |
July 7, 2016 |
CONTENT DATABASE FOR STORING EXTRACTED CONTENT
Abstract
Systems and methods for a content database storing extracted
content. A content manager engine executing on a computer system
performs various functions in relation to the content database. The
content manager engine may extract content fragments from documents
of different document types and store the content fragments to
content entries of the content database. The content manager engine
may reproduce a selected document using the content database, allow
direct modification of content entries, and merge two documents of
different types into a single document. The content manager engine
may also be configured to produce a solution document using the
content database based on one or more received user selections. A
solution document may be provided to address issues or queries
regarding computer system hardware or software. The solution
document may comprise a description of any services, products,
and/or technologies related to the issue or query.
Inventors: |
Bell; Bryan R.; (Dallas,
TX) ; Smith; Steven S.; (Beaufort, NC) ;
Crumpler; Jim G.; (Ballarat, AU) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
NETAPP, INC. |
Sunnyvale |
CA |
US |
|
|
Assignee: |
NETAPP, INC.
Sunnyvale
CA
|
Family ID: |
55700033 |
Appl. No.: |
15/067969 |
Filed: |
March 11, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13534610 |
Jun 27, 2012 |
9317513 |
|
|
15067969 |
|
|
|
|
Current U.S.
Class: |
715/255 |
Current CPC
Class: |
G06F 16/13 20190101;
G06F 16/22 20190101; G06F 16/93 20190101; G06F 40/166 20200101;
G06F 16/14 20190101; G06F 40/106 20200101; G06F 16/907 20190101;
G06F 16/84 20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30; G06F 17/21 20060101 G06F017/21; G06F 17/24 20060101
G06F017/24 |
Claims
1.-19. (canceled)
20. An apparatus, comprising: a memory; and logic, at least a
portion of the logic in circuitry coupled to the memory, the logic
to: receive a group identifier for production of a new document;
select a group mapping based on the received group identifier, the
group mapping to indicate a plurality of document identifiers;
retrieve a plurality of related document mappings based on the
plurality of document identifiers, the plurality of related
document mappings to include a document mapping for each of the
plurality of document identifiers, each document mapping to
identify one or more content entries in a content database, each
content entry to store a content fragment; retrieve a set of
content fragments from the content database based on the plurality
of related document mappings; and insert the set of content
fragments into the new document.
21. The apparatus of claim 20, the group mapping comprising a
plurality of data fields, the plurality of data fields to include a
field for the group identifier and a field for the plurality of
document identifiers.
22. The apparatus of claim 21, the plurality of data fields to
include fields for one or more of a brief description, a version
number, and a timestamp.
23. The apparatus of claim 20, the logic to insert the set of
content fragments into the new document in an order specified in
the selected group mapping.
24. The apparatus of claim 23, the order specified in the selected
group mapping based on an ordering of the plurality of document
identifiers indicated by the group mapping.
25. The apparatus of claim 20, the group identifier to identify a
topic of the grouping and comprising an identifier for the group
mapping.
26. The apparatus of claim 20, the logic to insert content
fragments in the new document based on an order specified by each
document mapping.
27. The apparatus of claim 20, the logic to format the new document
for display through a web browser.
28. The apparatus of claim 20, the logic to store the new document
as a document file to a file system of an operating system.
29. The apparatus of claim 20, each content entry to comprise an
address in the content database to store the content fragment.
30. A computer-implemented method, comprising: receiving a group
identifier for producing a new document; selecting a group mapping
based on the received group identifier, the group mapping
indicating a plurality of document identifiers; retrieving a
plurality of related document mappings based on the plurality of
document identifiers, the plurality of related document mappings to
include a document mapping for each of the plurality of document
identifiers, each document mapping to identify one or more content
entries in a content database, each content entry to store a
content fragment; retrieving a set of content fragments from the
content database based on the plurality of related document
mappings; and inserting the set of content fragments into the new
document.
31. The computer-implemented method of claim 30, the group mapping
comprising a plurality of data fields, the plurality of data fields
to include a field for the group identifier and a field for the
plurality of document identifiers.
32. The computer-implemented method of claim 31, the plurality of
data fields including fields for one or more of a brief
description, a version number, and a timestamp.
33. The computer-implemented method of claim 30, comprising
inserting the set of content fragments into the new document in an
order specified in the selected group mapping.
34. The computer-implemented method of claim 33, the order
specified in the selected group mapping based on an ordering of the
plurality of document identifiers indicated by the group
mapping.
35. The computer-implemented method of claim 30, the group
identifier identifying a topic of the grouping and comprising an
identifier for the group mapping.
36. The computer-implemented method of claim 30, comprising
inserting content fragments in the new document based on an order
specified by each document mapping.
37. The computer-implemented method of claim 30, comprising
formatting the new document for display through a web browser.
38. The computer-implemented method of claim 30, comprising storing
the new document as a document file to a file system of an
operating system.
39. The computer-implemented method of claim 30, each content entry
comprising an address in the content database to store the content
fragment.
40. One or more computer-readable media to store instructions that
when executed by a processor circuit causes the processor circuit
to: receive a group identifier for production of a new document;
select a group mapping based on the received group identifier, the
group mapping to indicate a plurality of document identifiers;
retrieve a plurality of related document mappings based on the
plurality of document identifiers, the plurality of related
document mappings to include a document mapping for each of the
plurality of document identifiers, each document mapping to
identify one or more content entries in a content database, each
content entry to store a content fragment; retrieve a set of
content fragments from the content database based on the plurality
of related document mappings; and insert the set of content
fragments into the new document.
41. The one or more computer-readable media of claim 40, with
instructions to insert the set of content fragments into the new
document in an order specified in the selected group mapping.
42. The one or more computer-readable media of claim 40, with
instructions to insert content fragments in the new document based
on an order specified by each document mapping.
43. The one or more computer-readable media of claim 40, with
instructions to format the new document for display through a web
browser.
44. The one or more computer-readable media of claim 40, with
instructions to store the new document as a document file to a file
system of an operating system.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 13/534,610, entitled "CONTENT DATABASE FOR
STORING EXTRACTED CONTENT", filed Jun. 27, 2012. The subject matter
of U.S. patent application Ser. No. 13/534,610 is hereby
incorporated herein by reference in its entirety.
FIELD OF THE INVENTION
[0002] The present invention relates to storage systems and, more
specifically, to a content database for storing extracted
content.
BACKGROUND OF THE INVENTION
[0003] A storage system typically comprises one or more storage
devices into which information may be entered, and from which
information may be obtained, as desired. The storage system
includes a storage operating system that functionally organizes the
system by, inter alia, invoking storage operations in support of a
storage service implemented by the system. The storage system may
be implemented in accordance with a variety of storage
architectures including, but not limited to, a network-attached
storage environment, a storage area network and a disk assembly
directly attached to a client or host computer. The storage devices
are typically disk drives organized as a disk array, wherein the
term "disk" commonly describes a self-contained rotating magnetic
media storage device. The term disk in this context is synonymous
with hard disk drive (HDD) or direct access storage device
(DASD).
[0004] The storage operating system of the storage system may
implement a high-level module, such as a file system, to organize
the information stored on volumes as a hierarchical structure of
storage objects, such as files. The storage system may be further
configured to allow many servers to access storage objects stored
on the storage system. In this model, the server may execute an
application that "connects" to the storage system over a computer
network, such as a point-to-point link, shared local area network
(LAN), wide area network (WAN), or virtual private network (VPN)
implemented over a public network such as the Internet. Each server
may request the data services of the storage system by issuing
access requests (read/write requests) as file-based and block-based
protocol messages (in the form of packets) to the system over the
network.
[0005] A plurality of storage systems may be interconnected to
provide a storage system architecture configured to service many
servers. In some embodiments, the storage system architecture
provides one or more aggregates, each aggregate comprising a set of
one or more storage devices (e.g., disks). Each aggregate may store
one or more storage objects, such as one or more volumes. The
aggregates may be distributed across a plurality of storage systems
interconnected as a cluster. The storage objects (e.g., volumes)
may be configured to store content of storage objects, such as
files, served by the cluster in response to multi-protocol data
access requests issued by servers.
[0006] Each storage system (node) of the cluster may include (i) a
storage server (referred to as a "D-blade") adapted to service a
particular aggregate or volume and (ii) a multi-protocol engine
(referred to as an "N-blade") adapted to redirect the data access
requests to any storage server of the cluster. In the illustrative
embodiment, the storage server of each storage system is embodied
as a disk element (D-blade) and the multi-protocol engine is
embodied as a network element (N-blade). The N-blade receives a
multi-protocol data access request from a client, converts that
access request into a cluster fabric (CF) message and redirects the
message to an appropriate D-blade of the cluster.
[0007] The storage systems of the cluster may be configured to
communicate with one another to act collectively to increase
performance or to offset any single storage system failure within
the cluster. The cluster provides data service to servers by
providing access to a shared storage (comprising a set of storage
devices). Typically, servers will connect with a storage system of
the cluster for data-access sessions with the storage system.
During a data-access session with a storage system, a server may
submit access requests (read/write requests) that are received and
performed by the storage system. Each server typically executes
numerous applications requiring the data services of the
cluster.
[0008] As discussed above, the storage operating system of the
storage system may implement a file system for storing a plurality
of storage objects, such as computer files. These files (or
"documents") may be produced by a wide variety of different types
of document applications, such as a word processor, spreadsheet
application, presentation application, image application, etc.
Currently, there are also many different types of formats for each
type of document application. As such, the storage system may store
a plurality of different document types (that are in a plurality of
different types of formats and compatible with a plurality of
different types of applications). This may be problematic when
attempting to access the content in the different document types on
the storage system. Typically, in order to access the content of
different document types, each application corresponding to each
document type would need to be installed and available for
accessing the content. As such, there is a need for a more
accessible method for storing documents on a storage system.
[0009] Another issue with current storage systems is the
inefficient manner for modifying related documents stored on the
storage system. For example, assume that a large number of
documents each relate to a particular technology. If the particular
technology has been updated, to update the documents accordingly,
each of the documents would need to be individually accessed,
modified, and saved to the file system. This is due to the fact
that the documents are stored as independent files on the file
system, each document having no connection or relationship to the
other. Such an update process may consume large amounts of time and
computer and human resources. As such, there is a need for a more
efficient method for modifying related documents on a storage
system.
[0010] Finally, another issue with current storage systems is the
inefficient manner used for providing solution documents for
clients/users of the storage systems for any issues or queries
regarding storage system hardware and/or software the clients/users
may have. The solution document may provide a description of how to
resolve the client's issue or query. Typically, to provide a
solution document to the client, an administrator or engineer is
needed to interact with the client to determine their issue or
query, determine any storage system services, products, and/or
technologies related to the issue or query, identify any documents
in the storage system describing these services, products, and/or
technologies, modify any of the documents if any of the
corresponding services, products, and/or technologies has been
recently updated, and produce a solution document for the client
that includes the description of the related services, products,
and/or technologies. Given that a large number of issues or queries
may be received by clients, such a solution process for each issue
or query may collectively consume large amounts of time and
computer and human resources. As such, there is a need for a more
efficient method for providing solution documents for the
clients/users.
SUMMARY OF THE INVENTION
[0011] Systems and methods for a content database storing extracted
content are described herein. A content manager engine executing on
a computer system may be configured to perform various functions in
relation to the content database. In some embodiments, the content
manager engine is configured to process documents of different
document types to produce content entries in the content database.
The content manager engine may be further configured to reproduce a
selected document using the content database, to directly modify
content entries in the content database, merge two documents of
different types into a single document, and produce solution
documents.
[0012] The content manager engine may be configured to process
documents of different document types by extracting content of the
documents and storing the content to the content database as
content entries. A plurality of documents may be processed to
populate the content entries of the content database. The plurality
of processed documents may comprise a plurality of different
document types in any format. As such, the content database
provides a repository of extracted/deconstructed content that is
accessible to users without requiring installation and use of the
wide variety of document applications that would otherwise be
needed to access the different document types.
[0013] The content manager engine may also be configured to produce
a new document based on a document mapping associated with an
original selected document. The new document comprises a
deconstructed version of the original selected document, without
the metadata or formatting of the original selected document. The
new document may also be modified by the user and saved as a
document file to a file system. The content manager engine may be
further configured to merge two documents of different types into a
single document by extracting content of the two documents, storing
the content to the content database as content entries, and
inserting the content into a new document. In some embodiments, the
content manager engine may also be configured to allow direct
modification of content fragments in content entries of the content
database. In these embodiments, modifying a content entry provides
automatic updating/modifying of any document mapping, group
mapping, or solution mapping using the modified content entry and
any subsequent document produced using the modified content
entry.
[0014] In some embodiments, a group mapping may be produced to
group two or more related document mappings that are associated
with two or more related documents. As such, the group mapping may
map to two or more related document mappings that are associated
with the content of two or more related documents. As such, a group
mapping may represent (and map to) content for an overall topic,
such as a particular storage system service, product, and/or
technology. Each document mapping specified in a group mapping may
represent (and map to) content for a particular sub-topic of the
overall topic. It may be convenient to group such related content,
and their corresponding document mappings, as a group mapping. One
or more group mappings may be stored to a group mapping DS.
[0015] In some embodiments, the content manager engine may be
configured to produce a solution document using the content
database. The solution document may be produced based on one or
more received user selections. In some embodiments, a solution
document may be provided for clients/users for issues or queries
regarding computer systems, such as computer hardware and/or
software, storage system hardware and/or software, etc. For
example, the solution document may comprise a description of any
computer system services, products, and/or technologies related to
the client's issue or query, and may also contain any execution
steps (such as installation steps, configuring steps, etc.) needed
to implement the related services, products, and/or technologies.
The solution document may include various types of content, such as
text, images (e.g., illustrations, diagrams, flowcharts, etc.),
presentation slides, etc.
[0016] In some embodiments, a solution document is produced using a
solution mapping. A solution mapping may map one or more received
user selections to one or more document mappings and/or one or more
group mappings. The document and/or group mappings will then map to
content entries in the content database having content fragments
relevant to the received user selections. The content fragments
comprise a solution document that is related to the user's issue or
query. A plurality of solution mappings may be produced to map a
wide variety of different user selections and different
combinations of user selections to document and/or group mappings.
The solution mappings are stored to a solution mapping data
structure.
BRIEF DESCRIPTION OF THE DRAWINGS
[0017] The novel features are set forth in the appended claims.
However, for purpose of explanation, several embodiments of the
invention are set forth in the following figures.
[0018] FIG. 1 is a block diagram of an exemplary storage system
environment in which some embodiments operate;
[0019] FIG. 2 is a schematic block diagram of an exemplary server
system that may be employed in the storage system environment of
FIG. 1;
[0020] FIG. 3 shows a flowchart of a method for processing a
document, in accordance with some embodiments;
[0021] FIG. 4 shows a conceptual illustration of the steps for
processing a selected document;
[0022] FIG. 5 shows a conceptual diagram of an exemplary document
mapping DS;
[0023] FIG. 6 shows a flowchart of a method for producing a new
document using a document mapping;
[0024] FIG. 7 shows a flowchart of a method for merging documents
of different types;
[0025] FIG. 8 shows a flowchart of a method for modifying content
entries in the content database;
[0026] FIG. 9 shows a conceptual diagram of an exemplary group
mapping DS;
[0027] FIG. 10 shows a flowchart of a method for producing a new
document using a group mapping;
[0028] FIG. 11 shows a conceptual diagram of an exemplary solution
mapping DS;
[0029] FIG. 12 shows a flowchart of a method for producing a
solution document using the content database; and
[0030] FIG. 13 is a diagram that conceptually illustrates exemplary
steps of the method of FIG. 12.
DETAILED DESCRIPTION
[0031] In the following description, numerous details are set forth
for purpose of explanation. However, one of ordinary skill in the
art will realize that the embodiments described herein may be
practiced without the use of these specific details. In other
instances, well-known structures and devices are shown in block
diagram form in order to not obscure the description with
unnecessary detail.
[0032] The description that follows is divided into three sections.
Section I describes a storage system environment in which some
embodiments operate. Section II describes a content database for
storing extracted content. Section III describes producing solution
documents using the content database.
I. Storage System Environment
A. Overview
[0033] FIG. 1 is a block diagram of an exemplary storage system
environment 90 in which some embodiments operate. The environment
90 comprises one or more server systems 110 that may each access
one or more storage systems 100 that are coupled to the server
systems 110 via a network 167. The one or more storage systems 100
may comprise a cluster storage system. Each storage system 100 may
comprise one or more storage devices 130 for storing data, the
storage devices 130 comprising a shared storage of the storage
system 100.
[0034] A server system 110 may be general-purpose computers
configured to execute applications over a variety of operating
systems, including the UNIX.RTM. and Microsoft Windows.RTM.
operating systems. Server systems generally utilize file-based
access protocols when accessing information (in the form of files
and directories) over a NAS-based network. Therefore, each server
110 may request the services of the storage system 100 by issuing
file access protocol messages (in the form of packets) to the
storage system over the network 167. For example, a server running
the Windows operating system may communicate with the storage
system 100 using the Common Internet File System (CIFS) protocol.
On the other hand, a server running the UNIX operating system may
communicate with the multi-protocol storage system using the
Network File System (NFS) protocol over TCP/IP. It will be apparent
to those skilled in the art that other servers running other types
of operating systems may also communicate with the integrated
multi-protocol storage system using other file access
protocols.
[0035] A server system 110 may comprise a computer system that may
execute a content manager engine 112 for performing embodiments
described herein. The content manager engine 112 may utilize data
services of the storage system 100 to access, store, and manage
data in the storage devices 130, such as document files 132 and a
content database 135. The content manager engine 112 may submit
access requests for accessing particular storage objects on the
storage devices, such as the document files 132 and the content
database 135 and the storage system may perform the received
requests on the storage objects.
[0036] A storage system 100 may be coupled to a server system 110
over a network 167 such as a local area network (LAN), an Ethernet
subnet, a PCI or PCIe subnet, a switched PCIe subnet, a wide area
network (WAN), a metropolitan area network (MAN), the Internet, or
the like. To facilitate access to the disks 130, a storage
operating system of the storage system implements a file system of
a virtualization system that "virtualizes" the storage space
provided by disks 130. The file system organizes the information as
a hierarchical structure of named directory and file objects
(hereinafter "directories" and "files") on the disks. Each
"on-disk" file may be implemented as set of disk blocks configured
to store information, such as data, whereas the directory may be
implemented as a specially formatted file in which names and links
to other files and directories are stored.
[0037] In the illustrative embodiment, the storage operating system
may comprise Data ONTAP.RTM. storage operating system, available
from NetApp, Inc. of Sunnyvale, Calif., which implements a Write
Anywhere File Layout (WAFL.RTM.) file system. However, it is
expressly contemplated that any appropriate storage operating
system, including a write in-place file system, may be enhanced for
use in accordance with embodiments described herein. As such, where
the term "WAFL" is employed, it should be taken broadly to refer to
any storage operating system that is otherwise adaptable to the
teachings of this embodiment.
[0038] As used herein, the term "storage operating system"
generally refers to the computer-executable code operable on a
computer that manages data access and may, in the case of a
multi-protocol storage system, implement data access semantics,
such as the Data ONTAP.RTM. storage operating system, which is
implemented as a microkernel. The storage operating system can also
be implemented as an application program operating over a
general-purpose operating system, such as UNIX.RTM. or
Windows.RTM., or as a general-purpose operating system with
configurable functionality, which is configured for storage
applications as described herein.
[0039] Interaction between the server systems 110 and the storage
system(s) 100 can enable the provision of storage services. That
is, the server systems 110 may request the services of the storage
system(s) 100 (by submitting read/write access requests), and the
storage system(s) 100 may respond to read/write access requests of
the server systems 110 by receiving or transmitting data to the
server systems 110 over the network 167 (e.g., by exchanging data
packets through a connection over the network 167).
[0040] Communications between a storage system 100 and any of
server systems 110 are typically embodied as packets sent over the
computer network 167. A server system 110 may send an access
request (a read/write access request) to the storage system 100 for
accessing particular data stored on the storage system. The server
system 110 may request the services of the storage system 100 by
issuing storage-access protocol messages formatted in accordance
with a conventional storage-access protocol for accessing storage
devices (such as CIFS, NFS, etc.). Access requests (e.g.,
read/write access requests) may be implemented by issuing packets
using file-based access protocols--such as the Common Internet File
System (CIFS) protocol or Network File System (NFS) protocol--over
the Transmission Control Protocol/Internet Protocol (TCP/IP) when
accessing data in the form of files and directories. Alternatively,
the server system 110 may issue access requests by issuing packets
using block-based access protocols--such as the Fibre Channel
Protocol (FCP), or Internet Small Computer System Interface (iSCSI)
Storage Area Network (SAN) access--when accessing data in the form
of blocks.
[0041] A storage device 130 may comprise writable storage device
media such as disk devices, video tape, optical devices, DVD,
magnetic tape, flash memory, Magnetic Random Access Memory (MRAM),
Phase Change RAM (PRAM), or any other similar media adapted to
store information (including data and parity information). As known
in the art, a storage device 130 may comprise storage objects
comprising, for example, one or more storage volumes, where each
volume has a file system implemented on the volume. A file system
implemented on the storage devices 130 may provide multiple
directories in a single volume, each directory containing zero or
more filenames. A file system provides a representation of how data
(files) are organized on a volume where data (files) are
represented as filenames that are organized into one or more
directories. Examples of common file systems include New Technology
File System (NTFS), File Allocation Table (FAT), Hierarchical File
System (HFS), Universal Storage Device Format (UDF), UNIX.RTM. file
system, and the like.
[0042] In some embodiments, the storage devices 130 of a storage
system 100 store a plurality of documents 132 comprising a
plurality of different document types, and a content database 135
comprising a plurality of content entries. In an alternative
embodiment, the documents 132 and the content database 135 may be
stored locally on a server system 110 and/or client system 160.
[0043] The documents 132 may comprise computer files produced by a
wide variety of different types of document applications, such as a
word processor/application, spreadsheet application, presentation
application, image application, etc. Currently, there are also many
different types of formats for each type of document application.
For example, the different types of formats for a word application
include Microsoft.RTM. Word.RTM. (DOC), Corel.RTM. WordPerfect.RTM.
(WPD), AbiSource.RTM. Abiword.RTM. (ABW), etc. As such, the
documents 132 may comprise a plurality of different document types
that are in a plurality of different types of formats and
compatible with a plurality of different types of applications.
This may be problematic when attempting to access the content in
the different document types on the storage system. Typically, in
order to access the content of different document types, each
application corresponding to each document type would need to be
installed and available for accessing the content.
[0044] As used herein, a document type of a document is determined
by the format type of the document. The document type of a document
may be determined by the format type implemented by the application
that produces the document. As known in the art, a file/document is
not an executable file, but rather contains data for use by the
corresponding application. As known in the art, a file/document is
organized and stored in a file system of the storage operating
system.
[0045] As used herein, an "original" document comprises a document
produced by a document application, the original document
containing content as well as metadata and formatting produced by
the document application. In some embodiments, the content manager
engine 112 extracts content of original documents by removing the
metadata and formatting of the original documents. As used herein,
a "deconstructed" document comprises a document produced by the
content manager engine 112, the deconstructed document containing
only the content of an original document. As such, a deconstructed
document comprises a deconstructed version of an original document
without the metadata or formatting of the original document.
[0046] In some embodiments, one or more storage devices 130 of a
storage system 100 store a content database 135 comprising a
plurality of content entries. The content database 135 may comprise
a collection of data or information organized for rapid search and
retrieval by a computer system, for example, using structured query
language (SQL), etc. The content database 135 may be structured to
provide storage, retrieval, modification, and/or deletion of data
in the content entries. Data of the content entries may be
retrieved through queries. For example, keywords and sorting
commands may be used to search, organize, and select data of the
content entries. Some examples of different types of databases that
may be implemented herein include document-oriented database, data
driven database, embedded database, federated database, cloud
database, data warehouse database, relational database,
transactional database, distributed database, etc. In other
embodiments, other types of databases may be implemented herein. In
some embodiments, the content database 135 and its content entries
are separate from the file system, wherein the content database 135
and the content entries are organized and stored outside the file
system and without use of the file system.
[0047] As shown in FIG. 1, the storage system environment 90 may
also include a plurality of client systems 160 connected with each
server 110 through a network (not shown), such as network 167. In
some embodiments, a user of a client system may submit, to the
content manager engine 112, one or more selections/parameters for
specifying an issue/problem or a query, for example, regarding
computer systems, such as computer hardware and/or software,
storage system hardware and/or software, etc. The terms "user" and
"client system" may sometimes be used interchangeably herein. The
content manager engine 112 may provide a user interface for
displaying the one or more user-selectable selections/parameters
and for receiving the selections from the client system/user. In
these embodiments, the content manager engine 112 may use the
content database 135 to provide a solution document based on the
one or more selections/parameters received from the client
system/user.
[0048] In some embodiments, each client system 160 may execute a
web browser 162 for interfacing/interacting with a server 110 via
the network. The web browser 162 on the client system 160 may
interface/interact the content manager engine 112 on the server 110
for performing embodiments described herein. In these embodiments,
the web browser 162 may be used to receive and display the user
interface from the content manager engine 112, receive one or more
selections from the user, and submit the one or more
selections/parameters to the content manager engine 112. The
content manager engine 112 may send the solution document to the
client system 160 via a file download, which may be stored to a
local storage device of the client system 160. In other
embodiments, the content manager engine 112 may send the solution
document to the client system 160 via a web-based format (such as
HyperText Markup Language (HTML), EXtensible Markup Language (XML),
etc.) which may be displayed on the web browser 162 without
requiring a file download. In these embodiments, a client system
would only require a web browser 162 to access the functions of the
content manager engine 112, without having to locally install and
execute the content manager engine 112 on the client system.
[0049] FIG. 2 is a schematic block diagram of an exemplary server
system 110 that may be employed in the storage system environment
90 of FIG. 1. The exemplary server system 110 may comprise
processor(s) 226, memory 228, a local storage 292, a network
adapter 295, an output component 297, and an input component 298
coupled by a bus 246.
[0050] The processors 226 are the central processing units (CPUs)
of the server system 110 and, thus, control the overall operation
of the server system 110. Processors 226 may include one or more
programmable general-purpose or special-purpose microprocessors,
digital signal processors (DSPs), programmable controllers,
application specific integrated circuits (ASICs), programmable
logic devices (PLDs), or the like, or a combination of such
devices.
[0051] The network adapter 295 may comprise mechanical, electrical,
and signaling circuitry needed to connect the server system 110 to
the network and to receive and transmit data over the network. The
network adapter 295 comprises a plurality of ports adapted to
couple the server system 110 to one or more other computer systems
(such as servers 110 or storage systems 100) over point-to-point
links, wide area networks, virtual private networks implemented
over a public network (Internet) or a shared local area network.
The network adapter 295 thus may comprise the mechanical,
electrical and signaling circuitry needed to connect the server
system 110 to the network. The network adapter 295 may comprise a
network port controller (e.g., Ethernet cards), specialized network
adapters, or any other physical device that controls the receiving
and transmitting of data over a network.
[0052] The output component 297 may be of any type generally used
by a computer system to provide information to an end user (e.g.,
administrator, etc.). For example, the output component 297 may
include a monitor, an audio speaker, or an alphanumeric display.
Similarly, the input component 298 may be of any type that allows
an end user to provide input (e.g., user selections) into a
computer system. For example, the input component 298 may be a
keyboard, a mouse, or a speech recognition system. In some
embodiments, the output component 297 comprises a monitor or
television that displays a user interface provided by the content
manager engine 112. In some embodiments, the input component 298
may be used by a user (e.g., administrator) for interacting with
and providing input to the user interface of the content manager
engine 112.
[0053] Memory 228 comprises storage locations that are addressable
by the processor and adapters, as well as other devices for storing
software program code such as the software described herein. The
processors and adapters may, in turn, comprise processing elements
and/or logic circuitry configured to execute the software code.
Memory 228 can be a random access memory (RAM), a read-only memory
(ROM), or the like, or a combination of such devices. It will be
apparent to those skilled in the art that other processing and
memory means, including various computer readable media, may be
used for storing and executing program instructions pertaining to
the invention described herein.
[0054] Memory 228 is for storing software program instructions and
data structures, such as an operating system and a content manager
module 112. The operating system may be, for example, UNIX.RTM.,
Windows NT.RTM., Linux.RTM., or any other operating system. In some
embodiments, the various modules may configure hardware components
of the server system to produce a content manager engine 112 for
performing embodiments described herein. The server memory 228 may
also store various data structures (DSs), such as a document
mapping DS 115, a group mapping DS 120, and a solution mapping DS
125, that are used by the content manager engine 112 for performing
embodiments described herein.
[0055] Local storage 292 may comprise a local writable storage
device, such as disk devices, video tape, optical devices, DVD,
magnetic tape, flash memory, Magnetic Random Access Memory (MRAM),
Phase Change RAM (PRAM), or any other similar media adapted to
store information (including data and parity information). Local
storage 292 is a storage device that stores data needed or produced
by the content manager module 112 when performing the embodiments
described herein. For example, such data may include the document
mapping DS 115, the group mapping DS 120, and the solution mapping
DS 125. The server system 110 loads data stored on the local
storage 292 into memory 228 from which they are accessed by
processors 226.
[0056] In some embodiments, the content manager engine 112 is
configured to use the document mapping DS 115, group mapping DS
120, and solution mapping DS 125 for performing various functions
described herein. For example, such functions may include managing
the content database 135, extracting content from documents and
storing the extracted content to the content database 135, merging
two documents of different types into a single document, and
producing solution documents for clients/users. The content
database 135 may also provide a user interface for facilitating the
various functions.
[0057] Note that a client system 160 may also comprise components
similar to the components of the server 110 illustrated in FIG. 2.
For example, a client system 160 may comprise one or more
processor(s) 226, memory 228, a local storage 292, a network
adapter 295, an output component 297, and an input component 298
coupled by a bus 246. The components of the client system 160 may
be used to interact/interface with the content manager engine 112
in accordance with embodiments herein. For example, the components
of the client system 160 may be used to execute the web browser 162
to interact/interface with the content manager engine 112.
II. Content Database for Storing Extracted Content
[0058] This section discusses systems and methods for a content
database storing extracted content. The content manager engine 112
may be configured to perform various functions in this regard. In
some embodiments, the content manager engine 112 may be configured
to process documents of different document types to produce content
entries in the content database 135. The content manager engine 112
may be further configured to reproduce a selected document using
the content database 135, to directly modify content entries in the
content database 135, and merge two documents of different types
into a single document.
A. Extracting Content of Documents and Storing to Content
Database
[0059] The content manager engine 112 may be configured to process
documents of different document types by extracting content of the
documents and storing the content to the content database 135 as
content entries. The content manager engine 112 may provide a user
interface to facilitate the processing of documents, the user
interface for displaying screen pages and receiving input from a
user (such as an administrator).
[0060] FIG. 3 shows a flowchart of a method 300 for processing a
document, in accordance with some embodiments. The method 300 is
described in relation to FIGS. 4-5 which conceptually illustrate
the steps of the method 300. In some embodiments, the method 300 is
performed by the content manager engine 112. The order and number
of steps of the method 300 are for illustrative purposes only to
demonstrate various operations that may be performed by the content
manager engine 112. In other embodiments, however, a different
order and/or number of steps may be used.
[0061] The method 300 begins by receiving (at 305), through the
user interface, a user selection of a document 132 for processing
and retrieves the selected document (e.g., from a storage system
110 through use of a file system of the storage operating system).
The selected document comprises an original document produced by a
document application. As such, the selected document contains
content as well as metadata and formatting produced by the document
application.
[0062] The method 300 then extracts (at 310) content of the
selected document. The method may do so by removing the original
metadata of the selected document. In general, the original
metadata may comprise metadata that describes the selected
document, but does not comprise content of the selected document.
For example, the removed original metadata may comprise a filename,
a timestamp, and/or other file attributes. In other embodiments,
the original metadata includes other file metadata produced by the
document application.
[0063] The method may also remove (at 310) the original formatting
of the selected document. In general, original formatting is
typically proprietary in nature and may comprise reserved metadata
that is specific to a proprietary document application for allowing
the selected document to be accessible to the document application.
Examples of different proprietary file formats include
Microsoft.RTM. Word.RTM. (DOC), Corel.RTM. WordPerfect.RTM. (WPD),
Adobe.RTM. Reader.RTM. (PDF), Microsoft.RTM. PowerPoint.RTM. (PPT),
etc. Original formatting may also be produced by a proprietary
operating system to allow for the storing and reading of the
document from storage devices. For example, a propriety file system
of the Data ONTAP.RTM., UNIX.RTM. or Windows.RTM. operating systems
may produce their own file formatting in documents to allow its
file system to read and write the documents to storage devices.
[0064] The extracted content may comprise the remaining data of the
selected document after the metadata and formatting are removed (at
step 310). The extracted content may comprise various types of
content, such as text and images. Extracted content for text may
comprise text at a character level. Images may comprise an
"internal" format that comprises an encoding type of the image,
such as Joint Photographic Experts Group (JPEG), Windows bitmap
(BMP), Portable Network Graphics (PNG), Graphics Interchange Format
(GIF), etc. In some embodiments, the internal encoding formatting
of image content is retained, while the remaining "external"
formatting relating to the image content is removed.
[0065] Then method then divides (at 315) the extracted content into
one or more content fragments. A content fragment may comprise a
portion of the extracted content, the portion comprising a
predetermined amount of data (storage data size). In cases where
the data size of the extracted content is equal to or less than the
predetermined amount of data, the extracted content comprises a
single content fragment and may be referred to herein as simply the
extracted content. In most cases, however, the data size of the
extracted content is greater than the predetermined amount of data,
and the extracted content is divided into a plurality of content
fragments.
[0066] The method then stores (at 320) each content fragment in a
content entry of the content database 135. As such, the content
entries of the content database 135 will store only pure extracted
content from the documents, without any metadata or formatting.
Each content entry will have an associated storage location in the
content database 135. For example, the associated storage location
may comprise an address in the content database 135 specified by
coordinate positions (such as column and row coordinates). In other
embodiments, the storage locations of the content entries are
specified using other methods.
[0067] FIG. 4 shows a conceptual illustration of the steps for
processing a selected document. As shown in FIG. 4, a selected
document 405 is retrieved and its content is extracted to produce
extracted content 410. The extracted content 410 is divided into
one or more content fragments 415, such as a first content fragment
and a second content fragment. Each content fragment 415 is stored
as a content entry 420 in the content database 135. For example,
the method 300 may store the first content fragment as a first
entry and a second content fragment as a second entry in the
content database 135. The first entry may be stored at a first
storage location and the second entry may be stored at a second
storage location in the content database 135. In the example of
FIG. 4, the storage locations may be specified by column and row
coordinates. In other embodiments, however, the storage locations
may be specified in a different manner.
[0068] The method then produces (at 325) a document mapping
associated with the selected document. The document mapping may
comprise a plurality of data fields, including data fields for a
document identifier, storage locations for the one or more content
entries in the content database, and various mapping attributes.
The document mapping may be produced using input received from a
user through the user interface. For example, the method 300 may
receive the document identifier and/or the various attributes from
the user. For example, the document identifier may comprise the
original document filename, or another identifier as specified by
the user.
[0069] The various attributes included in a document mapping may
comprise, for example, a brief description, a version number,
and/or timestamp. The brief description may describe the content of
the selected document. For example, the brief description may
specify the topic of the content and/or any topics related to the
content. For example, the brief description may specify any storage
system services, products, and/or technologies that are the topic
and/or related topic of the content. The brief description may be
received from a user through the user interface. The brief
description may be used by administrators for determining future
use of the document mapping. For example, the brief description may
be used to determine whether the document mapping should be
included in a group mapping or a solution mapping (as discussed
below). The version number may comprise the version number of the
document mapping. The version number may be automatically
incremented by the method 300 when a document mapping or its
content entries are updated. The timestamp may comprise the time
and day the current version of the document mapping was produced.
In other embodiments, the document mapping may include other types
of attributes.
[0070] In the document mapping, the storage locations for the one
or more content entries in the content database 135 comprise the
storage locations of the one or more content entries that stores
the one or more content fragments in step 320. As such, the
document mapping may specify a document identifier that maps to one
or more content entries in the content database. The document
mapping may be used later to produce a new document that comprises
a deconstructed version of the selected document, without the
metadata or formatting of the selected document (as discussed
below). In some embodiments, the document mapping also specifies an
ordering of the content entries in the content database 135. When
later producing the new document based on the document mapping, the
ordering specifies the order/sequence in which the content
fragments stored in the content entries are inserted into the new
document. As such, the document mapping also specifies an ordering
of the content fragments in the new document.
[0071] The method then stores (at 330) the document mapping to a
document mapping DS 115. FIG. 5 shows a conceptual diagram of an
exemplary document mapping DS 115. As shown in FIG. 5, the document
mapping DS 115 comprises a plurality of document mappings 501. Each
document mapping 501 may comprise a plurality of data fields,
including data fields for a document identifier 505, storage
locations 510 for the one or more content entries in the content
database 510, and various mapping attributes 515. The document
identifier 505 identifies the associated document, but also
comprises an identifier for the document mapping 501. The document
mappings 501 may be searched using any of the data fields. For
example, the content manager engine 112 may provide a user
interface to provide a keyword search of the document identifier
505 or the mapping attributes 515.
[0072] The method 300 then ends. The method 300 may be repeated for
a plurality of selected documents. As such, a plurality of
documents may be processed to populate the content entries of the
content database 135. Since the metadata and the formatting of the
documents are removed, the plurality of processed documents may
comprise a plurality of different document types in any format. As
such, the content database 135 provides a repository of
extracted/deconstructed content that is accessible to users without
requiring installation and use of the wide variety of document
applications that would otherwise be needed to access the different
document types. In the embodiments below, the content entries of
the content database 135 may be accessed to produce new documents,
modify content entries, and documents of different document
types.
B. Producing a New Document Using a Document Mapping
[0073] The content manager engine 112 may be configured to produce
a new document based on a document mapping associated with an
original selected document. The new document comprises a
deconstructed version of the original selected document, without
the metadata or formatting of the original selected document. The
new document may also be modified by the user and saved as a
document file to a file system. The content manager engine 112 may
provide a user interface to facilitate the producing, modifying,
and saving of the new document, the user interface for displaying
screen pages and receiving input from a user.
[0074] FIG. 6 shows a flowchart of a method 600 for producing a new
document using a document mapping, in accordance with some
embodiments. In some embodiments, the method 600 is performed by
the content manager engine 112. The order and number of steps of
the method 600 are for illustrative purposes only to demonstrate
various operations that may be performed by the content manager
engine 112. In other embodiments, however, a different order and/or
number of steps may be used.
[0075] The method 600 begins by receiving (at 605), from a user
through the user interface, a document identifier for producing a
new document. Based on the received document identifier, the method
600 then selects and retrieves (at 610) a corresponding document
mapping 501 from the document mapping DS 115, the corresponding
document mapping having a document identifier 505 that matches the
received document identifier.
[0076] Based on the selected document mapping, the method 600 then
produces (at 615) the new document. The method may do so by reading
the storage locations 510 for the one or more content entries that
are specified in the selected document mapping and retrieving the
content fragments stored in the one or more content entries from
the content database using the storage locations 510. The method
600 may then insert/incorporate the retrieved content fragments
into the new document. In some embodiments, the method 600 inserts
the retrieved content fragments into the new document in an order
specified by the selected document mapping. For example, as shown
in FIG. 5, a document mapping having a document identifier 505 "D2"
specifies an ordering of content fragments by specifying the
ordering of content entries "E25, E35." As such, a first content
fragment (retrieved from a first content entry E25) is inserted in
the beginning of the new document and in front of a second content
fragment (retrieved from a second content entry E35) in the new
document.
[0077] The method 600 then displays (at 620) the content of the new
document to the user, for example through the user interface. The
content of the new document comprises the one or more inserted
content fragments. As an optional step, the method 600 may receive
(at 625) modifications of the content of the new document through
the user interface. Modifications of the content of the new
document may include the re-organizing, editing, deletion, and/or
adding of content.
[0078] The method 600 then saves (at 630) the new document as a
file document to a storage device. The saved new document may or
may not contain user modifications. The new document may be stored
as a document file to a file system of an operating system (such as
a storage operating system). The method may receive a filename for
the new document from a user through the user interface. In some
embodiments, the new document comprises a "deconstructed" document
comprising the content of an original document without the metadata
or formatting of the original document. In some embodiments, the
new document is formatted in a web-based format (e.g., HTML, XML,
etc.) for displaying the new document through a web browser
application. The method 600 then ends.
C. Merging Document of Different Types into a Single Document
[0079] The content manager engine 112 may be configured to merge
two documents of different types into a single document by
extracting content of the two documents, storing the content to the
content database 135 as content entries, and inserting the content
into a new document. The content manager engine 112 may provide a
user interface to facilitate the merging of documents, the user
interface for displaying screen pages and receiving input from a
user.
[0080] FIG. 7 shows a flowchart of a method 700 for merging
documents of different types, in accordance with some embodiments.
In some embodiments, the method 700 is performed by the content
manager engine 112. The order and number of steps of the method 700
are for illustrative purposes only to demonstrate various
operations that may be performed by the content manager engine 112.
In other embodiments, however, a different order and/or number of
steps may be used.
[0081] The method 700 begins by receiving (at 705), through the
user interface, a user selection of two or more documents 132 for
merging and retrieves the selected documents (e.g., from a storage
system 110 through use of a file system of the storage operating
system). The two or more selected documents comprise documents of
different format types. As such, each selected document may
comprise an original document produced by a different document
application. For purposes of illustration, as described herein, the
selected documents comprise a first document in a first format and
a second document in a second format, the first and second formats
being different. In other embodiments, the selected documents
comprise more than two different document types.
[0082] The method 700 then extracts (at 710) content of the
selected documents by removing the original metadata and formatting
of the selected documents. For example, the method 700 may extract
a first content from the first document in the first format by
removing metadata and formatting of the first format and extract a
second content from the second document in the second format by
removing metadata and formatting of the second format.
[0083] Then method then divides (at 715) the extracted content into
content fragments, each content fragment comprising a predetermined
amount of data. For purposes of illustration, as described herein,
the extracted content from each selected document comprises a
single content fragment and is referred to simply as the extracted
content of the selected document. In other embodiments, however,
the extracted content from each selected document comprises a
plurality of content fragments.
[0084] The method 700 then stores (at 720) each content fragment in
a content entry of the content database 135, each content entry
having an associated storage location in the content database 135.
For example, the method 700 may store the first content as a first
entry in the content database 135 and store the second content as a
second entry in the content database 135.
[0085] The method then produces (at 725) a document mapping
associated with a new document used for containing the extracted
content of the selected documents. The document mapping may
comprise a plurality of data fields, including data fields for a
document identifier, storage locations for the one or more content
entries in the content database, and various mapping attributes.
For example, the document mapping may specify a document identifier
that maps to the first and second entries in the content database.
The method then stores (at 730) the document mapping to a document
mapping DS 115. The method 700 then ends.
[0086] Note that the document mapping produced at step 725 may be
used later to produce the new document using the method 600 of FIG.
6. For example, the method 600 may receive (at 605) a document
identifier for producing the new document. The method 600 then
selects (at 610) a corresponding document mapping 501 from the
document mapping DS 115, the corresponding document mapping having
a document identifier 505 that matches the received document
identifier. Based on the selected document mapping, the method 600
then produces (at 615) the new document. The method may do so by
reading the storage locations 510 for the first and second content
entries that are specified in the selected document mapping, and
retrieving the first content from the first content entry and the
second content from the second content entry of the content
database. The method 600 may then insert/incorporate the retrieved
first and second content into the new document. In some
embodiments, the method 600 inserts the retrieved content fragments
into the new document in an order specified by the selected
document mapping. For example, the document mapping may specify
that the first content be placed before the second content in the
new document.
[0087] The method 600 then displays (at 620) the first and second
content of the new document to the user, for example through the
user interface and receives (at 625) modifications of the first and
second content of the new document through the user interface. The
method 600 then saves (at 630) the new document to a file system.
The new document comprises a deconstructed version of the plurality
of selected documents, without the metadata or formatting of the
plurality of selected documents.
D. Directly Modifying Content Entries
[0088] In some embodiments, the content manager engine 112 may also
be configured to allow direct modification of content fragments in
content entries of the content database (referred to herein as
modifying or updating content entries). In these embodiments,
modifying a content entry provides automatic updating/modifying of
any document mapping, group mapping, or solution mapping using the
modified content entry and any subsequent document produced using
the modified content entry. This may drastically reduce the amount
of modifications needed to be performed on a multitude of mappings
and/or documents that may be affected by the modified content
fragment. Rather, in these embodiments, only the content fragments
would need to be modified in the content database, and all
dependent mappings and/or documents would be automatically updated
accordingly. The content manager engine 112 may provide a user
interface to facilitate the direct modification and storage of
content entries in the content database, the user interface for
displaying screen pages and receiving input from a user.
[0089] FIG. 8 shows a flowchart of a method 800 for modifying
content entries in the content database 135, in accordance with
some embodiments. In some embodiments, the method 800 is performed
by the content manager engine 112. The order and number of steps of
the method 800 are for illustrative purposes only to demonstrate
various operations that may be performed by the content manager
engine 112. In other embodiments, however, a different order and/or
number of steps may be used.
[0090] The method 800 begins by receiving (at 805), from a user
through the user interface, a document identifier for a document
mapping comprising content entries to be modified. Based on the
received document identifier, the method 800 then selects (at 810)
a corresponding document mapping 501 from the document mapping DS
115, the corresponding document mapping having a document
identifier 505 that matches the received document identifier.
[0091] The method 800 then retrieves (at 815), from the content
database 135, one or more content fragments of one or more content
entries specified by the selected document mapping. The method may
do so by reading the storage locations 510 for the one or more
content entries specified in the selected document mapping and
retrieving the content fragments stored in the one or more content
entries from the content database using the storage locations
510.
[0092] The method 800 then displays (at 820) the one or more
content fragments to the user, for example through the user
interface. The method 800 then receives (at 825) modifications of
one or more content fragments through the user interface.
Modifications of a content fragment may include the re-organizing,
editing, deletion, and/or adding of the content fragment. The
method 800 then saves (at 830) the one or more modified content
fragments to their corresponding content entries in the content
database 135. The method 800 then ends.
[0093] In some embodiments, a corresponding content entry for a
content fragment comprises the content entry that previously stored
the un-modified content fragment. In these embodiments, a new
content entry and/or a new storage location is not used for to
store a modified content fragment. As such, each modified content
fragment is stored to the same content entry having the same
storage location in the content database 135. Thus, any document
mapping, group mapping, or solution mapping that are dependent upon
and use the modified content entry will be automatically
updated/modified since any such dependent mapping will still
specify and map to the same storage location, which now contains
the modified content fragment. As discussed below, group mappings
and solution mappings may be dependent on and use one or more
document mappings. Thus, group mappings and solution mappings that
are dependent on an updated/modified document mapping are also
automatically updated.
[0094] Modifying a content entry also provides automatic
updating/modifying of any subsequent document produced using a
modified document mapping. To produce the document, the modified
document mapping is used to retrieve one or more modified content
fragments from one or more modified content entries, the modified
content fragments being inserted into the document. As such, any
subsequent document produced using a modified content entry will be
automatic updated to include the modified content fragments.
[0095] For example, assume that a first document mapping was
already produced using the method 300 of FIG. 3, the first document
mapping specifying a first document identifier that maps to first
and second content entries in the content database, the first and
second content entries storing first and second content fragments,
respectively. In accordance with method 800 of FIG. 8, the first
content fragment of the first content entry is modified and the
modified first content fragment is stored to the same first content
entry of the content database. The method 600 of FIG. 6 may then be
used to produce a modified document containing the modified first
content fragment. For example, the method 600 may receive (at 605)
the first document identifier and then retrieve the first document
mapping from the document mapping DS 115. Using the first document
mapping, the method 600 then produces (at 615) the modified
document by retrieving the modified first content fragment from the
first content entry and the second content fragment from the second
content entry from the content database, and inserting the modified
first content fragment and the second content fragment into the
modified document.
E. Group Mappings
[0096] In some embodiments, a group mapping may be produced to
group two or more related document mappings that are associated
with two or more related documents. As such, the group mapping may
specify a group identifier that maps to two or more related
document mappings that are associated with the two or more related
documents. Related document mappings and related documents may be
determined by an administrator, for example, using the brief
descriptions included in the mapping attributes 515 of the document
mappings 501 (as shown in FIG. 5). The group mapping may be used to
represent a particular overall topic, such as a particular storage
system service, product, and/or technology. The related documents
of a group mapping may each be relevant to the overall topic of the
group mapping and may each be needed to provide a complete
description of the overall topic. As such, it may be convenient to
group such related documents, and their corresponding related
document mappings, as a group mapping. A group mapping may be used
to generate a document using the two or more related document
mappings. One or more group mappings may be stored to a group
mapping DS 120.
[0097] FIG. 9 shows a conceptual diagram of an exemplary group
mapping DS 120. As shown in FIG. 9, the group mapping DS 120
comprises a plurality of group mappings 901. Each group mapping 901
may comprise a plurality of data fields, including data fields for
a group identifier 905, two or more related document identifiers
910, and various mapping attributes 915. The group identifier 905
identifies the topic of the associated grouping, but also comprises
an identifier for the group mapping 901.
[0098] Each related document identifier 910 comprises a document
identifier 505 for a document mapping 501 in the document mapping
DS 115. In some embodiments, the group mapping 901 also specifies
an ordering of content entries from the content database 135 by
specifying an ordering of the two or more related document
identifiers 910 of the of the two or more related document mappings
501. When later producing the new document based on the group
mapping 901, the ordering specifies the order/sequence in which the
content fragments stored in the content entries are inserted into
the new document. As such, the group mapping also specifies an
ordering of the content fragments in the new document. Different
ordering of the content fragments in the new document may be
implemented, for example, to improve organization or understanding
of the content, to emphasize more important content and less
important content, etc.
[0099] The various attributes 915 included in a group mapping 901
may comprise, for example, a brief description, a version number,
and/or timestamp. For example, the brief description may describe
the overall topic associated with the group mapping 901 and the
topic of the document associated with each document identifier 910
listed in the group mapping 901. The brief description may be
received from a user through the user interface. The brief
description may be used by administrators for determining future
use of the group mapping. For example, the brief description may be
used to determine whether the group mapping should be included in a
solution mapping (as discussed below). The version number may
comprise the version number of the group mapping. The timestamp may
comprise the time and day the current version of the group mapping
was produced. In other embodiments, the group mapping may include
other types of attributes. The group mapping may be produced using
input received from a user through the user interface. For example,
the group identifier 905 and/or the various attributes may be
received from a user.
[0100] The content manager engine 112 may be configured to produce
a new document based on a group mapping 901 by using two or more
related group mappings 910. The new document may also be modified
by the user and saved as a document file to a file system. The
content manager engine 112 may provide a user interface to
facilitate the producing, modifying, and saving of the new
document, the user interface for displaying screen pages and
receiving input from a user.
[0101] FIG. 10 shows a flowchart of a method 1000 for producing a
new document using a group mapping, in accordance with some
embodiments. In some embodiments, the method 1000 is performed by
the content manager engine 112. The order and number of steps of
the method 1000 are for illustrative purposes only to demonstrate
various operations that may be performed by the content manager
engine 112. In other embodiments, however, a different order and/or
number of steps may be used. Some steps of the method 1000 are
similar to steps of the method 600 of FIG. 6 and are not discussed
in detail here.
[0102] The method 1000 begins by receiving (at 1005), from a user
through the user interface, a group identifier 905 for producing a
new document. Based on the received group identifier, the method
1000 then selects and retrieves (at 1010) a corresponding group
mapping 901 from the group mapping DS 120, the corresponding group
mapping having a group identifier 905 that matches the received
group identifier.
[0103] Based on the selected group mapping 901, the method 1000
then produces (at 1015) the new document. The method may do so by
reading the two or more related document identifiers 910 specified
in the selected group mapping 901. For each related document
identifier 910, the method 1000 may retrieve a corresponding
document mapping 501 from the document mapping DS 115, read storage
locations 510 for content entries specified in the document mapping
501, retrieve content fragments stored in the content entries from
the content database, and insert/incorporate the retrieved content
fragments into the new document (as discussed in relation to method
600 of FIG. 6).
[0104] In some embodiments, the method 1000 inserts the retrieved
content fragments into the new document in an order specified by
the selected group mapping 901. In some embodiments, the group
mapping 901 specifies an ordering of content entries by specifying
an ordering of the two or more related document identifiers 910.
The ordering specifies the order/sequence in which the content
fragments stored in the content entries are inserted into the new
document. For example, as shown in FIG. 9, a group mapping having a
group identifier 905 "G2" specifies an ordering of content
fragments of content entries by specifying the ordering of related
document identifiers 910 "D18, D29, D3." As such, the content
fragments of content entries specified by a first document mapping
corresponding to document identifier D18 is inserted at the
beginning of the new document, the content fragments of content
entries specified by a second document mapping corresponding to
document identifier D29 is inserted in the middle of the new
document, and the content fragments of content entries specified by
a third document mapping corresponding to document identifier D3 is
inserted at the end of the new document.
[0105] The method 1000 then displays (at 1020) the content of the
new document to the user, for example through the user interface.
As an optional step, the method 1000 may receive (at 1025)
modifications of the content of the new document through the user
interface. The method 1000 then saves (at 1030) the new document as
a file document to a storage device. The saved new document may or
may not contain user modifications. The new document may be stored
as a document file to a file system of an operating system (such as
a storage operating system). In some embodiments, the new document
is formatted in a web-based format (e.g., HTML, XML, etc.) for
displaying the new document through a web browser application. The
method 1000 then ends.
III. Producing Solution Documents Using Content Database
[0106] As discussed above, another issue with current storage
systems is the inefficient manner used for providing solution
documents for clients/users of the storage systems for any issues
or queries regarding computer systems the clients/users may have.
The solution document may provide a description of how to resolve
the client's issue or query. Typically, to provide a solution
document to the client, an administrator or engineer is needed to
interact with the client to determine their issue or query,
determine any storage system services, products, and/or
technologies related to the issue or query, identify any documents
in the storage system describing these services, products, and/or
technologies, modify any of the documents if any of the
corresponding services, products, and/or technologies has been
recently updated, and produce a solution document for the client
that includes the description of the related services, products,
and/or technologies. Given that a large number of issues or queries
may be received by clients, such a solution process for each issue
or query may collectively consume large amounts of time and
computer and human resources. As such, there is a need for a more
efficient method for providing solution documents for the
clients/users.
[0107] In some embodiments, the content manager engine 112 may be
configured to produce a solution document using the content
database 135 based on one or more received user selections. In some
embodiments, a solution document may be provided for clients/users
for any issues or queries regarding computer systems, such as
computer hardware and/or software, storage system hardware and/or
software, etc. The solution document may comprise a description of
any storage system services, products, and/or technologies related
to the client's issue or query, and may also contain any execution
steps (such as installation steps, configuring steps, etc.) needed
to implement the related services, products, and/or technologies.
The solution document may include various types of content, such as
text, images (e.g., illustrations, diagrams, flowcharts, etc.),
presentation slides, etc.
A. Solution Mappings
[0108] In some embodiments, a solution mapping may be produced for
mapping one or more received user selections to one or more
document mappings and/or one or more group mappings. The document
and/or group mappings will then map to content entries having
content relevant to the one or more received user selections and
comprise a solution document that addresses the user's issue or
query. A plurality of solution mappings may be produced to map a
wide variety of different user selections and different
combinations of user selections to document and/or group
mappings.
[0109] The document and/or group mappings included in a particular
solution mapping may be determined by an administrator, for
example, using the brief descriptions included in the mapping
attributes 515 of the document mappings 501 (as shown in FIG. 5)
and the mapping attributes 915 of the group mappings 901 (as shown
in FIG. 9). The solution document produced by a solution mapping
may address a particular situation encountered by the user, such as
a particular issue or query regarding a storage system service,
product, and/or technology. One or more solution mappings may be
stored to a solution mapping DS 125.
[0110] FIG. 11 shows a conceptual diagram of an exemplary solution
mapping DS 125. As shown in FIG. 11, the solution mapping DS 125
comprises a plurality of solution mappings 1101. Each solution
mapping 1101 may comprise a plurality of data fields, including
data fields for selections/parameters 1105, mapping identifiers
1110, and various mapping attributes 1115. The
selections/parameters 1105 may specify any combination of one or
more received user selections/parameters for specifying an
issue/problem or a query. In other embodiments, the
selections/parameters 1105 may also specify one or more received
automated selections/parameters for specifying the issue or query.
The mapping identifiers 1110 specify one or more document
identifiers 505 for one or more document mappings 501. In other
embodiments, the mapping identifiers 1110 may also specify one or
more group identifiers 905 for one or more group mappings 901.
[0111] In some embodiments, the solution mapping 1101 also
specifies an ordering of content entries from the content database
135 by specifying an ordering of the mapping identifiers 1110 of
the of the document and/or group mappings. When later producing the
solution document based on the solution mapping 1101, the ordering
specifies the order/sequence in which the content fragments stored
in the content entries are inserted into the solution document. As
such, the solution mapping also specifies an ordering of the
content fragments in the solution document. Different ordering of
the content fragments in the solution document may be implemented,
for example, to improve organization or understanding of the
content, to emphasize more important content and less important
content, etc.
[0112] The various attributes 1115 included in a solution mapping
1101 may comprise, for example, a brief description, a version
number, and/or timestamp. The brief description may describe the
general situation and issue or query described by the user and a
general description of the solution document for addressing such.
The version number may comprise the version number of solution
mapping. The timestamp may comprise the time and day the current
version of the solution mapping was produced. In other embodiments,
the solution mapping may include other types of attributes.
B. Producing a Solution Document Using a Solution Mapping
[0113] The content manager engine 112 may be configured to produce
a solution document based on one or more user selections using the
content database 135. The solution document may also be modified by
the user and saved as a document file to a file system. The content
manager engine 112 may provide a user interface to facilitate the
producing, modifying, and saving of the solution document, the user
interface for displaying screen pages and receiving input from a
user.
[0114] FIG. 12 shows a flowchart of a method 1200 for producing a
solution document using the content database, in accordance with
some embodiments. In some embodiments, the method 1200 is performed
by the content manager engine 112. The order and number of steps of
the method 1200 are for illustrative purposes only to demonstrate
various operations that may be performed by the content manager
engine 112. In other embodiments, however, a different order and/or
number of steps may be used. Some steps of the method 1200 are
similar to steps of the method 600 of FIG. 6 and are not discussed
in detail here.
[0115] The method 1200 begins by receiving (at 1205), from a user
of a client system through the user interface, one or more
selections/parameters for specifying an issue/problem or a query
regarding computer hardware and/or software, such as storage system
hardware and/or software. The content manager engine 112 may
provide a user interface for displaying one or more user-selectable
selections/parameters and for receiving the selections from the
client/user. For example, the user may interact with a client
system 160 that executes a web browser 162 for
interfacing/interacting, via a network, with the content manager
engine 112 executing on a server 110. In these embodiments, the web
browser 162 may be used to receive and display the user interface
from the content manager engine 112, receive one or more selections
from the user, and submit the one or more selections/parameters to
the content manager engine 112.
[0116] As an optional step, the method 1200 then produces (at 1207)
one or more automated selections/parameters based on the one or
more received user selections. The content manager engine 112 may
be configured to determine additional selections/parameters for
specifying an issue or query by using the received user selections.
In these embodiments, the user interface of the content manager
engine 112 may display simplified "higher-level" options/parameters
to the user and automatically determine detailed "lower-level"
options/parameters. As such, the user may need to only select a few
higher-level options while the method 1200 automatically fills in
and produces one or more lower-level options.
[0117] Based on the one or more received user and/or automated
selections, the method 1200 then selects and retrieves (at 1210) a
corresponding solution mapping 1101 from the solution mapping DS
125. In other embodiments, the method 1200 selects the
corresponding solution mapping 1101 based on one or more received
user selections and/or one or more automated selections. The
corresponding solution mapping 1101 comprises a combination of
selections 1105 that matches the one or more received user
selections. In other embodiments, the corresponding solution
mapping 1101 comprises a combination of selections 1105 that
matches the one or more received user selections and the one or
more automated selections. The selected solution mapping 1101
comprises a data field for mapping identifiers 1110 that specifies
one or more document identifiers 505 for one or more document
mappings 501 in the document mapping DS 115 and/or one or more
group identifiers 905 for one or more group mappings 901 in the
group mapping DS 120.
[0118] Based on the selected solution mapping 1101, the method 1200
then produces (at 1215) the solution document. The method may do so
by reading the one or more document identifiers 505 and/or one or
more group identifiers 905 specified in the selected solution
mapping 1101. For each document identifier 505 specified in the
selected solution mapping 1101, the method 1200 may retrieve a
corresponding document mapping 501 from the document mapping DS
115, read storage locations 510 for content entries specified in
the document mapping 501, retrieve content fragments stored in the
content entries from the content database, and insert/incorporate
the retrieved content fragments into the solution document (as
discussed in relation to method 600 of FIG. 6). For each group
identifier 905 specified in the selected solution mapping 1101, the
method 1200 may retrieve a corresponding group mapping 901 from the
group mapping DS 120. For each document identifier 505 specified in
the group mapping 901, the method 1200 may retrieve a corresponding
document mapping 501 from the document mapping DS 115, read storage
locations 510 for content entries specified in the document mapping
501, retrieve content fragments stored in the content entries from
the content database, and insert/incorporate the retrieved content
fragments into the solution document.
[0119] In some embodiments, the method 1200 inserts the retrieved
content fragments into the solution document in an order specified
by the selected solution mapping 1101. In some embodiments, the
solution mapping 1101 specifies an ordering of content entries by
specifying an ordering of the one or more document and/or group
identifiers for one or more document and/or group mappings. The
ordering specifies the order/sequence in which the content
fragments stored in the content entries are inserted into the
solution document.
[0120] The method 1200 then displays (at 1220) the content of the
solution document to the user, for example through the user
interface. In some embodiments, the method 1200 may do so by
sending the solution document to the client system 160, the
solution document formatted in a web-based format (such as
HyperText Markup Language (HTML), EXtensible Markup Language (XML),
etc.) for displaying on a web browser 162 executing on the client
system. In these embodiments, a client system would only require a
web browser 162 to access the functions of the content manager
engine 112 and receive solution documents, without having to
locally install and execute the content manager engine 112 on the
client system, and without requiring a file download of the
solution document.
[0121] As an optional step, the method 1200 may receive (at 1225)
modifications of the content of the solution document through the
user interface. The method 1200 then saves (at 1230) the solution
document as a file document to a storage device, such as a remote
or local storage device. The saved solution document may or may not
contain user modifications. In some embodiments, the solution
document may be stored as a document file to a file system of a
storage system. As such, the client system may access and modify
the solution document via a network connection with the content
manager engine 112 using only the web browser, the solution
document being stored to a remote storage system. In other
embodiments, the solution document may be downloaded to the client
system and stored as a document file to a local storage device. The
method 1200 then ends.
C. Example of Producing a Solution Document Using a Solution
Mapping
[0122] FIG. 13 is a diagram that conceptually illustrates exemplary
steps of the method 1200 of FIG. 12. As shown in FIG. 13, a set of
one or more user and/or automated selections 1305 are received from
a user or produced by the method 1200. The set of selections 1305
are used to select and retrieve a corresponding solution mapping
1310 from the solution mapping DS 125. The corresponding solution
mapping 1310 comprises a combination of selections 1105 that
matches the set of selections 1305. In the example of FIG. 13, the
set of selections 1305 comprises selections "S1, S2, S3."
[0123] The corresponding solution mapping 1310 specifies one or
more document identifiers 505 for one or more document mappings 501
in the document mapping DS 115 and/or one or more group identifiers
905 for one or more group mappings 901 in the group mapping DS 120.
As shown in the example of FIG. 11, the solution mapping 1310
corresponding to selections "S1, S2, S3" specifies a document
identifier "D15" for document mapping "D15" 1315 and a group
identifier "G8" for group mapping "G8" 1320. For example, the
document mapping "D15" 1315 may map to a content entry "E27"
storing a content fragment "E27" 1335 and a content entry "E28"
storing a content fragment "E28" 1340. For example, the group
mapping "G8" 1320 may specify document identifier "D32" for
document mapping "D32" 1325 and document identifier "D61" for
document mapping "D61" 1330. For example, the document mapping
"D32" 1325 may map to a content entry "E13" storing content
fragment "E13" 1345. For example, the document mapping "D61" 1330
may map to a content entry "E88" storing a content fragment "E88"
1350 and a content entry "E89" storing a content fragment "E89"
1355.
[0124] The method 1200 then produces a solution document 1375 by
retrieving content fragments from the content database 135 from
each mapped content entry of each document and/or group mapping
specified in the corresponding solution mapping 1310. The method
1200 then inserts the retrieved content fragments into the solution
document 1375 based on an ordering specified in the corresponding
solution mapping 1310. In the example of FIG. 13, the corresponding
solution mapping 1310 specifies an ordering of content fragments
mapped from document mapping "D15" 1315 followed by content
fragments mapped from group mapping "G8" 1320. As such, the method
1200 incorporates the content fragments into the solution document
1375 in an order from beginning to end: content fragment "E27"
1335, content fragment "E28" 1340, content fragment "E13" 1345,
content fragment "E88" 1350, and content fragment "E89" 1355.
D. Directly Modifying Content Entries for Solution Documents
[0125] As discussed above, the content manager engine 112 may be
configured to allow direct modification of content fragments in
content entries of the content database 135. This may be especially
beneficial for producing solution documents. Solution documents
rely on a vast amount of content describing a wide range of
services, products, and technologies that are constantly being
updated. Typically, any update of a service, product, or technology
would potentially affect a large number of future solution
documents and would thus require modifying each individual document
that contains a description regarding the changed service, product,
or technology. This update process may consume large amounts of
time and computer and human resources.
[0126] By allowing direct modification of content entries in the
content database 135 (e.g., using the method 800 of FIG. 8), only
the content entries containing the updated content fragments would
need to be modified and any affected solution documents would be
automatically updated when produced. This is due to the fact that
modifying a content entry provides automatic updating/modifying of
any solution mapping using the modified content entry and any
subsequent solution document produced using the modified content
entry.
[0127] This may drastically reduce the amount of modifications
needed to update solution documents and thus provide more
responsive support to users and client systems. In addition, this
reduces the time and cost of producing client solutions by re-using
the same content and enables high quality and repeatable solutions
to be created with less resource and less time. This also reduces
variation of designs, thus leading to more consistent quality of
solution deployments, increased deployment efficiency, and improved
supportability after deployment.
Various Embodiments
[0128] Some embodiments may be conveniently implemented using a
conventional general purpose or a specialized digital computer or
microprocessor programmed according to the teachings herein, as
will be apparent to those skilled in the computer art. Some
embodiments may be implemented by a general purpose computer
programmed to perform method or process steps described herein.
Such programming may produce a new machine or special purpose
computer for performing particular method or process steps and
functions (described herein) pursuant to instructions from program
software. Appropriate software coding may be prepared by
programmers based on the teachings herein, as will be apparent to
those skilled in the software art. Some embodiments may also be
implemented by the preparation of application-specific integrated
circuits or by interconnecting an appropriate network of
conventional component circuits, as will be readily apparent to
those skilled in the art. Those of skill in the art would
understand that information may be represented using any of a
variety of different technologies and techniques.
[0129] Some embodiments include a computer program product
comprising a computer readable medium (media) having instructions
stored thereon/in and, when executed (e.g., by a processor),
perform methods, techniques, or embodiments described herein, the
computer readable medium comprising sets of instructions for
performing various steps of the methods, techniques, or embodiments
described herein. The computer readable medium may comprise a
non-transitory computer readable medium. The computer readable
medium may comprise a storage medium having instructions stored
thereon/in which may be used to control, or cause, a computer to
perform any of the processes of an embodiment. The storage medium
may include, without limitation, any type of disk including floppy
disks, mini disks (MDs), optical disks, DVDs, CD-ROMs,
micro-drives, and magneto-optical disks, ROMs, RAMs, EPROMs,
EEPROMs, DRAMs, VRAMs, flash memory devices (including flash
cards), magnetic or optical cards, nanosystems (including molecular
memory ICs), RAID devices, remote data storage/archive/warehousing,
or any other type of media or device suitable for storing
instructions and/or data thereon/in.
[0130] Stored on any one of the computer readable medium (media),
some embodiments include software instructions for controlling both
the hardware of the general purpose or specialized computer or
microprocessor, and for enabling the computer or microprocessor to
interact with a human user and/or other mechanism using the results
of an embodiment. Such software may include without limitation
device drivers, operating systems, and user applications.
Ultimately, such computer readable media further includes software
instructions for performing embodiments described herein. Included
in the programming (software) of the general-purpose/specialized
computer or microprocessor are software modules for implementing
some embodiments.
[0131] Those of skill would further appreciate that the various
illustrative logical blocks, circuits, modules, algorithms,
techniques, processes, or method steps of embodiments described
herein may be implemented as computer electronic hardware, computer
software, or combinations of both. To illustrate this
interchangeability of hardware and software, various illustrative
components, blocks, modules, circuits, and steps have been
described herein generally in terms of their functionality. Whether
such functionality is implemented as hardware or software depends
upon the particular application and design constraints imposed on
the overall system Skilled artisans may implement the described
functionality in varying ways for each particular application, but
such implementation decisions should not be interpreted as causing
a departure from the embodiments described herein.
[0132] The various illustrative logical blocks, modules, and
circuits described in connection with the embodiments disclosed
herein may be implemented or performed with a general-purpose
processor, a digital signal processor (DSP), an
application-specific integrated circuit (ASIC), a field
programmable gate array (FPGA) or other programmable logic device,
discrete gate or transistor logic, discrete hardware components, or
any combination thereof designed to perform the functions described
herein. A general-purpose processor may be a microprocessor, but in
the alternative, the processor may be any conventional processor,
controller, microcontroller, or state machine. A processor may also
be implemented as a combination of computing devices, e.g., a
combination of a DSP and a microprocessor, a plurality of
microprocessors, one or more microprocessors in conjunction with a
DSP core, or any other such configuration.
[0133] The modules, algorithm, techniques, processes, or methods
described in connection with embodiments disclosed herein may be
embodied directly in computer hardware configured to perform the
embodiments disclosed herein, in software executed by a processor,
or in a combination of the two. In some embodiments, any software
application, program, tool, module, or layer described herein may
comprise an engine comprising hardware, software, or a combination
of the two configured to perform embodiments described herein. In
general, functions of a software application, program, tool,
module, or layer described herein may be embodied directly in
hardware, or embodied as software executed by a processor, or
embodied as a combination of the two.
[0134] A software application, layer, or module may reside in RAM
memory, flash memory, ROM memory, EPROM memory, EEPROM memory,
registers, hard disk, a removable disk, a CD-ROM, or any other form
of storage medium known in the art. An exemplary storage medium is
coupled to the processor such that the processor can read data
from, and write data to, the storage medium. In the alternative,
the storage medium may be integral to the processor. The processor
and the storage medium may reside in an ASIC. The ASIC may reside
in a user device. In the alternative, the processor and the storage
medium may reside as discrete components in a user device.
[0135] While the embodiments described herein have been described
with reference to numerous specific details, one of ordinary skill
in the art will recognize that the embodiments can be embodied in
other specific forms without departing from the spirit of the
embodiments. Thus, one of ordinary skill in the art would
understand that the embodiments described herein are not to be
limited by the foregoing illustrative details, but rather are to be
defined by the appended claims.
* * * * *