Controlling content modifications by enforcing one or more constraint links

Embodiments of the present disclosure include systems and methods for controlling modification of a data file that is accessed by multiple components of an application platform. The method for controlling modification of a data file includes: preparing a link constraint data that includes information of a data file and a component of an application platform, the component being associated with the data file; preparing an alert data that includes information of the data file and a person having a permission to modify the data file; responsive to an attempt of a user to modify the data file, retrieving the information of the component from the link constraint data and the information of the person from the alert data; and sending a notice of the attempt to at least one of the person and the user.

A. TECHNICAL FIELD

The present invention relates to management of data for an application platform, more particularly, to systems and methods for controlling modifications of data that is accessed by multiple components of an application platform.

B. DESCRIPTION OF THE RELATED ART

SharePoint® software (hereinafter, “SP”) is a popular web application platform that organizations use for intranet sites as well as for internal and external collaboration. SP includes SharePoint Lists® (hereinafter, “SP lists”) and SharePoint Consumers® software (hereinafter, “SP consumers” or “SP components”). SP lists are used to manage information and contain data of various types, such as, contracts, discussion board, calendar, sales, tasks or custom. For example,FIG. 1shows a SP list100that contains the information of sales by employees. The Sales list100may have multiple fields (i.e., columns), such as employee name102a, department102b, age102c, and amounts of sale102dmade by the employees.

Each SP list may be access by one or more SP components, where each SP component is a toolkit and has various functions, such as providing the SP users with data retrieved from the SP lists. For instance, Web Parts® software, which are the building blocks of pages that appear on a SharePoint, are SP components and may access the Sales list100and display the amounts of sales made by the employees in the sales department. In another example, SharePoint Workflows® software, which are SP components and pre-programmed mini-applications that streamline and automate a wide variety of business processes—from collecting signatures, feedback, or approvals for a plan or document, to tracking the current status of a routine procedure, may access the Sales list100.

It is not uncommon that SP lists need some changes/updates. For instance, the amounts in the Sale102dmay be updated on a regular basis. Such a change in the contents may not affect the operation of other SP components. However, if a user changes the name of the field102d, such as “Sale” into “Total Sales,” without knowing that the Sales list100is accessed by multiple SP components, the result may be that all of the SP components that access the Sale field102dwould not work as expected. Even the users who have proper permission to change the Sales list100may modify the SP list without knowing how many SP components are currently using the SP list or they may think that the change is not harmful since they have permission. When a user makes improper changes to the SP list, some of the SP sites may crash, bringing negative impacts to other end users. This can not only cause a decrease in productivity, but also being a very bad reputation to the affected company.

Preventing harmful changes to the SP lists becomes a very challenging task as it is common that there are multiple persons, such as SP list creator and SP site owner, who have permission to change the SP lists. Typically, SP gives permission control to the SP list creator or SP site owner, and restricts other users from modifying the SP list. However, the SP list owner/site owner may not know which fields of the SP list are currently being used by SP components. As such, it becomes very difficult to manually add permission control, making safe changes to SP lists become unnecessarily complicated. Thus, there is a need for efficient systems and methods for automatically controlling modification of SP lists that are accessed by multiple SP components.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Furthermore, one skilled in the art shall recognize that: (1) certain steps may optionally be performed; (2) steps may not be limited to the specific order set forth herein; and (3) certain steps may be performed in different orders; and (4) certain steps may be done concurrently.

Reference in the specification to “one embodiment,” “preferred embodiment,” “an embodiment,” or “embodiments” means that a particular feature, structure, characteristic, or function described in connection with the embodiment is included in at least one embodiment of the disclosure and may be in more than one embodiment. The appearances of the phrases “in one embodiment,” “in an embodiment,” or “in embodiments” in various places in the specification are not necessarily all referring to the same embodiment or embodiments. The terms “include,” “including,” “comprise,” and “comprising” shall be understood to be open terms and any lists that follow are examples and not meant to be limited to the listed items. Any headings used herein are for organizational purposes only and shall not be used to limit the scope of the description or the claims.

Furthermore, the use of certain terms in various places in the specification is for illustration and should not be construed as limiting. A service, function, or resource is not limited to a single service, function, or resource; usage of these terms may refer to a grouping of related services, functions, or resources, which may be distributed or aggregated.

Embodiments described herein use SP as an example; however, it shall be noted that the current disclosure is not limited to use only with SP. Rather, aspects of the present disclosure may be used in other situations and with other applications in which a plurality of people can access a common set of data.

FIG. 2Ashows a functional diagram of various elements in a SP farm200according to embodiments of the present disclosure. Here, the term SP farm refers to a collection of hardwares/softwares that together make up a SharePoint platform, i.e., SP farm collectively refers to elements in the topological space of a web application platform.FIG. 2shows only four components of a SP farm; SP lists202, SP components204, a smart linker206, and SharePoint list custom property207. However, it should be apparent to those of ordinary skill in the art that the SP farm200may include other suitable number of web front-end servers, databases coupled to the front-end servers and software programs running on the servers.

In embodiments, the smart linker206is coupled to the SP lists202, SP components204, and SP list custom property207. SP lists202are used to manage information and contain data of various types. InFIG. 2A, only four SP lists (i.e., calendar202a, Sales202b, discussion board202c, and tasks202d) are shown for brevity. However, it should be apparent to those of ordinary skill in the art that other suitable types of lists can be included in the SP lists202. The SP lists202may be accessed by one or more SP components204, where each SP component may be a toolkit that a user may drag into an SP page and provides the SP users with data retrieved from the SP lists202. InFIG. 2A, only three SP components (i.e., web parts204a, workflow204band infopath204c) are shown, even though other suitable types of components (consumers) can be included in the SP components204.

As depicted inFIG. 2A, the smart linker206includes a link constraint data module206a.FIG. 2Bshows a structure of an exemplary link constraint data208generated by a link constraint data module206aaccording to embodiments of the present disclosure. As depicted, the link constraint data module206agenerates and stores the link constraint data208into the SharePoint list custom property207.

FIG. 3Ashows a flowchart300of an illustrative process for generating link constraints between SP lists202and SP components204according to embodiments of the present disclosure. At step301, the link constraint data module206ascans a SP farm to find the SP components includes in the SP farm. In one embodiment, the link constraint data module206amay scan the entire portion of the SP farm. In another embodiments, the link constraint data module206amay scan a portion of the SP farm, more specifically, the SP site collections of a web application supported by the SP farm. Hereinafter, the term SP farm refers to a fraction of or the entire portion of the SP farm that the smart link206is allowed to scan.

At steps302and304, the link constraint data module206aselects one of the scanned SP components and parses the properties of the selected SP component to collect information of the SP lists and/or fields associated with the selected SP component. Then, using the collected information, the link constraint data module206agenerates link constraint data at step306. As depicted inFIG. 2B, the link constraint data208may include information of an SP list208a, a field208bof the SP list and the name\path208cof an SP component associated with the SP list and field. In embodiments, the Sales list202bmay have the same data structure as the Sales list100inFIG. 1and the web part204amay retrieve the data stored in the Sale field of the Sales list202b. Also, in embodiments, the value_1may have the format of the URL_of_list # name_of_list, the value_2may be the name of the field, and the value_3may have the format of URL_of_component # name_of_component # componentID. In those embodiments, the value_1is a text string “URL_of_Sales # Sales” and the value_2is a text string “Sale” and the value_3is a text string that includes the URL of web part204, the name of the web part, and the ID of the web part. Here, the terms URL and ID refer to uniform-resource-locator and identification, respectively.

At step306, the link constraint data208is stored in a data storage, such as SharePoint list custom property207. Then, at step308, the link constraint data module206achecks if there is any SP component to be parsed in the SP farm. If the answer to the step308is positive, the process proceeds to the step302. Otherwise, the process ends at the step310.

FIG. 2Cshows a structure of an exemplary alert data210generated by an alert data module206baccording to embodiments of the present disclosure.FIG. 3Bshows a flowchart330of an illustrative process for generating alert data210according to embodiments of the present disclosure. At step332, the alert data module206bscans a SP farm to find SP lists includes in the SP farm. At steps334and336, the alert data module206bselects one of the SP lists and parses the properties of the selected SP list to collect the information of at least one person who has permission to modify the SP list, such as the creator of the SP list or SP site owner. Also, the alert data module206baccesses an authentication database, such as Active Directory® software, to get the contact information, such as email address, of the person. Then, at step338, using the information of the person, the alert data module206bgenerates alert data210and stores the alert data into a data storage, such as SP list custom property207. In embodiments, the alert data has the structure as shown inFIG. 2C. In embodiments, the value_4of the list210ais similar to the value_1inFIG. 2B, i.e., the value_4is a text string that includes the URL of the SP list and name of the SP list while the value_5includes the email address of the person who has the permission.

Then, at step340, the alert data module206bchecks if there is any SP list to be parsed in the SP farm. If the answer to the step340is positive, the process proceeds to the step334. Otherwise, the process ends at the step342.

FIG. 4shows a flowchart400of an illustrative process for controlling modification of SP lists according to embodiments of the present disclosure. When a user attempts to modify a SP list, the custom validator206cinFIG. 2Agets information of the user at step402. Then, at step404, the custom validator206cgets the information of SP components associated with the SP list and information of the person(s) who has the permission to modify the SP list from a database, such as the SP list custom property207. In embodiments, the custom validator206calso gets the information of the list creator, the list owner, the site owner. Hereinafter, the term controllers collectively refer to one or more of a list creator, a list owner, a site owner, or others with permission to modify the SP list. Next, at step406, the custom validator206csends the information of the SP components to the user so that the user is warned of the potential harm that his modification may cause to the SP components. In embodiments, at step406, the custom validator206cdoes not allow the user to modify the SP list, i.e., the custom validator206cprevents the user from modifying the SP list. At step408, the custom validator206csends a notice of the attempt to the controllers. In embodiments, the notice may include various warning signals, such as the information of the user, the type of attempt, the name of list/field, the list of SP components that may be affected by the modification, or any combination thereof. In embodiments, the process400is performed in real time.

It is noted that the smart linker206may be used in other suitable application platforms, such as Lotus Notes® software, that are similar to the SharePoint® software, i.e., the smart linker206may be used to prevent harmful modification of data files that are accessed by multiple consumers/components in the other application platforms. In the present document, the SP lists202and SP components204are used as exemplary data files/structures and multiple consumers that access the data files/structures, respectively. As such, the SP lists202and SP components204should be interpreted as data files/structures and one or more consumers that access the data files/structures in an application platform that provides the functions similar to SharePoint® software.

As discussed above, the smart linker206prevents potentially harmful modification of a SP list202by establishing a link constraint between the SP list and SP components204that access the SP list. When a user wants to modify, change, or delete an SP list, the smart linker206automatically sends alerts to persons with permission to modify the SP list (such as SP list creator and SP site owner) as well as the user so that they are warned of the potential harm of the attempt and take proper actions to prevent the attempt or assist the user to complete the modification in a safe manner.

In embodiments, one or more computing system may be configured to perform one or more of the methods, functions, and/or operations presented herein. Systems that implement at least one or more of the methods, functions, and/or operations described herein may comprise an application or applications operating on at least one computing system. The computing system may comprise one or more computers and one or more databases. The computer system may be a single system, a distributed system, a cloud-based computer system, or a combination thereof.

It shall be noted that the present disclosure may be implemented in any instruction-execution/computing device or system capable of processing data, including, without limitation phones, laptop computers, desktop computers, and servers. The present disclosure may also be implemented into other computing devices and systems. Furthermore, aspects of the present disclosure may be implemented in a wide variety of ways including software (including firmware), hardware, or combinations thereof. For example, the functions to practice various aspects of the present disclosure may be performed by components that are implemented in a wide variety of ways including discrete logic components, one or more application specific integrated circuits (ASICs), and/or program-controlled processors. It shall be noted that the manner in which these items are implemented is not critical to the present disclosure.

Having described the details of the disclosure, an exemplary system500, which may be used to implement one or more aspects of the present disclosure, will now be described with reference toFIG. 5. Each client/server inFIG. 1includes one or more components in the system500. As illustrated inFIG. 5, system500includes a central processing unit (CPU)501that provides computing resources and controls the computer. CPU501may be implemented with a microprocessor or the like, and may also include a graphics processor and/or a floating point coprocessor for mathematical computations. System500may also include a system memory502, which may be in the form of random-access memory (RAM) and read-only memory (ROM).

A number of controllers and peripheral devices may also be provided, as shown inFIG. 5. An input controller503represents an interface to various input device(s)504, such as a keyboard, mouse, or stylus. There may also be a scanner controller505, which communicates with a scanner506. System500may also include a storage controller507for interfacing with one or more storage devices508each of which includes a storage medium such as magnetic tape or disk, or an optical medium that might be used to record programs of instructions for operating systems, utilities and applications which may include embodiments of programs that implement various aspects of the present disclosure. Storage device(s)508may also be used to store processed data or data to be processed in accordance with the disclosure. System500may also include a display controller509for providing an interface to a display device511, which may be a cathode ray tube (CRT), a thin film transistor (TFT) display, or other type of display. System500may also include a printer controller512for communicating with a printer513. A communications controller514may interface with one or more communication devices515, which enables system500to connect to remote devices through any of a variety of networks including the Internet, an Ethernet cloud, an FCoE/DCB cloud, a local area network (LAN), a wide area network (WAN), a storage area network (SAN) or through any suitable electromagnetic carrier signals including infrared signals.