Computerized systems and methods for two-way file sharing and synchronization over a network and via a network
The novel framework addresses inefficiencies in managing large volumes of engineering documents by enabling automatic and bidirectional file synchronization and access, improving accuracy, availability, and security in local and cloud environments.
Patent Information
- Application Number
- CN202080064855.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-16
- Filing Date
- 2020-09-16
- Publication Date
- 2025-07-15
- Estimated Expiration
- 2040-09-16
AI Technical Summary
The prior art has the problem of complex, time-consuming and inaccurate file updates and management in file management and cloud services. Especially when large-scale file processing, especially when 50,000 to 300,000 files, the calculation consumption is high and it is difficult to achieve efficient and secure file synchronization and access on the cloud.
It provides a new multi-tenant framework that automatically uploads, synchronizes and accesses files between local and network devices and uses cloud storage devices to realize automatic update and version management of files, supports file sharing and synchronization between local deployment to cloud, cloud-to-local deployment, cloud-to-cloud and other locations, and uses synchronization engine and database management system to perform file version control and access management.
It realizes efficient, secure and accurate file synchronization and access between different locations and devices, reduces computing consumption and network bandwidth blocking, improves file management efficiency and security, and supports file sharing and version control in a multi-tenant environment.
Smart Images

Figure CN114521256B_ABST
Abstract
Description
[0001] This application contains copyrighted material. The copyright owner does not object to the facsimile reproduction by anyone of the patent disclosure as it appears in the Patent and Trademark Office file or records, but reserves all copyright rights otherwise.
[0002] Cross - Reference to Related Applications
[0003] This application claims the benefit of priority of U.S. Provisional Application No. 62 / 901,110, entitled "Resource Server and System", filed on September 16, 2019, the entire content of which is incorporated herein by reference. Technical Field
[0004] Some embodiments generally relate to improving the performance of web - based computerized content hosting and delivery devices, systems, and / or platforms by modifying the capabilities of, and providing non - native functionality to, these devices, systems, and / or platforms through a new and improved multi - tenant framework for automatically and bidirectionally uploading, synchronizing, and accessing files between locally and / or network - hosted applications and devices. Background Art
[0005] Engineering, research and development, and other business activities generate a large number of external files. For example, electronic documents are created by many different tools. For example, documents can include, but are not limited to, drawings, lists, and isometric views. Some of them are informal, but most are formal (can be confidential and / or proprietary) documents and need to be handled accordingly. This means they need to be imported, hosted, and protected in a document management system. This provides a central searchable location for all generated engineering documents, and it also manages permissions and applies workflows, such as distributing to departments, contractors, manufacturers, suppliers, etc.
[0006] Traditional systems typically accomplish such hosting and storage by using shared or networked folders, monitoring the folders for user uploads. These folders typically have metadata associated with the files, so the files and their associated metadata can be stored correlatively, or at least with reference to a lookup table (LUT), which is part of the file configuration.
[0007] For example, in such a traditional system, when processing a document / drawing, metadata can be read to populate information related to that document. However, it is computationally difficult for the server and / or administrative processor of a folder to provide accurate file updates or expansions because the volume of a folder (e.g., an organization's document hosting job / task) is typically very large and the computational consumption is high. For example, some organizations can easily reach 50,000 to 300,000 documents / drawings processed in this way.
[0008] For example, when using these tools in cloud services, the challenges of the prior art may be based on a sandbox environment or be a product of its sandbox environment. For example, documents can be generated or manually downloaded, but due to the large number of complex documents, management is complex, time-consuming, error-prone, and almost impossible for a user acting as an administrator. Another challenge is that customers will not transfer all their projects to the cloud overnight. This means that existing data processing methods will continue to exist and result in the consumption of network and device resources in maintaining the accuracy, availability, and security of such files. Summary of the Invention
[0009] Some embodiments provide a novel framework that enables applications and devices to automatically and bidirectionally upload and access files from remote locations on a network while synchronously storing the files for access from various applications, devices, and locations.
[0010] For the purposes of this disclosure, files created and uploaded by users, applications, and devices are generally referred to, including data and metadata related to electronic information contained in electronic (or digital) files. Those of ordinary skill in the art understand that these files can take any form, whether known or yet to be known, such as but not limited to, electronic documents, images, text, audio, video, multimedia, graphics, electronic information, exchange files, CAD (Computer-Aided Design) files (e.g.: STEP / IFC (Standard for the Exchange of Product Model Data / Industry Foundation Classes) files, Steel Structure Software Data Exchange (SDNF) files, etc.), tag lists, etc., or some combination thereof. Those of ordinary skill in the art should also understand that these files can include, but are not limited to, any type of known or yet to be known electronic content, including but not limited to images, text, graphics, multimedia, material files, drawings, geometric outputs, exchange data, SaaS (Software as a Service) data, PaaS (Platform as a Service) data, IaaS (Infrastructure as a Service) data, File Transfer Protocol (FTP) data, etc., or some combination thereof.
[0011] Some embodiments provide a new framework that is configured to synchronize between on - premise deployments (“on - prem” or local devices / storage) and / or devices, applications, systems, and platforms hosted on a network (e.g., a cloud platform, service, or infrastructure). In some embodiments, the disclosed systems and methods implemented and executed via the disclosed framework can be configured to replicate data between locations, which may include on - premise and / or network locations, such as on - premise deployment sites and the cloud.
[0012] For the purposes of the present disclosure, a location may be referred to as an “endpoint,” such that an endpoint may refer to, for example, a device, application, location, or some combination thereof that shares data with another endpoint. For example, one endpoint may be a user's smartphone at a job site, while another endpoint may be a central server at a manufacturing plant. As will be discussed in detail herein, data from these endpoints can be shared and synchronized between the endpoints.
[0013] In some embodiments, when data is synchronized between two endpoints, a new synchronization instance may be created. For example, such an instance may be automatically created by a cloud server or created by a system administrator. A synchronization instance defines a synchronization event between two endpoints, e.g., one endpoint is on - premise deployed and the other is a cloud service (e.g., AVEVA ). The content between these two locations is synchronously updated continuously or periodically, such that this synchronization occurs regularly according to a time period or a dynamically adjusted time period, according to or in response to a customer or administrator request, when a task is completed, a document is saved, or a threshold amount of time has elapsed since the last synchronization, etc., or a combination thereof. According to some embodiments, the synchronization event involves exposing cloud storage to services associated with a hosting system (e.g., AVEVA ) so that they can read from and write to the desired destination.
[0014] In some embodiments, the disclosed framework is configured to execute and provide systems and methods that provide the following functions: on - premise deployment synchronization to the cloud and vice versa, on - premise deployment to on - premise deployment, and cloud to cloud, etc.; support for ubiquitous access to the cloud from both on - premise deployments and network devices; support for sharing and accessing data across locations, devices, networks, and users, etc. Some embodiments also enable third - party and native applications to access the cloud framework to access, upload, and synchronize their data (e.g., read and write permissions) within the cloud and across endpoints.
[0015] Thus, some embodiments are configured for internal services (e.g., Both the product and service) and external services access, store, and retrieve data from the proprietary cloud infrastructure disclosed herein. Some embodiments implement file sharing between location-to-location, cloud-to-cloud, device-to-device, device-to-cloud, cloud-to-device, network-to-network, etc. As discussed in more detail below, some embodiments also support version management such that all changes to shared files and / or cloud services accessed by all parties / entities are appropriately and timely distributed to each user, device, platform, or service.
[0016] According to some embodiments, the storage devices of the cloud framework are configured to enable control over how certain users, devices, premises, services, and platforms access and which types of data they access, as well as in what manner such access is approved / denied. In some embodiments, the storage configuration in the cloud can be segmented such that only specific parties / entities with specific permissions can read or write to such portions, or even receive updates when another party / entity writes to such portions.
[0017] In some embodiments, the accounts that assign permissions, for example, can be global or assigned per account. For example, a user can be provided access to all hosted documents (e.g., global access). In another example, a user working at a specific factory (e.g., on-premises) may only be approved to access documents uploaded and shared by that specific facility. In some embodiments, users can be approved for different types of access - for example, manage: the user is provided with functions such as creating new drives, restoring or deleting files, etc.; read / write: the user can read and write to the drive by contributing files; and read: the user can only read the files.
[0018] In some embodiments, the files stored in the cloud can be archived and / or backed up periodically or according to another type of input that causes the backup to occur (e.g., a time period or a request).
[0019] In some embodiments, the cloud infrastructure can be configured according to any known or to-be-known cloud or database management architecture, infrastructure, or management configuration, including but not limited to blockchain, binary large object (BLOB) storage, file storage, or any other type of cloud database management system architecture understood by those skilled in the art. In some embodiments, such infrastructure can implement navigation of data types related to service, product, and / or hosted entity types while providing a security protocol that controls navigation of whether such data is accessible (e.g., SDK).
[0020] According to some embodiments, the storage device provided by the disclosed framework can be configured to provide a proportional amount of storage per account, per location, or per usage. The proportional amount can be set and indicate the amount of data that can be stored. In some embodiments, the proportional amount can be dynamically adjusted based on usage and the integrity of the user's use or access of the account.
[0021] As a non-limiting example, 10GB of storage is provided for an account of a factory. When approaching this data limit, a notification can be sent to the user or account administrator. In some embodiments, the storage limit can be increased. This increase can be permanent or can only last for a short period of time (e.g., grace period). In some embodiments, the storage amount, the amount approved during the grace period, or the amount additionally provided to the account can be based on a variety of factors, including but not limited to the number of users accessing the account, the amount of data uploaded, the amount of memory used for uploading (e.g., 10% threshold), the CPU usage used for uploading (e.g., 10% threshold), the upload frequency, the network connection strength, the network bandwidth consumed during upload, security vulnerabilities, upload time, payment, advertisement hosting, etc., or a combination thereof.
[0022] Some embodiments provide a computerized method for a novel multi-tenant framework for automatically and bidirectionally uploading, synchronizing, and accessing files between locally or network-hosted applications and devices.
[0023] According to some embodiments, a method includes: receiving, at a computing device via a network, a request from a first device to access a file stored in a database, the first device being associated with a first location and the database being associated with the computing device; transmitting, by the computing device via the network, a version of the file to the first device; receiving, by the computing device from the first device, information indicating that the first device has modified the file version; upon receiving the information, automatically updating, by the computing device, the file stored in the associated database, the update including modifying the stored file to include the edits performed in the file version; upon receiving the information, identifying, by the computing device, another version of the file previously transmitted to a second device associated with a second location; and upon identifying the other file version, automatically transmitting, by the computing device via the network, edit information to the second device, the edit information causing the other file version at the second location to be updated to incorporate the edits performed in the file version at the first location.
[0024] In some embodiments, the method further includes: in response to receiving the information from the first device, creating, via the computing device, a new version of the file, the new version being an updated version of the file that includes the edits; and, via a branch control executed by the computing device and associated with the database, archiving the file provided to the first device on the network such that the created new version can be accessed as the latest version of the file in the database.
[0025] In some embodiments, the automatic update of files in the database is based on create and archive steps.
[0026] In some embodiments, the edit information transmitted to the second device includes information associated with the newly created version.
[0027] In some embodiments, the computing device interacts with the first and second devices via a network through an application programming interface (API) associated with and managing the database.
[0028] In some embodiments, the computing device includes functionality for accessing a set of native and third-party products, services, and platforms, where the functionality enables the first and second devices to access the set of native and third-party products, services, and platforms.
[0029] In some embodiments, the information received from the first device corresponds to a newly created version of a file created by the first device.
[0030] In some embodiments, the second location is the same as the first location.
[0031] In some embodiments, the second location is a location different from the first location.
[0032] In some embodiments, the second location is a network location.
[0033] In some embodiments, the second location corresponds to a third-party cloud service.
[0034] In some embodiments, the method further includes: analyzing a request from the first device; and determining, based on the analysis, whether the first device is permitted to access the file, wherein the transfer of the file to the first device is based on the determination.
[0035] In some embodiments, the first and second locations each correspond to at least one of a real-world location and an electronic location on the network.
[0036] In some embodiments, the information received from the first device indicating that the first device has modified a file version corresponds to a digital event selected from the group consisting of: an upload of the first device, a time period, an autosave event, a detection of a threshold amount of an ongoing edit, a request from the computing device, and a threshold amount of time elapsed since the last synchronization by the computing device.
[0037] Some embodiments provide a non-transitory computer-readable storage medium for performing the technical steps of the above-described framework functions. The non-transitory computer-readable storage medium tangibly stores or tangibly encodes thereon computer-readable instructions that, when executed by a device (e.g., an application server, a messaging server, an email server, an advertising server, a content server, and / or a client device, etc.), cause at least one processor to execute a method for a novel and improved framework for a multi-tenant framework to automatically and bidirectionally upload, synchronize, and access files between locally or network-hosted applications and devices.
[0038] According to one or more embodiments, a system is provided that includes one or more computing devices, the one or more computing devices being configured to provide functions according to such embodiments. According to one or more embodiments, the functionality is embodied in the steps of a method executed by at least one computing device. According to one or more embodiments, program code (or program logic) for implementing the functions according to one or more such embodiments, executed by a processor of a computing device, is embodied by and / or on a non-transitory computer-readable medium. BRIEF DESCRIPTION OF THE DRAWINGS
[0039] The foregoing and other objects, features, and advantages of the present disclosure will be apparent from the description of the embodiments shown in the following drawings, in which reference characters refer to the same parts throughout the various views. The drawings are not necessarily to scale, but rather emphasize illustrating the principles of the invention:
[0040] Figure 1 is a schematic diagram showing an example of a network in which the systems and methods disclosed herein can be implemented according to some embodiments of the present disclosure;
[0041] Figure 2 is a schematic diagram showing an example of a network in which the systems and methods disclosed herein can be implemented according to some embodiments of the present disclosure;
[0042] Figure 3 depicts a schematic diagram showing an example of a client device according to some embodiments of the present disclosure;
[0043] Figure 4 is a block diagram showing the components of an exemplary system according to an embodiment of the present disclosure;
[0044] Figure 5 shows a non-limiting example of a network architecture and configuration according to some embodiments of the present disclosure; and
[0045] Figure 6 is a block diagram showing an exemplary data flow according to some embodiments of the present disclosure. DETAILED DESCRIPTION
[0046] The present disclosure will be described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of non-limiting illustration, certain example embodiments. However, the subject matter may be embodied in a variety of different forms, and accordingly, the subject matter covered or claimed should be construed as not limited to any of the example embodiments described herein; the example embodiments are provided merely for illustration. Similarly, a reasonably broad scope of the subject matter covered or claimed is contemplated. Among other things, for example, the subject matter may be embodied as a method, apparatus, component, or system. Thus, for example, an embodiment may take the form of hardware, software, firmware, or any combination thereof (except software itself). Accordingly, the following description of the embodiments is for illustration and not for limitation.
[0047] Throughout the specification and claims, terms may have nuanced meanings that are implied or inferred in the context beyond their explicitly stated meanings. Similarly, the phrase "in some embodiments" as used herein does not necessarily refer to the same embodiment, and the phrase "in another embodiment" as used herein does not necessarily refer to a different embodiment. For example, the claimed subject matter is intended to include combinations of all or part of the example embodiments.
[0048] In general, terms may be understood, at least in part, from their usage in context. For example, terms such as "and," "or," or "and / or" as used herein may include a variety of meanings that may depend, at least in part, on the context in which such terms are used. Generally, "or" if used to associate a list, such as A, B, or C, means A, B, and C, used in an inclusive sense, as well as A, B, or C, used in an exclusive sense. In addition, the term "one or more" as used herein, depending at least in part on the context, may be used to describe any feature, structure, or characteristic in a singular sense or may be used to describe a combination of features, structures, or characteristics in a plural sense. Similarly, terms such as "a," "an," or "the" may also be understood to convey a singular usage or a plural usage, at least in part, depending on the context. In addition, the term "based on" may be understood as not necessarily intended to convey a set of exclusive factors and, on the contrary, may allow for the existence of additional factors that are not necessarily explicitly described, which also depends, at least in part, on the context.
[0049] The present disclosure is described below with reference to block diagrams and operational schematic diagrams of methods and devices. It should be understood that each block of the block diagram or operational schematic diagram, and combinations of blocks in the block diagram or operational schematic diagram, can be implemented by analog or digital hardware and computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer to change its functionality, as described herein, to a special-purpose computer, an ASIC, or other programmable data processing device, such that the instructions executed via the processor of the computer or other programmable data processing device perform the functions / actions specified in the block diagram or one or more operational blocks. In some alternative instances, the functions / actions marked in the blocks may occur in an order other than that marked in the operational schematic diagram. For example, two consecutive blocks shown may actually be executed substantially simultaneously, or sometimes the blocks may be executed in the reverse order, depending on the functions / actions involved.
[0050] For purposes of the present disclosure, a non-transitory computer-readable medium (or one or more computer-readable storage media) stores computer data in a machine-readable form, which may include computer-executable computer program code (or computer-executable instructions). By way of example and not limitation, a computer-readable medium may include a computer-readable storage medium for tangible or fixed storage of data, or a communication medium for temporarily interpreting signals containing code. As used herein, a computer-readable storage medium refers to a physical or tangible storage device (as opposed to a signal), including but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for tangibly storing information (such as computer-readable instructions, data structures, program modules, or other data). Computer-readable storage media include but are not limited to RAM, ROM, EPROM, EEPROM, flash memory or other solid-state storage technologies, CD-ROM, DVD or other optical storage, cloud storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other physical or material medium that can be used to tangibly store the required information or data or instructions and can be accessed by a computer or a processor.
[0051] For purposes of the present disclosure, the term "server" should be understood to refer to a service point that provides processing, database, and communication facilities. By way of example and not limitation, the term "server" can refer to a single physical processor with associated communication and data storage and database facilities, or a network or cluster complex of processors and associated network and storage devices, as well as the operating software, one or more database systems, and application software that support the services provided by the server. Cloud servers are examples.
[0052] For the purposes of the present disclosure, "network" shall be understood to refer to a network by which devices can be coupled so that communications can be exchanged, such as between a server and a client device or other types of devices, including between wireless devices coupled via, for example, a wireless network. The network can also include mass storage devices, such as, for example, network attached storage (NAS), storage area network (SAN), content delivery network (CDN), or other forms of computer or machine-readable media. The network can include the Internet, one or more local area networks (LANs), one or more wide area networks (WANs), wired type connections, wireless type connections, cellular, or any combination thereof. Similarly, sub-networks may have different architectures, or may be compliant or compatible with different protocols and can interoperate within a larger network.
[0053] For the purposes of the present disclosure, "wireless network" shall be understood to couple a client device to a network. The wireless network can take the form of an independent ad hoc network, a mesh network, a wireless LAN (WLAN) network, a cellular network, etc. The wireless network can further employ multiple network access technologies, including Wi-Fi, Long Term Evolution (LTE), WLAN, wireless router (WR) mesh, or second generation, third generation, fourth generation, or fifth generation (2G, 3G, 4G, or 5G) cellular technologies, Bluetooth, 802.11b / g / n, etc. The network access technologies can enable wide area coverage of devices, such as client devices with different degrees of mobility.
[0054] In short, a wireless network can include almost any type of wireless communication mechanism by which signals can be transmitted between devices such as client devices or computing devices, between networks, or within a network.
[0055] A computing device may be able to send or receive signals, for example, via a wired or wireless network, or may be able to process or store signals, such as in memory as a physical memory state, and thus may operate as a server. Thus, by way of example, devices that can operate as a server can include dedicated rack-mounted servers, desktop computers, laptops, set-top boxes, integrated devices combining various features, such as two or more features of the foregoing devices, and so on.
[0056] For the purposes of the present disclosure, a client (or consumer or user) device can include a computing device capable of sending or receiving signals (e.g., via a wired or wireless network). For example, a client device can include a desktop computer or a portable device such as a cellular phone, a smart phone, a display pager, a radio frequency (RF) device, an infrared (IR) device, a near field communication (NFC) device, a personal digital assistant (PDA), a handheld computer, a tablet computer, a phablet, a laptop computer, a set-top box, a wearable computer, a smart watch, an integrated or distributed device incorporating various features (e.g., features of the foregoing devices), etc.
[0057] The functionality or features of the client device can vary. The claimed subject matter is intended to cover a wide range of potential variations. For example, a web-enabled client device or the previously mentioned devices might include a high-resolution screen (e.g., HD or 4K), one or more physical or virtual keyboards, a mass storage device, one or more accelerometers, one or more gyroscopes, a global positioning system (GPS) or other location identification type functionality, or a highly functional display such as a touch-sensitive color 2D or 3D display.
[0058] Certain embodiments will now be described in more detail with reference to the accompanying drawings. Generally speaking, referring to Figure 1 , a system 100 in accordance with some embodiments of the present disclosure is shown. Figure 1 Components of a general environment in which the systems and methods discussed herein can be implemented are shown. Not all components are required to implement the present disclosure, and the arrangement and type of components can be varied without departing from the spirit or scope of the present disclosure. As shown, Figure 1 system 100 includes a local area network (“LAN”) / wide area network (“WAN”) - network 105, a wireless network 110, mobile devices (client devices) 102 - 104, and a client device 101. Figure 1 Also included are various servers such as a content server 106 and an application (or “app”) server 108.
[0059] Some embodiments of mobile devices 102 - 104 can include almost any portable computing device capable of receiving and sending messages over a network (e.g., network 105, wireless network 110, etc.). Mobile devices 102 - 104 can also generally be described as client devices configured to be portable. Thus, mobile devices 102 - 104 can include almost any portable computing device capable of connecting to another computing device and receiving information, as described above.
[0060] The mobile devices 102-104 may also include at least one client application configured to receive content from another computing device. In some embodiments, the mobile devices 102-104 may also communicate with non-mobile client devices, such as client device 101 and the like. In some embodiments, such communication may include any one of sending and / or receiving messages, creating and uploading documents, searching, viewing and / or sharing emojis, photos, digital images, audio clips, video clips, or various other forms of communication.
[0061] The client devices 101-104 may be capable of sending or receiving signals, such as via a wired or wireless network, or capable of processing or storing signals, such as as a physical memory state in a memory, and thus may operate as a server.
[0062] In some embodiments, the wireless network 110 is configured to couple the mobile devices 102-104 and their components to the network 105. The wireless network 110 may include any one of various wireless sub-networks, which may further cover ad hoc networks and the like, to provide infrastructure-oriented connectivity for the mobile devices 102-104.
[0063] In some embodiments, the network 105 is configured to couple the content server 106, the application server 108, etc. to other computing devices (including the client device 101), and to couple to the mobile devices 102-104 via the wireless network 110. Such that the network 105 is capable of using any form of computer-readable medium or network to transfer information from one electronic device to another electronic device.
[0064] In some embodiments, the content server 106 may include a device configured to provide any type or form of content to another device via a network. Devices that may operate as the content server 106 include personal computers, desktop computers, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, servers, etc. In some embodiments, the content server 106 may further provide various services, including but not limited to email services, instant messaging (IM) services, streaming and / or downloading media services, search services, photo services, web services, social networking services, news services, third-party services, audio services, video services, SMS services, MMS services, FTP services, Voice over Internet Protocol (VOIP) services, etc. Such services, such as email services and email platforms, may be provided via the message server 120.
[0065] In some embodiments, a user can access the services provided by servers 106 and 108. In a non-limiting example, this can include an authentication server, a search server, an email server, a social networking service server, an SMS server, an IM server, an MMS server, a switching server, a photo sharing service server, and a travel service server, using various devices 101 - 104 over network 105.
[0066] In some embodiments, for example, application server 108 can store various types of applications and application-related information, including application data and user profile information (e.g., identification, generation, and / or observation information related to a user).
[0067] In some embodiments, content server 106 and application server 108 can store various types of data related to the content and services they respectively provide, observe, identify, determine, generate, modify, retrieve, and / or collect. As discussed in more detail below, such data can be stored in an associated content database 107.
[0068] In some embodiments, servers 106 and / or 108 can be embodied as cloud servers, or configured to host cloud services, as described herein.
[0069] In some embodiments, network 105 is also coupled / connected to a Trusted Search Server (TSS), which can be used to present content according to the embodiments discussed herein. There are embodiments where the TSS functionality can be embodied in servers 106 and 108.
[0070] In addition, although Figure 1 servers 106 and 108 are respectively shown as single computing devices, the present invention is not limited thereto. For example, one or more functions of servers 106 and 108 can be distributed across one or more different computing devices. Additionally, in some embodiments, servers 106 and 108 can be integrated into a single computing device without departing from the scope of the present invention.
[0071] In addition, although Figure 1 the embodiments shown only depict servers 106 and 108, it should not be construed as limiting, as any type and number of servers can be included therein.
[0072] Turning to Figure 2 , computer system 210 is depicted and is a non-limiting example embodiment of system 100 discussed above in connection with Figure 1 discussion.
[0073] Figure 2illustrates a computer system 210 according to some embodiments, the computer system 210 being capable of enabling or operating a responsive layout system and server (see also Figure 5 ) as discussed below). In some embodiments, the computer system 210 may include and / or operate and / or process computer-executable code for one or more of the above-described program logics, software modules, and / or systems. Additionally, in some embodiments, the computer system 210 may operate and / or display information within one or more graphical user interfaces. In some embodiments, the computer system 210 may include a cloud server and / or may be coupled to one or more cloud-based server systems.
[0074] In some embodiments, the system 210 may include at least one computing device 230, including at least one processor 232. In some embodiments, the at least one processor 232 may include a processor residing in or coupled to one or more server platforms. In some embodiments, the system 210 may include a network interface 235a and an application interface 235b coupled to the at least one processor 232 capable of processing at least one operating system 234. Additionally, in some embodiments, the interfaces 235a, 235b coupled to the at least one processor 232 may be configured to process one or more software modules 238 (e.g., enterprise applications). In some embodiments, the software module 238 may include server-based software and may operate to host at least one user account and / or at least one client account and to transfer data between one or more of these accounts using the at least one processor 232.
[0075] In view of the above embodiments, it should be appreciated that some embodiments may employ various computer-implemented operations involving data stored in a computer system. Additionally, the above-described databases and models throughout the description may store analysis models and other data on computer-readable storage media within the system 210 and computer-readable storage media coupled to the system 210. Further, the above applications of the system may be stored on non-transitory computer-readable storage media within the system 210 and computer-readable storage media coupled to the system 210.
[0076] In some embodiments, system 210 may include at least one non-transitory computer-readable medium 236 coupled to at least one data source 237a and / or at least one data storage device 237b and / or at least one input / output device 237c. In some embodiments, the disclosed systems and methods may be embodied as computer-readable code on computer-readable medium 236. In some embodiments, computer-readable medium 236 may be any data storage device that can store data, which can then be read by a computer system (such as system 210). In some embodiments, computer-readable medium 236 may be any physical or material medium that can be used to tangibly store the required information or data or instructions and is accessible by a computer or processor 232. In some embodiments, at least one of software modules 238 may be configured within the system to output data to at least one user 231 via at least one graphical user interface presented on at least one digital display.
[0077] In some embodiments, non-transitory computer-readable medium 236 may be distributed over a conventional computer network via network interface 235a, where the systems embodied by the computer-readable code may be stored and executed in a distributed manner. For example, in some embodiments, one or more components of system 210 may be coupled via a local area network (“LAN”) 239a and / or an Internet-coupled network 239b (e.g., such as a wireless Internet) to send and / or receive data. In some further embodiments, networks 239a, 239b may include a wide area network (“WAN”), a direct connection (e.g., via a universal serial bus port), or other forms of computer-readable medium 236, or any combination thereof.
[0078] In some embodiments, the components of networks 239a, 239b may include any number of user devices, such as personal computers including, for example, desktop computers and / or laptop computers, or any fixed, generally non-mobile Internet device coupled via LAN 239a. For example, some embodiments include a personal computer 240a coupled via LAN 239a, and the personal computer 240a may be configured for any type of user including an administrator. Other embodiments may include a personal computer coupled via network 239b. In some further embodiments, one or more components of system 210 may be coupled to send or receive data via an Internet network (e.g., network 239b). For example, some embodiments include a user 231 wirelessly coupled and accessing, via an input and output (“I / O”) device 237c, one or more software modules of a system including at least one enterprise application 238. In some other embodiments, system 210 may enable at least one user 231 to be coupled via LAN 239a to access the enterprise application 238 via the I / O device 237c. In some embodiments, the user 231 may include a user 231a coupled to system 210 using a desktop computer and / or a laptop computer, or any fixed, generally non-mobile Internet device coupled via Internet 239b. In some embodiments, the user 231 may include a mobile user 231b coupled to system 210. In some embodiments, the mobile user 231b may be wirelessly coupled to system 210 using any mobile computing device 231c, including but not limited to a personal digital assistant and / or a cellular phone, a mobile phone or a smart phone and / or a pager and / or a digital tablet and / or a fixed or mobile Internet device.
[0079] Figure 3 is a schematic diagram of a client device, showing an example embodiment of a client device that can be used in the present disclosure. The client device 300 may include more or fewer components than those Figure 3 shown. However, the components shown are sufficient to disclose illustrative embodiments for implementing the present disclosure. For example, the client device 300 may represent the client device discussed above in connection with Figure 1 and Figure 2 discussion.
[0080] As Figure 3As shown, in some embodiments, the client device 300 includes a processing unit (CPU) 322 that communicates with a mass storage 330 via a bus 324. In some embodiments, the client device 300 further includes a power supply 326, one or more network interfaces 350, an audio interface 352, a display 354, a keyboard 356, an illuminator 358, an input / output interface 360, a haptic interface 362, an optional global positioning system (GPS) receiver 364, and a camera or other optical, thermal, or electromagnetic sensors 366. As will be understood by those skilled in the art, the device 300 may include one camera / sensor 366 or multiple cameras / sensors 366. The power supply 326 powers the client device 300.
[0081] The client device 300 may optionally communicate with a base station (not shown) or directly with another computing device. The network interface 350 is sometimes referred to as a transceiver, transceiver device, or network interface card (NIC).
[0082] In some embodiments, the audio interface 352 is arranged to generate and receive audio signals, such as the sound of a human voice. The display 354 may be a liquid crystal display (LCD), gas plasma, light emitting diode (LED), or any other type of display used with a computing device. The display 354 may also include a touch-sensitive screen that is arranged to receive input from an object such as a stylus or a finger from a human hand.
[0083] The keypad 356 may include any input device arranged to receive input from a user. The illuminator 358 may provide status indication and / or provide light.
[0084] In some embodiments, the client device 300 further includes an input / output interface 360 for communicating with external devices. The input / output interface 360 may utilize one or more communication technologies, such as USB, infrared, Bluetooth TM etc. In some embodiments, the haptic interface 362 is arranged to provide haptic feedback to a user of the client device.
[0085] The optional GPS transceiver 364 may determine the physical coordinates of the client device 300 on the surface of the earth, which typically outputs the location as latitude and longitude values. The GPS transceiver 364 may also employ other geolocation mechanisms, including but not limited to triangulation, assisted GPS (AGPS), E-OTD, CI, SAI, ETA, BSS, etc., to further determine the physical location of the client device 300 on the surface of the earth. However, in some embodiments, the client device may provide other information that can be used to determine the physical location of the device through other components, including for example MAC address, Internet protocol (IP) address, etc.
[0086] In some embodiments, the mass storage 330 includes a RAM 332, a ROM 334, and other storage devices. The mass storage 330 illustrates another example of a computer storage medium for storing information such as computer-readable instructions, data structures, program modules, or other data. The mass storage 330 stores a basic input / output system (“BIOS”) 340 for controlling the low-level operations of the client device 300. The mass storage also stores an operating system 341 for controlling the operation of the client device 300.
[0087] In some embodiments, the memory 330 further includes one or more data storage devices that the client device 300 can utilize to store applications 342 and / or other information or data, etc. For example, the data storage device can be used to store information describing the various capabilities of the client device 300. Then, the information can be provided to another device based on any of a variety of events, including being sent as part of a header (e.g., an index file of an HLS stream) during communication, being sent upon request, etc. At least a portion of the capability information can also be stored on a disk drive or other storage medium (not shown) within the client device 300.
[0088] In some embodiments, the application 342 can include computer-executable instructions that, when executed by the client device 300, send, receive, and / or otherwise process audio, video, images, and enable remote communication with a server and / or another user of another client device. In some embodiments, the application 342 can further include a search client 345 that is configured to send, receive, and / or otherwise process search queries and / or search results.
[0089] After describing the components of the general architecture used in some embodiments, the general operation of these components will now be described below with respect to some embodiments.
[0090] Figure 4 is a block diagram showing the components of some embodiments. Figure 4 includes a synchronization engine 400, a network 415, and a database 420. The synchronization engine 400 can be a dedicated machine or processor and can be hosted by a cloud server (e.g., a cloud web service server), a messaging server, an application server, a content server, a social network server, a web server, a search server, a content provider, a third-party server, a user's computing device, etc., or any combination thereof.
[0091] According to some embodiments, the synchronization engine 400 may be embodied as a stand-alone application executed on a server and / or a user device (e.g., on a cloud server and / or locally deployed on a user device with local storage). In some embodiments, the synchronization engine 400 may be used as an application installed on a device; and, in some embodiments, such an application may be a web-based application accessed by the device over a network.
[0092] The database 420 may be any type of database or memory and may be associated with a content server (e.g., a content server, a search server, or an application server) on a network or a user's device (e.g., Figure 1-2 devices 101 - 104 or device 200 in). The database 420 includes a dataset of data and metadata associated with local and / or network information related to users, services, applications, content, etc. Such information may be stored and indexed in the database 420 independently and / or as linked or associated datasets. As described above, it should be understood that without departing from the scope of the present disclosure, the data (and metadata) in the database 420 may be any type of information and type, whether known or to be known.
[0093] According to some embodiments, the database 420 may store data and metadata associated with users, files, projects, versions, synchronization events, schedules, images, videos, texts, messages, products, entries, and services from various media and / or service providers and / or platforms, etc.
[0094] As described above, with reference to Figure 1-2 , the network 415 may be any type of network, such as but not limited to a wireless network, a local area network (LAN), a wide area network (WAN), the Internet, or a combination thereof. The network 415 facilitates the connection between the synchronization engine 400 and the storage resource database 420. In fact, as Figure 4 shown, the synchronization engine 400 and the database 420 may be directly connected by any known or to-be-known method of connecting such devices and resources and / or enabling communication between such devices and resources.
[0095] For convenience, the combination of a main processor, a server, or a device including hardware programmed with dedicated functions herein is referred to as the synchronization engine 400 and includes a file access module 402, a file editing module 404, a sharing module 406, and a version control module 408. It should be understood that the engines and modules discussed herein are not exhaustive, as additional or fewer engines and / or modules (or sub-modules) may be applicable to embodiments of the systems and methods discussed. The operations, configurations, and functions of each module, as well as their roles in the embodiments of the present disclosure, will be discussed below.
[0096] Moving on toFigure 5 System 500 provides a non - limiting example of a network architecture and configuration according to some embodiments. System 500 provides a non - limiting example of the interaction between devices at locations 502a - 502n and a cloud storage device provided as file storage device 506. For this example, locations 502a - 502n are locally - deployed locations.
[0097] In some embodiments, storage device 506 can be configured as a multi - tenant database that can perform synchronization operations among multiple devices, including reconciling the current state of a list of data objects with the corresponding data objects in the multi - tenant database without further (i.e., independent of) user action. In some embodiments, storage device 506 can execute engine 400, which can be configured to monitor files and directories in a subset of the multi - tenant database and in the computing devices associated with locations 502a - 502n and to reconcile updated files in real - time.
[0098] As described herein, storage device 506, cloud - hosted product 508, cloud operation training simulator (OTS) 510, and native cloud product 512 are hosted on a network (e.g., the Internet), while the devices associated with locations 502a - 502n are local devices connected to the network to access file storage device 506 and its related elements 508 - 512, etc. Thus, line 504 provides an indication of the network connection required to connect to the cloud within system 500 (e.g., locations 502a - 502n are connected to storage device 506 via the network).
[0099] As discussed in more detail below, in some embodiments, non - file - based products, such as but not limited to AppServer and InTouch / Common Graphics, can be installed in each location (502a - 502n) such that they can interact with an application programming interface (API) (e.g., a Representational State Transfer (REST) API) executed in association with storage device 506. As described below, at least with respect to Figure 6 process 600, such interaction can enable synchronization enabled via engine 400.
[0100] According to some embodiments, the configuration of system 500 enables local - deployment - to - local - deployment interaction, file sharing, and synchronization. For example, location 502a can upload a document to file storage device 506, and then location 502b can access file storage device 506 and download it.
[0101] In some embodiments, locations 502a - 502n may refer to devices located at the same location (e.g., the same factory), all or part of which may access data drives within the file storage device 506. In some embodiments, locations 502a - 502n may refer to different locations (e.g., different factories and / or third - party factories with no affiliation), all of which have varying degrees of access rights, as described above.
[0102] In some embodiments, through the configuration of system 500, each user, via their respective device at location (e.g., 502a - 50n), can upload and download files along with their associated data and metadata, and share content bidirectionally, by means of a file storage device 506 hosted over a network. In some embodiments, this enables local - to - local file sharing via the cloud. In some embodiments, a user can share files with other users at the same location. In some embodiments, files (e.g., data / metadata) can be shared between users at different locations.
[0103] According to some embodiments, this enables two (or more users) to work on the same document (in some embodiments, simultaneously), and enables access to the latest and accurate data of the document (or project / task). In some embodiments, the integration of the file storage device 506 among each user (e.g., locations 502a - 502n) provides for the file storage device 506 to be able to (through the synchronization engine 400, described below) control how, when, and to what extent files can be accessed, edited, and / or even made visible to the requesting user, service, platform, or location, etc.
[0104] In some embodiments, for example, the location (502a - 502n) may be associated with another service, platform, or cloud service. Thus, not only can users (and their associated devices) access the storage device 506, but other types of services, cloud servers, and platforms can also access the file storage device 506. Thus, in addition to local - to - local file sharing, system 500 also supports file sharing and synchronization between local - to - cloud, cloud - to - local, cloud - to - cloud, etc. locations, or some combination thereof, as described above.
[0105] Thus, in some embodiments, the configuration and infrastructure of the storage device 506 of system 500 support any known or to - be - known network configuration and / or network connection management protocol, where any type, quantity, and / or frequency of devices, users, servers, platforms, or services can access and utilize the drive - hosted data for synchronization between multiple locations (whether real - world locations or digital locations).
[0106] According to some embodiments, as Figure 5As shown, the file storage device 506 is associated with the native cloud product 512. In some embodiments, the native cloud product 512 can be directly connected to or associated with the storage device 506 (e.g., stored in components or drives of the storage device 506); and, in some embodiments, the native cloud product 512 can be stored in a separate data storage device or server and can be accessed by the storage device 506 via a network.
[0107] As understood by those of ordinary skill in the art, in some embodiments, the native cloud product 512 includes, but is not limited to, APIs, agile development, microservices, cloud platforms, containers, security features, tools, and any other type of known or to-be-known application development or deployment by the custodian of the storage device 506. In some embodiments, the native cloud product 512 enables the storage device 506 to provide, for example, PaaS functionality to locations 502a - 502n.
[0108] Thus, in some embodiments, each location 502 - 502n can access the native cloud product 512 via the network-hosted storage device 506. This enables each location to access the same product in a cost-saving configuration such that they can be web-enabled, downloadable from a central location on the network, and available for use by all permitted users, services, and / or platforms executing at each location 502a - 502n. In some embodiments, this eliminates the computational consumption and network bandwidth blockage required for the cycle of exporting / importing or manually uploading the native cloud product 512 and / or files associated therewith.
[0109] In some embodiments, the native cloud product 512 can be configured to access data stored in the storage device 506 via an API of the storage device 506, which enables access to data shared from the cloud-hosted product 508 uploaded from locations 502a - 502n, and / or enables the transfer of data back to locations 502a - 502n.
[0110] According to some embodiments, as Figure 5 As shown, the file storage device 506 is associated with the cloud OTS 510. In some embodiments, the cloud OTS 510 can be directly connected to or associated with the storage device 506 (e.g., stored in components or drives of the storage device 506); in some embodiments, the cloud OTS 510 can be stored in a separate data storage device or server and can be accessed by the storage device 506 via a network.
[0111] As will be appreciated by one of ordinary skill in the art, in some embodiments, cloud OTS 510 refers to one or more services that are part of an Object Management Group (OMG) (e.g., Common Object Request Broker Architecture (CORBA)) that provide a set of maintained standards via various types of APIs to facilitate and / or control cross-platform processes. Generally, OTS helps standardize regular communication between various network components (such as, for example, between storage device 506 and locations 502a - 502n, between locations 502a, 502b, and 502n, etc., or some combination thereof).
[0112] According to some embodiments, cloud OTS 510 allows companies (e.g., locations 502a - 502n) to onboard and train new operators, as well as enhance the training of experienced operators. This reduces training time (e.g., from months to days) as it allows multiple operators to be trained simultaneously.
[0113] According to some embodiments, as Figure 5 shown, file storage device 506 is associated with cloud-hosted product 508. In some embodiments, cloud-hosted product 508 may be directly connected to storage device 506 or associated with storage device 506 (e.g., stored in components or drives of storage device 506); in some embodiments, cloud-hosted product 508 may be stored in a separate data storage device or server and may be accessed by storage device 506 via a network.
[0114] As will be appreciated by one of ordinary skill in the art, in some embodiments, cloud-hosted product 508 refers to an application, software, software package, API, etc. that can access data stored in the drives within storage device 506, where the data is uploaded from locations 502a - 502n and / or shared from native cloud product 512 or cloud OTS 510. Product 508 may be sandboxed and configured to seamlessly transfer data to locations 502a - 502n (e.g., to a locally deployed user and vice versa).
[0115] In some embodiments, file-based cloud-hosted product 508 may access storage device 506 according to an access protocol associated with accessing a local or network hard drive. In some embodiments, non-file-based products may use the API of storage device 506 to access the data stored therein.
[0116] According to some embodiments, as described above, as Figure 5As shown and discussed in more detail below, system 500 enables ubiquitous access to data stored within the drives of storage device 506. That is, regardless of the mechanism used to place files into storage device 506, it can be accessed by cloud-hosted product 508, by users / entities at locations 502a - 502n, and / or through native cloud product 512 by any known or yet-to-be-known method (unless otherwise permitted / blocked).
[0117] In some embodiments, locations 502a - 502n may have local folders where file data and metadata are locally stored and then uploaded to storage device 506. This storage device can interact with storage device 506 and act as a local data storage for periodic uploads or continuous synchronization. Storage and synchronization can be achieved by interacting with the API of storage device 506.
[0118] In some embodiments, storage device 506 may be configured to integrate with, interact with, or otherwise communicate with and transfer data between third-party cloud storage device providers and / or external access services provided by third-party vendors (e.g., email, FTP, etc.). In some embodiments, these third-party services and / or vendors can access storage device 506 via a network connection or a direct connection (e.g., either side of line 504). In some embodiments, access to such vendors and / or third-party services can be facilitated through the API of storage device 506, which enables locations 502a - 502n to access and utilize the service data provided therein and store usage data in the associated drives within storage device 506.
[0119] As discussed in more detail below with respect to Figure 6 In some embodiments, system 500 is configured such that storage device 506 can provide a service for replicating data between each of locations 502a - 502n. According to some embodiments, when data is created, shared, and / or uploaded, engine 400 (e.g., embodied as an API executed in association with storage device 506) is configured to create a new (or modify an existing) instance of a synchronization event that defines a synchronization between at least two locations (502a - 502n, acting as endpoints).
[0120] According to some embodiments, content synchronization between these locations 502a - 502n can occur continuously when data is created, modified, deleted, or according to any other form of input, timing, request, or detected event. Cloud file storage device 506 is exposed to modules executed on devices at each location (e.g., devices, servers executed at locations 502a - 502n) to enable read / write access where applicable and / or permitted.
[0121] Go to Figure 6 ,Process 600 provides a non - restrictive data flow of a method for synchronizing data between locations 502a - 502n. According to some embodiments of process 600, step 602 is performed by the file access module 402 of the synchronization engine 400; steps 604 - 606 are performed by the file editing module 404; step 610 is performed by the sharing module 406; and steps 612 - 614 are performed by the version control module 408.
[0122] According to some embodiments, process 600 provides a method for automatically synchronizing data objects in a cloud - based and / or cloud - hosted computing environment. In some embodiments, the cloud infrastructure (e.g., as shown in Figure 1 , 2 and 5) may include, but is not limited to, servers, multi - tenant databases, and computing devices connected to the multi - tenant database via a network.
[0123] In some embodiments, process 600 includes running an application (engine 400) on a device running at locations 502a - 502n, which includes a network synchronization function for maintaining a persistent connection between the storage device 506 (e.g., an API executed in conjunction with a multi - tenant database) and the device at locations 502a - 502n. In some embodiments, engine 400 may be executed at the network level to offload resources at each location, whereby synchronization events can be achieved through requests and / or pings from the server that cause the devices at each location to act (e.g., respond). In some embodiments, an instance of engine 400 may be executed at each location 502a - 502n and the storage device 506 (and / or its connected devices / services 508 - 510 and third - party entity services and platforms) to achieve the disclosed synchronization discussed herein.
[0124] In some embodiments, running the application includes, but is not limited to, monitoring file creation, deletion, and revision of files located on the device, and monitoring file creation, deletion, and revision of corresponding (versioned) files located in the multi - tenant database. This monitoring enables version control such that all users view and interact with the latest version, which is achieved through the continuous two - way synchronization function discussed herein.
[0125] In some embodiments, the synchronization between locations 502a - 502n and the storage device 506 (and the connected devices / services 508 - 510 of the storage device 506 and third - party entity services and platforms) can be achieved by engine 400, which is configured to maintain a persistent connection with the API of the storage device 506.
[0126] Process 600 will be discussed according to some non - limiting embodiments, where a user at one location (e.g., a factory) requests access to an electronic document, edits the document, and the edits are synchronized across other locations (factories and other factories) and on / within a cloud storage device.
[0127] Those of ordinary skill in the art will understand that it should not be construed as limiting the present disclosure to such embodiments, because any type of upload, file creation, or file access involved in synchronization events within, on, and through a network can be performed by similar steps without departing from the scope of the present disclosure.
[0128] Process 600 begins at step 602, where a user associated with an account requests access to a file in a drive stored in a cloud storage device. The drive hosts the files of the account, and for the purposes of the disclosure of process 600, the user has the permissions required to access the document. In some embodiments, step 602 may include additional steps (or sub - steps), where permissions are checked to ensure the user has the identity required to access all or part of the requested file.
[0129] In response to the request, the user is granted access. In some embodiments, the user can access, view, and interact with the file via a web - enabled application (e.g., provided by the products from entries 508 and / or 510). In some embodiments, step 602 involves the user downloading a copy or the latest version of the file to his / her device.
[0130] In step 604, information related to file editing or modification is identified. In some embodiments, the information indicates but is not limited to changes to the document, the difference between the original (e.g., access) and current state of the document, user identifiers, device and / or location (e.g., 502a - 502n) identifiers, the location within the file that the user is currently viewing / interacting with, and any other type of information associated with the edit and / or the editor. Thus, in step 604, engine 400 identifies that the file has changed from the version provided in step 602.
[0131] In step 606, an input for uploading the updated file and / or the edits to a storage device (e.g., storage device 506) is identified. In some embodiments, the input can be the product of continuous synchronization that occurs according to specific criteria as described above (e.g., periodically, when a change is detected, when the user saves or enters, or any other form indicating a difference between two versions of the file that requires correction).
[0132] In response to step 606, a synchronization (e.g., "synch") operation is initiated and executed. Step 608. The synchronization operation reconciles the document versions at each location and device (e.g., locations 502a - 502n) with the versions stored in the cloud (e.g., storage device 506) so that all versions at each different physical and digital location reflect the same information.
[0133] In some embodiments, the synchronization operation is an upload of edit information that causes the version stored in the cloud drive to be updated to reflect the changes. Step 610. The edit information can include changes such that only the edits are uploaded and the cloud version is updated accordingly. In some embodiments, a new version of the file can be uploaded so that the stored cloud version is changed to the uploaded file. In some embodiments, such a change involves creating a new version where the previously unedited version is archived and / or moved to a backup and linked via the metadata of the latest version; and in some embodiments, the old version is deleted or moved to a cache (for later purging).
[0134] In some embodiments, as discussed with respect to steps 612 - 614, the file storage device can implement, for example, a version management API (e.g., provided by cloud OTS 510) to provide version control for the files.
[0135] According to some embodiments, when the user uploads a new file version (steps 606 - 608), the engine 400 makes the latest version accessible and performs a "rollback" of the old version. In some embodiments, the "rolled-back" version remains available; however, it must be directly linked (e.g., archived) according to any known or to-be-known branching selection protocol via the provided parameters or the displayed interface object as described above.
[0136] Thus, in some embodiments, step 612 involves identifying all versions of the file that are currently being accessed by the user, service, or other entity (e.g., where the file is "checked out"). In step 614, as described above, a new version is created; the new version is provided as an update to each "checked-out" version. The previous versions can be moved to the local cache of the device viewing / accessing the file and ignored (e.g., deleted) at the end of the session with the file (since it represents an old version that is not currently applicable).
[0137] As Figure 6As shown, steps 610 and 614 include lines that return to step 604. This recursive nature reflects that the engine 400 is configured to provide continuous or periodic synchronization in the disclosed cloud environment. This enables updates and changes to documents to be shared across devices, locations, users, and platforms. In other words, as described above, process 600 provides a non-limiting example embodiment of file sharing between location to location, cloud to cloud, device to device, device to cloud, cloud to device, network to network, etc. Process 600 also supports version control so that all changes to shared files and / or cloud services accessed by all parties / entities are correctly and timely distributed to each user, device, platform, or service.
[0138] For the purposes of this disclosure, a module is a software, hardware, or firmware (or combination thereof) system, process, or function, or a component thereof, for performing or facilitating the processes, features, and / or functions described herein (with or without human interaction or augmentation). A module may include sub-modules. The software components of a module may be stored on a computer-readable medium for execution by a processor. A module may be integrated into one or more servers, or loaded and executed by one or more servers. One or more modules may be grouped into an engine or application.
[0139] For the purposes of this disclosure, the terms “user,” “subscriber,” “consumer,” or “customer” shall be understood to refer to a user of one or more of the applications described herein and / or a consumer of data provided by a data provider. By way of example and not limitation, the term “user” or “subscriber” may refer to a person who receives data from a data or service provider via the Internet in a browser session, or may refer to an automated software application that receives data and stores or processes the data.
[0140] Those skilled in the art will recognize that the methods and systems of this disclosure may be implemented in many ways and are thus not limited by the foregoing exemplary embodiments and examples. In other words, the functional elements performed by a single or multiple components (in various combinations of hardware and software or firmware) and a single function may be distributed between software applications at the client level or the server level or both. In this regard, any number of features of the different embodiments described herein may be combined into a single or multiple embodiments, and alternative embodiments having less than or greater than all of the features described herein are possible.
[0141] Functions may be distributed in whole or in part among multiple components in ways now known or later to be known. Thus, there may be many software / hardware / firmware combinations in implementing the functions, features, interfaces, and preferences described herein. In addition, the scope of this disclosure includes conventional known ways of implementing the described features and functions and interfaces, and those variations and modifications to the hardware or software or firmware components described herein that will be understood by those skilled in the art now and in the future.
[0142] In addition, embodiments of the methods presented and described as flowcharts in the present disclosure are provided by way of example to provide a more complete understanding of the technology. The disclosed methods are not limited to the operations and logical flows presented herein. Alternative embodiments are contemplated, in which the order of various operations is changed and in which sub-operations described as part of a larger operation can be performed independently.
[0143] Although various embodiments have been described for the purposes of the present disclosure, these embodiments should not be considered as limiting the teachings of the present disclosure to these embodiments. Various changes and modifications can be made to the above elements and operations to obtain results that are still within the scope of the systems and processes described in the present disclosure.
Claims
1. A computerized method for two-way file sharing and synchronization over a network and via the network, comprising: Receiving, at a computing device over the network, a request from a first device to access a file stored in a database, the first device being associated with a first location and the database being associated with the computing device; Transmitting, by the computing device over the network, a version of the file to the first device; Receiving, by the computing device from the first device, information indicating that the first device has modified the version of the file transmitted to the first device, the information including an edit to the version of the file; In response to receiving the information, automatically updating, by the computing device, the file stored in the associated database by: In response to receiving the information from the first device, creating, via the computing device, a new version of the file, the new version being an updated version of the file including the edit; And Archiving, via a branch control associated with the database and executed by the computing device, the file provided to the first device on the network so that the created new version is accessible in the database as the most recent version of the file; Upon receiving the information, identifying, by the computing device, another version of the file previously transmitted to a second device associated with a second location; And Upon identifying the other file version, automatically transmitting, by the computing device over the network, edit information based on the created new version to the second device, the edit information causing the other file version at the second location to be updated to incorporate the edit performed in the version of the file at the first location.
2. The method according to claim 1, wherein The edit information transmitted to the second device includes information associated with the created new version.
3. The method according to claim 1, wherein the computing device interacts with the first device and the second device over the network via an application programming interface (API) associated with and managing the database.
4. The method according to claim 1, wherein the computing device includes functionality for accessing a set of native and third-party products, services, and platforms, and wherein the functionality enables the first device and the second device to access the set of native and third-party products, services, and platforms.
5. The method according to claim 1, wherein the information received from the first device corresponds to a new version of the file created by the first device.
6. The method according to claim 1, wherein the second location is the same as the first location.
7. The method according to claim 1, wherein the second location is a location different from the first location.
8. The method according to claim 1, wherein the second location is a network location.
9. The method according to claim 1, wherein the second location corresponds to a third-party cloud service.
10. The method according to claim 1, further comprising: Analyzing the request from the first device; And Determining, based on the analysis, whether to allow the first device to access the file, wherein the transmission of the file to the first device is based on the determination.
11. The method according to claim 1, wherein the first location and the second location respectively correspond to at least one of a real-world location and an electronic location on the network.
12. The method according to claim 1, wherein the information received from the first device indicating that the first device has modified the version of the file corresponds to a digital event selected from the group consisting of: an upload by the first device, a time period, an auto - save event, a detection of a threshold amount of editing being performed, a request from a computing device, and a threshold amount of time elapsed since the last synchronization of the computing device.
13. A non - transitory computer - readable storage medium tangibly encoded with computer - executable instructions that, when executed by a processor associated with a computing device, perform a method comprising the steps of: Receiving, at the computing device via a network, a request from a first device to access a file stored in a database, the first device being associated with a first location and the database being associated with the computing device; Transmitting, by the computing device via the network, a version of the file to the first device; Receiving, by the computing device from the first device, information indicating that the first device has modified the version of the file transmitted to the first device, the information including an edit to the version of the file; In response to receiving the information, automatically updating, by the computing device, the file stored in the associated database by: Creating, in response to receiving the information from the first device via the computing device, a new version of the file, the new version being an updated version of the file including the edit; And Archiving, via a branch control associated with the database and executed by the computing device, the file provided to the first device on the network so that the created new version is accessible as the most recent version of the file in the database; Identifying, by the computing device upon receiving the information, another version of the file previously transmitted to a second device associated with a second location; And Upon identifying the other file version, automatically transmitting, by the computing device via the network, edit information based on the created new version to the second device, the edit information causing the other file version at the second location to be updated to incorporate the edits made in the version of the file at the first location.
14. The non - transitory computer - readable storage medium according to claim 13, wherein the computing device interacts with the first device and the second device via a network through an application programming interface (API) associated with and managing the database.
15. The non - transitory computer - readable storage medium according to claim 13, wherein the computing device includes functionality for accessing a set of native and third - party products, services, and platforms, and wherein the functionality enables the first device and the second device to access the set of native and third - party products, services, and platforms.
16. A computing device comprising: A processor; And A non - transitory computer - readable storage medium for tangibly storing program logic thereon for execution by the processor, the program logic including: Logic executed by the processor for receiving, via a network, a request from a first device to access a file stored in a database, the first device being associated with a first location and the database being associated with the computing device; Logic executed by a processor, the logic for transmitting a version of a file to a first device over a network; Logic executed by a processor, the logic for receiving from the first device information indicating that the first device has modified the version of the file transmitted to the first device, the information including an edit to the version of the file; Logic executed by a processor, the logic for automatically updating the file stored in the associated database upon receipt of the information by: Creating a new version of the file in response to receiving the information from the first device, the new version being an updated version of the file including the edit; and Archiving the file provided to the first device on the network via a branch control associated with the database such that the newly created version is accessible in the database as the most recent version of the file; Logic executed by a processor, the logic for identifying, upon receipt of the information, another version of the file previously transmitted to a second device associated with a second location; and Logic executed by a processor, the logic for automatically transmitting edit information to the second device over the network when another file version is identified, the edit information causing the other file version at the second location to be updated to incorporate the edit performed in the version of the file at the first location, wherein the edit information transmitted to the second device includes information associated with the newly created version.
Citation Information
Patent Citations
Systems and methods for providing access to a data file stored at a data storage system
CN108427703A
System and method for synchronizing data objects in a cloud based social networking environment
US20130275509A1