U.S. patent application number 14/155554 was filed with the patent office on 2015-07-16 for managing content item syndication by maintaining referential integrity between remote or isolated systems.
This patent application is currently assigned to International Business Machines Corporation. The applicant listed for this patent is International Business Machines Corporation. Invention is credited to Nicholas A. Baldwin, Lee Berry, Asela J. Mallawaaratchy, Eric M. Morentin.
Application Number | 20150199397 14/155554 |
Document ID | / |
Family ID | 53521563 |
Filed Date | 2015-07-16 |
United States Patent
Application |
20150199397 |
Kind Code |
A1 |
Baldwin; Nicholas A. ; et
al. |
July 16, 2015 |
MANAGING CONTENT ITEM SYNDICATION BY MAINTAINING REFERENTIAL
INTEGRITY BETWEEN REMOTE OR ISOLATED SYSTEMS
Abstract
Embodiments of the present invention relate to managing content
item syndication by maintaining referential integrity between
isolated systems. A computing device receives a first content item,
wherein the first content item has an external dependency with a
second content item defined by a first reference. In response to
determining that the second content item does not exist on the
computing device, the computing device generates a second reference
to replace the first reference, wherein the second reference
defines a dependency of the first content item to a third content
item. The computing device generates a link that directs a user to
the third content item in response to the user attempting to access
the second content item.
Inventors: |
Baldwin; Nicholas A.;
(Gladesville, AU) ; Berry; Lee; (Ashfield, AU)
; Mallawaaratchy; Asela J.; (Hinchinbrook, AU) ;
Morentin; Eric M.; (Manly, AU) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
International Business Machines Corporation |
Armonk |
NY |
US |
|
|
Assignee: |
International Business Machines
Corporation
Armonk
NY
|
Family ID: |
53521563 |
Appl. No.: |
14/155554 |
Filed: |
January 15, 2014 |
Current U.S.
Class: |
707/687 |
Current CPC
Class: |
G06F 16/2365 20190101;
G06F 16/9558 20190101; G06F 16/958 20190101 |
International
Class: |
G06F 17/30 20060101
G06F017/30 |
Claims
1-6. (canceled)
7. A computer program product, the computer program product
comprising a computer readable storage medium having program code
embodied therewith, the program code executable by a processor to:
receive a first content item, wherein the first content item has an
external dependency with a second content item defined by a first
reference; in response to determining that the second content item
does not exist on a computing device that includes the processor,
generating a second reference to replace the first reference,
wherein the second reference defines a dependency of the first
content item to a third content item; generating a link that
directs a user to the third content item in response to the user
attempting to access the second content item.
8. The computer program product of claim 7, the first content item
is associated with a syndication event.
9. The computer program product of claim 7, wherein the computing
device that includes the processor subscribes data from a content
library.
10. The computer program product of claim 7, wherein the computing
device that includes the processor supports one or more of the
following content management environments: development; authoring;
staging; and production.
11. The computer program product of claim 7, wherein the first
content item is included in a change set received by the computing
device that includes the processor.
12. The computer program product of claim 7, wherein the first,
second, and/or third content item includes one or more of: data;
text; media; and webpage template.
13. A computer system comprising: one or more computer processors;
one or more computer-readable storage media; program instructions
stored on the computer-readable storage media for execution by at
least one of the one or more processors, the program instructions
comprising: program instructions to receive a first content item,
wherein the first content item has an external dependency with a
second content item defined by a first reference; in response to
determining that the second content item does not exist on a
computing device that includes the at least one or more processors,
generating a second reference to replace the first reference,
wherein the second reference defines a dependency of the first
content item to a third content item; generating a link that
directs a user to the third content item in response to the user
attempting to access the second content item.
14. The computer system of claim 13, the first content item is
associated with a syndication event.
15. The computer system of claim 13, wherein the computing device
that includes the at least one or more processors subscribes data
from a content library.
16. The computer system of claim 13, wherein the computing device
that includes the at least one or more processors supports one or
more of the following content management environments: development;
authoring; staging; and production.
17. The computer system of claim 13, wherein the first content item
is included in a change set received by the computing device that
includes the at least one or more processors.
18. The computer system of claim 13, wherein the first, second,
and/or third content item includes one or more of: data; text;
media; and webpage template.
Description
BACKGROUND
[0001] The present disclosure relates generally to the field of
content management, and more particularly to managing content item
syndication by maintaining referential integrity between isolated
systems.
[0002] Content management systems often separate development,
authoring, staging and production environments. With this
separation comes the requirement to support transmitting artifacts
between these environments (hereinafter "syndicate") that can
introduce data management issues, such as unknown or unresolvable
references. CMS can control the referential integrity between
content items. For example, if content item A references content
item B then content item B can not be deleted until the reference
within content item A is removed or re-routed to a different
content item, which ensures that on the final production site the
link that appears with content item A is operational and not
generating a, for example, a "404 Not Found" error notice.
[0003] At times, race conditions can occur wherein a down stream
system attempts to apply a syndicated item that refers to a content
item that does not yet exist on the system, which can frustrate the
ability to ensure referential integrity of syndicate content items
between systems. Current solutions include cataloging the original
reference value along with the property within the content item
that held it in a collection of references to fix. Another approach
involves committing all changes that being syndicated into a
repository in a single transaction.
SUMMARY
[0004] Embodiments of the present invention relate to managing
content item syndication by maintaining referential integrity
between isolated systems. A computing device receives a first
content item, wherein the first content item has an external
dependency with a second content item defined by a first reference.
In response to determining that the second content item does not
exist on the computing device, the computing device generates a
second reference to replace the first reference, wherein the second
reference defines a dependency of the first content item to a third
content item. The computing device generates a link that directs a
user to the third content item in response to the user attempting
to access the second content item.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0005] FIG. 1 is a block diagram illustrating an environment, in
accordance with an embodiment of the present invention.
[0006] FIG. 2 illustrated an exemplary syndication event, in
accordance with an embodiment of the present invention.
[0007] FIG. 3 illustrates an exemplary depiction of the change set
of the exemplary syndication event, in accordance with an
embodiment of the present invention.
[0008] FIG. 4 illustrates an exemplary depiction of a modified
syndicated content item, in accordance with an embodiment of the
present invention.
[0009] FIG. 5 depicts operational steps of a program function, in
accordance with an embodiment of the present invention.
[0010] FIG. 6 depicts a block diagram of components of the
computing device, in accordance with an embodiment of the present
invention.
DETAILED DESCRIPTION
[0011] As will be appreciated by one skilled in the art, aspects of
the present invention may be embodied as a system, method or
computer program product. Accordingly, aspects of the present
invention may take the form of an entirely hardware embodiment, an
entirely software embodiment (including firmware, resident
software, micro-code, etc.) or an embodiment combining software and
hardware aspects that may all generally be referred to herein as a
"circuit," "module" or "system." Furthermore, aspects of the
present invention may take the form of a computer program product
embodied in one or more computer-readable medium(s) having
computer-readable program code/instructions embodied thereon.
[0012] Any combination of computer-readable media may be utilized.
Computer-readable media may be a computer-readable signal medium or
a computer-readable storage medium. A computer-readable storage
medium may be, for example, but not limited to, an electronic,
magnetic, optical, electromagnetic, infrared, or semiconductor
system, apparatus, or device, or any suitable combination of the
foregoing. More specific examples (a non-exhaustive list) of a
computer-readable storage medium would include the following: an
electrical connection having one or more wires, a portable computer
diskette, a hard disk, a random access memory (hereinafter "RAM"),
a read-only memory (hereinafter "ROM"), an erasable programmable
read-only memory (hereinafter "EPROM" or "Flash memory"), an
optical fiber, a portable compact disc read-only memory
(hereinafter "CD-ROM"), an optical storage device, a magnetic
storage device, or any suitable combination of the foregoing. In
the context of this document, a computer-readable storage medium
may be any tangible medium that can contain, or store a program for
use by or in connection with an instruction execution system,
apparatus, or device.
[0013] A computer-readable signal medium may include a propagated
data signal with computer-readable program code embodied therein,
for example, in baseband or as part of a carrier wave. Such a
propagated signal may take any of a variety of forms, including,
but not limited to, electro-magnetic, optical, or any suitable
combination thereof. A computer-readable signal medium may be any
computer-readable medium that is not a computer-readable storage
medium and that can communicate, propagate, or transport a program
for use by or in connection with an instruction execution system,
apparatus, or device.
[0014] Program code embodied on a computer-readable medium may be
transmitted using any appropriate medium, including but not limited
to wireless, wireline, optical fiber cable, RF, etc., or any
suitable combination of the foregoing.
[0015] Computer program code for carrying out operations for
aspects of the present invention may be written in any combination
of one or more programming languages, including an object oriented
programming language such as Java.TM., Smalltalk, C++ or the like
and conventional procedural programming languages, such as the "C"
programming language or similar programming languages. The program
code may execute entirely on a user's computer, partly on the
user's computer, as a stand-alone software package, partly on the
user's computer and partly on a remote computer or entirely on the
remote computer or server. In the latter scenario, the remote
computer may be connected to the user's computer through any type
of network, including a local area network (hereinafter "LAN") or a
wide area network (hereinafter "WAN"), or the connection may be
made to an external computer (for example, through the Internet
using an Internet Service Provider).
[0016] Aspects of the present invention are described below with
reference to flowchart illustrations and/or block diagrams of
methods, apparatus (systems) and computer program products
according to embodiments of the invention. It will be understood
that each block of the flowchart illustrations and/or block
diagrams, and combinations of blocks in the flowchart illustrations
and/or block diagrams, can be implemented by computer program
instructions. These computer program instructions may be provided
to a processor of a general purpose computer, special purpose
computer, or other programmable data processing apparatus to
produce a machine, such that the instructions, which execute via
the processor of the computer or other programmable data processing
apparatus, create means for implementing the functions/acts
specified in the flowchart and/or block diagram block or
blocks.
[0017] These computer program instructions may also be stored in a
computer-readable medium that can direct a computer, other
programmable data processing apparatus, or other devices to
function in a particular manner, such that the instructions stored
in the computer-readable medium produce an article of manufacture
including instructions which implement the function/act specified
in the flowchart and/or block diagram block or blocks.
[0018] The computer program instructions may also be loaded onto a
computer, other programmable data processing apparatus, or other
devices to cause a series of operational steps to be performed on
the computer, other programmable apparatus or other devices to
produce a computer-implemented process such that the instructions
which execute on the computer or other programmable apparatus
provide processes for implementing the functions/acts specified in
the flowchart and/or block diagram block or blocks.
[0019] Content management systems often separate authoring,
staging, delivery and production of content items in to one or more
different environments. Content items are created and managed in
the authoring environment, aggregated in the staging environment,
rendered and delivered in the delivery environment, and implemented
and delivered in the production environment. Replicating data from
a content library on one computing device to a content library on
another computing device is referred to as "syndication". With this
separation comes the requirement to support transmitting artifacts
between these environments that can introduce data management
issues, such as unknown or unresolvable references.
[0020] Syndication requires a syndicator and a subscriber.
Syndicators transmit data to subscribers, which subscribe. In
certain embodiments, a computing device can be both a syndicator
and a subscriber. Embodiments of the present invention seek to
support the syndication of content items with referential integrity
by creating temporary references when unresolved dependencies are
encountered to aid in addressing errors encountered during the
syndication of content item having dependencies that might leave
the content item in an invalid state. Embodiments of the present
invention will now be described in detail with reference to the
Figs. FIG. 1 is a block diagram illustrating an environment,
generally designated 100, in accordance with an embodiment of the
present invention.
[0021] Environment 100 includes syndicator computing device 140 and
subscriber computing device 110, all interconnected over network
130. Network 130 can be, for example, a local area network (LAN), a
wide area network (WAN) such as the Internet, or a combination of
the two, and can include wired, wireless, or fiber optic
connections. In general, network 130 can be any combination of
connections and protocols that will support communications between
syndicator computing device 140 and subscriber computing device
110.
[0022] In various embodiments of the present invention, syndicator
computing device 140 and subscriber computing device 110 may be a
laptop computer, tablet computer, netbook computer, personal
computer (hereinafter "PC"), a desktop computer, a personal digital
assistant (hereinafter "PDA"), a smart phone, or any programmable
electronic device capable of communicating via network 130.
Syndicator computing device 140 is a computing device that can
replicate content items to a subscriber, in accordance with an
embodiment of the present invention. Syndicator computing device
140 includes content manager 142 and exemplary repository 144.
Exemplary repository 144 is an information store that includes
content item files 146, which further include content items, which
are files that include data, text, media, and/or webpage
templates). Although depicted as an internal component of
syndicator computing device 140, exemplary information repository
144 may be external to syndicator computing device 140. In certain
embodiments, content items included in content item files 146 can
have external dependencies on other content items that may or may
not exist in content item files 146. Content item reference table
148 includes referential information reflective of the external
dependencies of content items included in content item files
146.
[0023] Content manager 142 is software that can support one or more
content management environments, such as development, authoring,
staging, and production, in accordance with an embodiment of the
present invention. In an embodiment, content managers 1420 and 188
are copies of the same software. Content manager 142 is in
communication with exemplary information repository 144. Content
manager 142 can syndicate content items to other content managers,
such as content manager 118. Syndication is the method by which
content items are replicated from one web content repository, such
as exemplary information repository 120, to another, such as
exemplary information repository 120. In an embodiment, content
manager 142 can receive information from content manager 118. The
syndicated change set transmitted by content manager 142 can
include transporting artifacts reflective of content item
dependencies. However, at times, dependencies reflected in the
transporting artifact can include content items that are not
present on the subscribing system, which may result in errors, such
as broken links, out of date postings and lower user
satisfaction.
[0024] Subscriber computing device 110 includes exemplary
repositories 120 and 114, content manager 118, and program function
112, in accordance with an embodiment of the present invention.
Exemplary information repository 120 includes content item
reference files 124 and content item files 122. Content item
reference files 124 include information that reflects the
dependencies of content items included in content item files 122.
Content manager 188 is in communication with exemplary information
repository 120 and program function 122, in accordance with an
embodiment of the present invention.
[0025] Content manager 118 is software that supports the
collection, managing, and publishing of information, such as
content items. Content manager 118 can support a content management
environment for the development, authoring, staging, and/or
production of content items, such as, content items included in
content item files 146. In an embodiment, content manager 118
subscribes information from other content managers, such as content
manager 140. Program function 112 is in communication with content
manager 118 and exemplary information repository 114, in accordance
with an embodiment of the present invention. Program function 112
is software that reduces errors associated with unknown or
unresolvable references with content items deployed in a syndicated
change set (discussed above), in accordance with an embodiment of
the present invention.
[0026] Program function 112 generates transport reference items
116. Unknown references within syndicated change sets are stored as
unique references (hereinafter "transport reference items") within
exemplary information repository 144. A change sets is a set of
changes that should be treated as an indivisible group. Concepts
discussed in reference to FIGS. 2, 3, and 4 support concepts that
will be discussed in reference to FIG. 5. FIG. 2 depicts a
syndication event, in accordance with an embodiment of the present
invention. Specifically, FIG. 2 illustrates a syndication event
that involves syndicator computing device 120 and subscriber
computing device 10, wherein a change set (discussed further in
reference to FIGS. 3 and 4) is syndicated from syndicator computing
device 120 to subscriber computing device 110, via network 130.
[0027] FIG. 3 depicts an exemplary illustration of the change set
of syndication event 210, in accordance with an embodiment of the
present invention. Syndication event 210 involves the syndication
of data from syndicator computing device 140 to subscriber
computing device 110. Syndication event 210 initiates when content
manager 142 receives notification to syndicate a change set, for
example, change set 300, and concludes when content manager 118
receives the syndicated change set. Continuing, upon receipt,
program function 112 determines that content item 312 has external
dependencies associated with content items 316 and 314. The
reference associated with the dependencies between contents 314 and
312 is unresolved (as depicted by the broken line boarder of
content item 314) because program function 112 determined that
content item 314 is not stored in content item files 122 or
subscriber computing device 110. Content item references may be
unresolvable due to, for example, a corrupt or missing file.
[0028] For each unresolved reference, such as the unresolved
reference associated with content item 314, included in change set
300 that is marked for syndication, program function 112 generates
a transport reference item, for example, in transport reference
items 116, for example, TRI314. FIG. 4 illustrates an exemplary
depiction of a modified syndicated content item, in accordance with
an embodiment of the present invention. In certain embodiments,
program function 112 instructs content manager 118 to update
content item reference files 124 to reflect that the dependency of
content item 312 on content item 314 is replaced with that of a
temporary reference item, such as TRI414. In certain embodiments,
transport reference items 116 can point to alternative content
items of the same content item type as the unresolved content item,
for example, text, template, and media. In certain embodiments, as
a user encounters a website with an unresolved content item, the
use of temporary reference item to temporarily stand in for
unresolved content items allows the website to remain operational
while content therein is being updated.
[0029] Subsequently, program function 112 instructs content manager
118 to commit change set 300 to content item files 122. In response
to determining that the reference to content item 314 has been
resolved, program manager 112 instructs content manager 118 to
update content reference files 124 to point to the newly resolved
content item. FIG. 5 depicts the operational steps of program
function 112, in accordance with an embodiment of the present
invention. Program function 112 monitors content management
syndication (step 500). If program function 112 determines that
there are no unresolved issues ("no" branch decisional 505), then
program function 112 instructs content manager 118 to commit the
content items to the content item library (step 525).
[0030] If program function 112 determines that there are unresolved
references included in the syndicated change set ("yes" branch
decisional 505), program function 112 proceeds to decisional 510.
If program function 112 determines that the unresolved content item
is not included in the syndicated change set (decisional 510),
program function 112 generates an error notification and instructs
content manager 118 to halt the update (step 515). If program
function 112 determines that the unresolved content item is
included in the syndicated change set (decisional 510), then for
each unresolved reference, program function 112 generates a
transport reference item to replace the unresolved reference (step
520) and proceeds to step 525.
[0031] Program function 112 determines the transport references
that represent the content item (step 530). Program function 112
determines all content items that reference the transport reference
item and instructs content manager 118 to replace the reference
with determined content items (step 540).
[0032] FIG. 6 depicts a block diagram of components of subscriber
computing device 112 in accordance with an illustrative embodiment
of the present invention. It should be appreciated that FIG. 6
provides only an illustration of one implementation and does not
imply any limitations with regard to the environments in which
different embodiments may be implemented. Many modifications to the
depicted environment may be made.
[0033] subscriber computing device 110 includes communications
fabric 602, which provides communications between computer
processor(s) 604, memory 606, persistent storage 608,
communications unit 610, and input/output (I/O) interface(s) 612.
Communications fabric 602 can be implemented with any architecture
designed for passing data and/or control information between
processors (such as microprocessors, communications and network
processors, etc.), system memory, peripheral devices, and any other
hardware components within a system. For example, communications
fabric 602 can be implemented with one or more buses.
[0034] Memory 606 and persistent storage 608 are computer-readable
storage media. In this embodiment, memory 606 includes random
access memory (hereinafter "RAM") 614 and cache memory 616. In
general, memory 606 can include any suitable volatile or
non-volatile computer-readable storage media.
[0035] Program function 112, content manager 118, and exemplary
information repositories 120 and 114 are stored in persistent
storage 608 for execution and/or access by one or more of the
respective computer processors 604 via one or more memories of
memory 606. In this embodiment, persistent storage 608 includes a
magnetic hard disk drive. Alternatively, or in addition to a
magnetic hard disk drive, persistent storage 608 can include a
solid state hard drive, a semiconductor storage device, read-only
memory (hereinafter "ROM"), erasable programmable read-only memory
(hereinafter "EPROM"), flash memory, or any other computer-readable
storage media that is capable of storing program instructions or
digital information.
[0036] The media used by persistent storage 608 may also be
removable. For example, a removable hard drive may be used for
persistent storage 608. Other examples include optical and magnetic
disks, thumb drives, and smart cards that are inserted into a drive
for transfer onto another computer-readable storage medium that is
also part of persistent storage 608.
[0037] Communications unit 610, in these examples, provides for
communications with other data processing systems or devices,
including syndicator computing device 120. In these examples,
communications unit 410 includes one or more network interface
cards. Communications unit 610 may provide communications through
the use of either or both physical and wireless communications
links. Program function 112 and content manager 118 may be
downloaded to persistent storage 608 through communications unit
610.
[0038] I/O interface(s) 612 allows for input and output of data
with other devices that may be connected to subscriber computing
device 110. For example, I/O interface 612 may provide a connection
to external devices 618 such as a keyboard, keypad, a touch screen,
and/or some other suitable input device. External devices 618 can
also include portable computer-readable storage media such as, for
example, thumb drives, portable optical or magnetic disks, and
memory cards. Software and data used to practice embodiments of the
present invention, e.g., program function 112 and content manager
118, can be stored on such portable computer-readable storage media
and can be loaded onto persistent storage 608 via I/O interface(s)
612. I/O interface(s) also connects to a display 620. Display 620
provides a mechanism to display data to a user and may be, for
example, a computer monitor.
[0039] The programs described herein are identified based upon the
application for which they are implemented in a specific embodiment
of the invention. However, it should be appreciated that any
particular program nomenclature herein is used merely for
convenience, and thus the invention should not be limited to use
solely in any specific application identified and/or implied by
such nomenclature.
[0040] The flowchart and block diagrams in the FIGS. illustrate the
architecture, functionality, and operation of possible
implementations of systems, methods and computer program products
according to various embodiments of the present invention. In this
regard, each block in the flowchart or block diagrams may represent
a module, segment, or portion of code, which comprises one or more
executable instructions for implementing the specified logical
function(s). It should also be noted that, in some alternative
implementations, the functions noted in the block may occur out of
the order noted in the figures. For example, two blocks shown in
succession may, in fact, be executed substantially concurrently, or
the blocks may sometimes be executed in the reverse order,
depending upon the functionality involved. It will also be noted
that each block of the block diagrams and/or flowchart
illustration, and combinations of blocks in the block diagrams
and/or flowchart illustration, can be implemented by special
purpose hardware-based systems that perform the specified functions
or acts, or combinations of special purpose hardware and computer
instructions.
* * * * *