RU2682010C1 - Data in the database access separation method - Google Patents
Data in the database access separation method Download PDFInfo
- Publication number
- RU2682010C1 RU2682010C1 RU2018112651A RU2018112651A RU2682010C1 RU 2682010 C1 RU2682010 C1 RU 2682010C1 RU 2018112651 A RU2018112651 A RU 2018112651A RU 2018112651 A RU2018112651 A RU 2018112651A RU 2682010 C1 RU2682010 C1 RU 2682010C1
- Authority
- RU
- Russia
- Prior art keywords
- data
- database
- layer
- user
- layers
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
Abstract
Description
ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY
Изобретение относится к области информационных технологий и вычислительной техники, а именно к способу разграничения доступа к данным в базе данных.The invention relates to the field of information technology and computer technology, and in particular to a method for delimiting access to data in a database.
УРОВЕНЬ ТЕХНИКИBACKGROUND
В последнее время в связи с ростом объемов данных, хранимых и используемых при работе пользователями на вычислительных устройствах и в различных системах, требуются технические решения, позволяющие предоставлять пользователям доступ только к тем данным баз данных, которые требуются пользователям для осуществления своей деятельности, в частности, для работы. Предоставление пользователям с использованием вычислительных устройств доступа только к необходимым им данным, в частности, без предоставления доступа к данным других пользователей или с предоставлением ограниченного доступа к данным других пользователей, например, на просмотр (чтение) и модификацию (например, изменение, удаление и т.д.) данных, позволяет ускорить работу пользователей с объемами предоставляемых им данных, а также повышает безопасность получения данных пользователям, которые не имеют разрешения на просмотр и/или модификацию таких данных. Также требуются технические решения, позволяющие ограничить определенным пользователям доступ к данным, хранящимся в базах данных, в частности, в общих для множества пользователей базах данных, например, пользователей различных предприятий. Также требуются технические решения, позволяющие пользователям использовать данные, хранящиеся в базах данных, общие, в частном случае, одинаковые для всех пользователей или, по крайней мере, одной группы пользователей. Традиционные способы работы с данными, в том числе способы разграничения данных в базах данных со временем становятся менее эффективными или малоэффективными, что приводит к снижению эффективности работы пользователей и предприятий.Recently, due to the growth in the volume of data stored and used by users on computing devices and in various systems, technical solutions are required that allow users to access only those database data that users need to carry out their activities, in particular for work. Providing users using computing devices access only to the data they need, in particular, without providing access to the data of other users or providing limited access to the data of other users, for example, for viewing (reading) and modification (for example, changing, deleting, etc. .d.) of data, allows to speed up the work of users with the volumes of data provided to them, and also increases the security of receiving data for users who do not have permission to view and / or modify ation of such data. Technical solutions are also required that allow certain users to restrict access to data stored in databases, in particular, databases common to many users, for example, users of various enterprises. Technical solutions are also required that allow users to use the data stored in the databases, common, in the particular case, the same for all users or at least one user group. Traditional methods of working with data, including methods of delimiting data in databases, over time become less effective or ineffective, which leads to a decrease in the efficiency of users and enterprises.
Из уровня техники известны система и способ для обеспечения закупок между компаниями и группами компаний (см. US 7155403B2, опубл. 26.12.2006), причем предлагается способ для обеспечения закупок между множеством компаний со множеством комплексных правил учета с обеспечением безопасного просмотра информации компаниями, причем компании организованы в группы компаний и закупочных объединений для получения скидок и доступа к общим договорам поставщиков.The prior art system and method for ensuring procurement between companies and groups of companies (see US 7155403B2, publ. 12/26/2006), and a method for ensuring procurement between many companies with many complex accounting rules to ensure safe viewing of information by companies, and companies are organized into groups of companies and purchasing associations to receive discounts and access to general supplier contracts.
Недостатками такого технического решения является отсутствие использования слоев данных и использования политики безопасности на уровне строк для обеспечения разграничения доступа пользователям к данным, хранящимся в базе данных. Также недостатком такого решения является отсутствие использования иерархии слоев данных (в частности, родительских и дочерних слоев данных) для обеспечения разграничения доступа к данным, хранящимся в базе данных.The disadvantages of this technical solution is the lack of the use of data layers and the use of row-level security policies to ensure that users have differentiated access to data stored in the database. Another drawback of this solution is the lack of using a hierarchy of data layers (in particular, parent and child data layers) to provide differentiation of access to data stored in the database.
Из уровня техники также известны система и способ сбора и хранения информации казино в системе реляционных баз данных (см. US 20090172035A1, опубл. 02.07.2009), причем способ включает создание реляционной базы данных для хранения и организации информации, а также создание логической модели данных, определяющей, каким образом информация хранится и организована в базе данных, причем логическая модель данных включает предметную область, включающую множество сущностей и отношений, определяющие то, как информация хранится в указанной базе данных.The prior art also knows a system and method for collecting and storing casino information in a relational database system (see US 20090172035A1, published 02.07.2009), the method including creating a relational database for storing and organizing information, as well as creating a logical data model defining how information is stored and organized in a database, and the logical data model includes a subject area that includes many entities and relationships that determine how information is stored in the specified database.
Недостатками такого технического решения является отсутствие использования слоев данных и использования политики безопасности на уровне строк для обеспечения разграничения доступа пользователям к данным, хранящимся в базе данных. Также недостатком такого решения является отсутствие использования иерархии слоев данных (в частности, родительских и дочерних слоев данных) для обеспечения разграничения доступа к данным, хранящимся в базе данных.The disadvantages of this technical solution is the lack of the use of data layers and the use of row-level security policies to ensure that users have differentiated access to data stored in the database. Another drawback of this solution is the lack of using a hierarchy of data layers (in particular, parent and child data layers) to provide differentiation of access to data stored in the database.
Из уровня техники также известны интегрированные коммуникационные системы и способы для представления продукции и прямых продаж (см. US 20080052193A1, опубл. 28.02.2008), причем способ описывает предоставление интерфейса компании для ERP-системы, связанной с множеством компаний, причем интерфейс предоставляет канал доступа к товарам каждой из компаний, причем компании могут выборочно загружать содержимое из своей ERP-системы и предоставление интерфейса пользователя для отображения содержимого о продукте, и предоставление возможности пользователю приобретать товары, причем транзакции направляются непосредственно в ERP-систему компании-продавца через интерфейс компании.Integrated communication systems and methods for presenting products and direct sales are also known from the prior art (see US 20080052193A1, publ. 02.28.2008), moreover, the method describes providing a company interface for an ERP system associated with many companies, the interface providing an access channel to the goods of each company, and companies can selectively download content from their ERP system and provide a user interface for displaying content about the product, and allowing the user to to acquire goods, and transactions are sent directly to the seller’s ERP system through the company’s interface.
Недостатками такого технического решения является отсутствие использования слоев данных и использования политики безопасности на уровне строк для обеспечения разграничения доступа пользователям к данным, хранящимся в базе данных. Также недостатком такого решения является отсутствие использования иерархии слоев данных (в частности, родительских и дочерних слоев данных) для обеспечения разграничения доступа к данным, хранящимся в базе данных.The disadvantages of this technical solution is the lack of the use of data layers and the use of row-level security policies to ensure that users have differentiated access to data stored in the database. Another drawback of this solution is the lack of using a hierarchy of data layers (in particular, parent and child data layers) to provide differentiation of access to data stored in the database.
Предлагаемый способ позволяет преодолеть, по крайней мере, часть вышеуказанных недостатков или все указанные недостатки, а также реализовать преимущества настоящего изобретения, как описано в рамках настоящего технического изобретения.The proposed method allows to overcome at least part of the above disadvantages or all of these disadvantages, as well as realize the advantages of the present invention, as described in the framework of the present technical invention.
СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION
Техническим результатом является повышение надежности разграничения доступа пользователей к данным путем использования слоев данных и политики безопасности на уровне строк.The technical result is to increase the reliability of restricting user access to data by using data layers and row-level security policies.
Согласно одному из вариантов реализации, предлагается способ для разграничения доступа к данным в базе данных, в котором осуществляется создание справочника слоев данных, сохраненного, по крайней мере, в одной таблице, в базе данных сервера базы данных, причем справочник слоев данных содержит, по крайней мере, названия всех слоев данных и содержит идентификаторы слоев данных для наборов данных, хранимых в объектах метаданных бизнес логики сервера приложений сервера компьютерной системы, причем объектами метаданных являются справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, сохраненные в таблицах базы данных сервера базы данных, связанного с сервером компьютерной системы, где идентификатор слоя данных определяет принадлежность набора данных к соответствующему слою данных; осуществляется создание связывающей таблицы пользователей слоев данных в базе данных сервера базы данных, причем в связывающей таблице пользователей слоев данных хранятся связи между пользователями и слоями данных в виде сохраненных связанных идентификаторов пользователей и соответствующих им идентификаторов слоев данных из доступных идентификаторов слоев данных справочника слоев данных, причем связи между пользователями и слоями данных определяют доступность наборов данных для чтения и модификации пользователям связанных с ними слоями данных; осуществляется создание связывающей таблицы дочерних слоев данных в базе данных сервера базы данных, причем в связывающей таблице дочерних слоев данных хранится иерархия между слоями данных в виде сохраненных связанных идентификаторов для дочерних слоев данных и идентификаторов для родительских слоев данных, причем связь между родительскими слоями и дочерними слоями определяет доступность наборов данных дочерних слоев данных для чтения пользователями родительских слоев данных; осуществляется создание политики безопасности на уровне строк (RLS-политики) для каждой из таблиц базы данных сервера базы данных, в которых хранятся справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, и осуществляется сохранение RLS-политик в базе данных сервера базы данных, причем RLS-политика содержит, по крайней мере, одно выражение, возвращающее логический результат, определяющий доступность пользователю наборов данных из таблиц базы данных сервера базы данных в зависимости от идентификаторов слоев данных для таких наборов данных; сервером приложений при добавлении набора данных в справочник осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя; сервером приложений при добавлении набора данных в связывающую таблицу осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя; сервером приложений при добавлении документа осуществляется установление идентификатора слоя данных, по крайней мере, для одного добавляемого набора данных, содержащегося в добавляемом документе, и осуществляется сохранение добавляемого документа и, по крайней мере, одного набора данных документа в базу данных сервера базы данных с сохранением для сохраняемого набора данных документа установленного идентификатора слоя; сервером приложений при добавлении набора данных в табличную часть документа осуществляется установление идентификатора слоя данных для добавляемого набора данных и сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя; сервером компьютерной системы посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, осуществляется предоставление пользователю доступа к наборам данных и наборов данных для чтения и модификации, идентификаторы слоев данных которых связаны с идентификатором пользователя в связывающей таблице пользователей слоев данных при осуществлении запросов данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера компьютерной системы; сервером компьютерной системы осуществляется предоставление доступа пользователю родительского слоя к наборам данных и наборов данных дочернего слоя данных для чтения, без возможности их модификации, посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, с использованием идентификаторов слоев данных для дочерних слоев данных и идентификаторов слоев данных для родительских слоев данных из связывающей таблицы дочерних слоев данных для установления связи между родительским слоем данных и, по крайней мере, одним дочерним слоем данных при осуществлении запроса данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера компьютерной системы.According to one implementation option, a method is proposed for delimiting access to data in a database, in which a directory of data layers stored in at least one table is stored in a database of a database server, wherein the directory of data layers contains at least least the names of all data layers and contains the identifiers of data layers for data sets stored in the metadata objects of the business logic of the application server of the computer system server, and the metadata objects are directories, documents, tabular parts of documents, totals, and linking reference tables stored in the database tables of the database server associated with the computer system server, where the identifier of the data layer determines whether the data set belongs to the corresponding data layer; creating a linking table of users of data layers in the database of the database server, and in the linking table of users of data layers, the relationships between users and data layers are stored in the form of stored associated user identifiers and corresponding data layer identifiers from available data layer identifiers of the data layer directory, relations between users and data layers determine the availability of data sets for reading and modification to users associated with it data layers; creating a linking table of the child data layers in the database database server, and the hierarchy between the data layers is stored in the linking table of the child data layers in the form of stored linked identifiers for the child data layers and identifiers for the parent data layers, and the relationship between the parent layers and child layers determines the availability of data sets of child data layers for reading by users of the parent data layers; the security policy is created at the row level (RLS policies) for each of the database server database tables, which store directories, documents, tabular parts of documents, totals and linking reference tables, and RLS policies are saved in the database of the database server data, moreover, the RLS policy contains at least one expression that returns a logical result that determines the availability of data sets from the database tables of the database server to the user, depending on the identifiers Loew data for these data sets; the application server when adding a data set to the directory sets the identifier of the data layer for the added data set and saves the added data set to the database of the database server with saving the set layer identifier for such a data set; the application server when adding a data set to the linking table sets the identifier of the data layer for the data set to be added and saves the added data set to the database of the database server with saving the set layer identifier for such a data set; when adding a document, the application server establishes the identifier of the data layer for at least one added data set contained in the added document and saves the added document and at least one document data set in the database of the database server with saving for a stored document dataset of the set layer identifier; when adding a data set to the tabular part of the document, the application server sets the data layer identifier for the data set to be added and saves the data set to be added to the database server database, preserving the set layer identifier for such a data set; the computer system server by applying the RLS policy executed by the database server to requests made to data sets from the database of the database server, the user is granted access to the data sets and data sets for reading and modification, the identifiers of the data layers of which are associated with the identifier the user in the user data linking table of data layers when querying data from the database server database by the user using the client application I installed on a user's computing device associated with the application server, the server computer system; the computer system server provides access to the user of the parent layer to the data sets and data sets of the child data layer for reading, without the possibility of their modification, by applying the RLS policy executed by the database server to requests made to data sets from the database of the database server using data layer identifiers for child data layers and data layer identifiers for parent data layers from a linking table of child data layers for setting detecting communication data between the parent layer and at least one layer of subsidiary data by sending the request data from the user database server data using the client application installed on a computing device user associated with the application server the server computer system.
В одном из частных вариантов реализации создается справочник исключений справочников, содержащий справочники, наборы данных которых не содержат идентификаторы слоев данных, и при добавлении, по крайней мере, одного набора данных, по крайней мере, одну развязочную таблицу справочника и/или, по крайней мере, в один другой справочник, отличный от справочника исключений справочников, осуществляется: проверка наличия справочника, в который осуществляется добавление набора данных, в справочнике исключений справочников; проверка наличия в добавляемом наборе данных идентификатора слоя данных для добавляемого набора данных при установлении отсутствия справочника в справочнике исключений справочников; получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора слоя данных в добавляемый набор данных в справочнике при установлении отсутствия в добавляемом наборе данных идентификатора слоя данных для добавляемых данных; проверка добавления набора данных в базу данных пользователем или задачей, исполняемой программным кодом; присваивание идентификатора слоя данных, полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных, при добавлении набора данных пользователем; присваивание идентификатора слоя данных, полученного из добавляемого набора данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных, при добавлении набора данных задачей, исполняемой программным кодом.In one particular embodiment, a directory of directory exclusions is created containing directories whose data sets do not contain identifiers of data layers, and when at least one data set is added, at least one decoupling table of the directory and / or at least , in one other directory, different from the directory of directory exclusions, the following is carried out: checking the availability of the directory to which the data set is added in the directory of directory exclusions; checking the presence of a data layer identifier in the data set to be added for the data set to be added when the absence of the directory is found in the directory of directory exceptions; obtaining a data layer identifier from the linking table of data layer users and adding the obtained data layer identifier to the data set to be added in the directory when it is found that the data layer identifier is not in the data set to be added for the data being added; checking whether a data set is added to the database by a user or a task executed by program code; assignment of the identifier of the data layer obtained from the data linking user table to the unsaved data sets of the linking tables associated with the data set to be added when the user data set is added; assignment of the identifier of the data layer obtained from the added data set to the unsaved data sets of the linking tables associated with the added data set when adding the data set to a task executed by program code.
В другом частном варианте реализации создается справочник исключений типов документов, содержащий документы, наборы данных которых не содержат идентификаторы слоев данных, и при добавлении документа в базу данных сервера базы данных осуществляется: проверка наличия типа добавляемого документа в справочнике исключений типов документов; проверка наличия в добавляемом документе идентификатора слоя данных для данных добавляемого документа при установлении отсутствия типа добавляемого документа в справочнике исключений типов документов; получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора в добавляемый документ при установлении отсутствия в добавляемом документе идентификатора слоя данных; проверка осуществления добавления документа в базу данных пользователем или задачей, исполняемой программным кодом; присваивание идентификатора слоя данных, полученного из добавляемого документа, несохраненным наборам данных табличных частей, связанных с добавляемым документом, при добавлении документа в базу данных пользователем; присваивание идентификатора слоя данных, добавленного в документ из полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных табличных частей, связанных с добавляемым документом, при добавлении документа в базу данных задачей, исполняемой программным кодом.In another particular embodiment, a document type exception directory is created containing documents whose data sets do not contain data layer identifiers, and when a document is added to the database server database, the following is performed: checking whether the type of the added document is added to the document type exception directory; checking the presence in the added document of a data layer identifier for the data of the added document when establishing the absence of the type of the added document in the directory of exceptions of document types; obtaining a data layer identifier from a linking table of data layer users and adding the obtained identifier to the added document when it is determined that the data layer has no identifier in the added document; checking the implementation of adding a document to the database by a user or a task executed by program code; assignment of the identifier of the data layer obtained from the added document to unsaved datasets of the table parts associated with the added document when the user adds the document to the database; assignment of the identifier of the data layer added to the document from the data layers obtained from the user linking table to the unsaved data sets of the table parts associated with the added document when the document is added to the database by a task executed by program code.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
Дополнительные цели, признаки и преимущества настоящего изобретения будут понятны из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:Additional objectives, features and advantages of the present invention will be apparent from reading the following description of an embodiment of the invention with reference to the accompanying drawings, in which:
ФИГ. 1 иллюстрирует примерный вариант системы, реализующей способ, описываемый в рамках настоящего изобретения;FIG. 1 illustrates an exemplary embodiment of a system that implements the method described in the framework of the present invention;
ФИГ. 2 иллюстрирует примерный вариант составных частей сервера приложений, составных частей клиентского приложения, а также взаимодействие между ними и базой данных;FIG. 2 illustrates an exemplary embodiment of the components of an application server, the components of a client application, as well as the interaction between them and the database;
ФИГ. 3 иллюстрирует примерный вариант ограничения доступа пользователей (и групп пользователей) к данным с использованием RLS-политики.FIG. Figure 3 illustrates an example embodiment of restricting user (and user group) access to data using the RLS policy.
ФИГ. 4 иллюстрирует блок-схему примерного варианта процесса создания новой записи в справочнике и/или развязочной таблице справочника;FIG. 4 illustrates a flowchart of an exemplary embodiment of a process for creating a new entry in a directory and / or directory decoupling table;
ФИГ. 5 иллюстрирует блок-схему примерного варианта процесса сохранения нового документа;FIG. 5 illustrates a flowchart of an example embodiment of a process for saving a new document;
ФИГ. 6 иллюстрирует примерный вариант формирования виртуальных баз данных, согласно настоящему изобретению;FIG. 6 illustrates an exemplary embodiment of virtual database generation according to the present invention;
ФИГ. 7 иллюстрирует примерный вариант иерархии виртуальных баз данных, согласно настоящему изобретению;FIG. 7 illustrates an exemplary embodiment of a virtual database hierarchy according to the present invention;
ФИГ. 8 иллюстрирует способ осуществления настоящего изобретения;FIG. 8 illustrates a method of implementing the present invention;
ФИГ. 9 иллюстрирует пример компьютерной системы общего назначения.FIG. 9 illustrates an example of a general purpose computer system.
ПОДРОБНОЕ ОПИСАНИЕDETAILED DESCRIPTION
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.The objects and features of the present invention, methods for achieving these objects and features will become apparent by reference to exemplary embodiments. However, the present invention is not limited to the exemplary embodiments disclosed below, it can be embodied in various forms. The essence described in the description is nothing more than the specific details provided to assist the specialist in the field of technology in a comprehensive understanding of the invention, and the present invention is defined only in the scope of the attached claims.
Используемые в настоящем описании изобретении термины «компонент», «элемент», «система», «модуль», «часть», «блок», в частности, «составная часть», и подобные, используются для обозначения компьютерных сущностей (например, объектов, связанных с компьютером, вычислительных сущностей), которые могут являться аппаратным обеспечением, в частности, оборудованием (например, устройством, инструментом, аппаратом, аппаратурой, составной частью устройства, в частности, процессором, микропроцессором, печатной платой и т.д.), программным обеспечением (например, исполняемым программным кодом, скомпилированным приложением, программным модулем, частью программного обеспечения и/или кода и т.д.) или микропрограммой (прошивкой/firmware). Так, например, компонент может быть процессом, выполняющемся (исполняющимся) на процессоре, процессором, объектом, исполняемым файлом, программой, функцией, методом, библиотекой, подпрограммой и/или вычислительным устройством (например, микрокомпьютером или компьютером) или комбинацией программного или аппаратного обеспечения.Used in the present description of the invention, the terms “component”, “element”, “system”, “module”, “part”, “block”, in particular, “component”, and the like, are used to refer to computer entities (for example, objects related to a computer, computing entities), which may be hardware, in particular equipment (for example, a device, tool, apparatus, equipment, part of a device, in particular a processor, microprocessor, printed circuit board, etc.), software m (for example, executable program code, a compiled application, software module, part of the software and / or code, etc.) or firmware (firmware / firmware). So, for example, a component can be a process running (running) on a processor, processor, object, executable file, program, function, method, library, subprogram and / or computing device (for example, microcomputer or computer) or a combination of software or hardware .
В частном случае, настоящее изобретение позволяет осуществлять ведение и формирование (управленческой) отчетности предприятия (в частном случае, состоящим (включающем), по крайней мере, из одной компании, являющейся юридическим лицом, например, фирмой, индивидуальным предпринимателем и т.д.), в частности пользователями предприятий (клиентов), использующих систему, описанную в рамках настоящего изобретения. Стоит отметить, что осуществление формирования отчетности может осуществляться в режиме реального времени (онлайн, от англ. online, on-line) или по запросу (по требованию, от англ. on-demand) с гарантированной достоверностью, в частности, достоверностью цифр, которые видят руководители и собственники компаний, например, цифры в отчетах по балансу, отчете о прибылях и убытках (ОПУ), отчете о движении денежных средств (ДДС) и т.д. В общем случае отчетность может содержать недостоверные данные (может быть недостоверной), когда пользователями осуществляется ввод данных не полной информации (данных), в частности, о совершенных операциях, или введенная или вводимая пользователями информация (данные) содержит ошибки. Стоит отметить, что в настоящем изобретении при формировании проводок гарантированно соблюдается правило двойной записи (в частности, отражение хозяйственной операции в дебете одного счета и в кредите другого в одной и той же сумме), т.е. в частном случае никакие данные не появляются из ниоткуда и не исчезают в никуда. В частном случае, ведение учета предприятия осуществляется в единой физической базе данных (в частности, в базе данных (ФИГ. 1, 145)). В частном случае, пользователи используют стандартный набор операций, которые отражаются в отчетности заданным способом, который пользователи не могут изменить. Управленческая отчетность в частном случае является системой показателей, характеризующих деятельность предприятия (являющейся субъектом бюджетного учета, в частности, бюджетного учета), отличную от бюджетной отчетности, составляемой на основе данных управленческого учета для целей предприятия (и/или в частном случае, по крайней мере, одной компании такого предприятия).In the particular case, the present invention allows the maintenance and formation of (management) statements of the enterprise (in the particular case, consisting of (including) at least one company, which is a legal entity, for example, a company, individual entrepreneur, etc.) , in particular, users of enterprises (customers) using the system described in the framework of the present invention. It is worth noting that the implementation of reporting can be carried out in real time (online, from English online, on-line) or upon request (on demand, from English on-demand) with guaranteed reliability, in particular, the reliability of the figures that managers and owners of companies see, for example, figures in the balance sheet, income statement (profit and loss statement), cash flow statement (DDS), etc. In the general case, the reporting may contain false data (it may be false) when users enter data from incomplete information (data), in particular, about completed transactions, or the information (data) entered or entered by users contains errors. It is worth noting that in the present invention, when creating postings, the double entry rule is guaranteed to be observed (in particular, the reflection of a business transaction in the debit of one account and in the credit of another in the same amount), i.e. in a particular case, no data appears from nowhere and does not disappear to nowhere. In the particular case, enterprise accounting is carried out in a single physical database (in particular, in the database (FIG. 1, 145)). In the particular case, users use a standard set of operations that are reported in a specified way that users cannot change. Management reporting in a particular case is a system of indicators characterizing the activities of the enterprise (which is the subject of budget accounting, in particular budget accounting), different from budget reporting compiled on the basis of management accounting for the enterprise (and / or in the particular case, at least , one company of such an enterprise).
В настоящее время многие предприятия используют несколько систем для ведения управленческого учета, например, частично в электронных таблицах и системах (в частности программном обеспечении) для создания и редактирования электронных таблиц, табличных процессоров, (например, Microsoft Excel/Microsoft Office Excel, OpenOffice Calc/Apache OpenOffice.org Calc, WPS spreadsheets и т.д.) и частично в учетных системах. В этом случае для получения управленческой отчетности, например, баланса, пользователям необходимо вручную «сводить» (объединять, консолидировать) данные из различных источников (в частности, из электронных таблиц и учетных систем), что у пользователей занимает значительное время и зачастую приводит к ошибкам в полученных сводных данных. Причем такой подход не позволяет осуществлять управленческий учет в режиме реального времени.Currently, many enterprises use several systems for management accounting, for example, partially in spreadsheets and systems (in particular software) for creating and editing spreadsheets, spreadsheets (for example, Microsoft Excel / Microsoft Office Excel, OpenOffice Calc / Apache OpenOffice.org Calc, WPS spreadsheets, etc.) and partially in accounting systems. In this case, to obtain management reporting, for example, balance sheet, users must manually “consolidate” (combine, consolidate) data from various sources (in particular, from spreadsheets and accounting systems), which takes considerable time for users and often leads to errors in the resulting summary data. Moreover, this approach does not allow for management accounting in real time.
Описываемое изобретение позволяет реализовать применение изменений, осуществляемых, по крайней мере, одним пользователем, по крайней мере, одного предприятия в учетную политику (в частности, пользователем осуществляется выполнение операции, которая вносит изменение только в виртуальную базу данных, к которой имеет доступ такой пользователь, как более подробно описано далее) и принципы формирования управленческой отчетности, для всех (или только определенных) предприятий. Упомянутые изменения (в частности, являющиеся результатом выполнения пользователем, по крайней мере, одной операции) могут включать любые формы управленческой отчетности, причем в частном случае пользователи не могут по своему усмотрению вносить в них изменения. Стоит отметить, что изменения, осуществляемые пользователем, например, изменения (редактирования) в документах, добавление новых документов и удаление существующих документов и т.д., определяются согласно задаваемым правилам, причем такие правила определяют, как именно операции пользователей попадают в отчетность и в частном случае едины для всех пользователей. Так, например, если управленческий отчет «Баланс» содержит раздел «Дебиторская задолженность покупателей», то на сервере приложений (описанном далее) может быть создано (например, администратором описываемой в настоящем изобретении системы или, по крайней мере, ее части, например, администратором сервера приложений) правило разделение упомянутой дебиторской задолженности покупателей на нормальную дебиторскую задолженность и просроченную дебиторскую задолженность, то такое правило будет выполнено у всех пользователей, т.е., по крайней мере, одной частью (в частности, модулем) описываемой системы будет осуществлено разделение упомянутой дебиторской задолженности покупателей на нормальную дебиторскую задолженность и просроченную дебиторскую задолженность у всех пользователей (описываемой системы). Касательно упомянутых принципов формирования управленческой отчетности стоит отметить, что ежедневная работа компании в частном случае состоит из набора (элементарных) операций, выполняемых пользователями. Каждая операция может приводить к изменению состояния активов и пассивов компании. Учетная политика определяет то, каким образом та или иная операция изменяет пассив или актив, и каким образом это изменение попадает в отчетность типа баланса, ОПУ, ДДС и т.д. Так, например, если компания осуществляет продажу товара покупателю с доставкой, то прибыль от этой операции фиксируется не в момент отгрузки товара со склада, а в момент, когда водитель транспортного средства, осуществлявшего доставку, документально подтверждает факт передачи товара покупателю.The described invention allows to implement the application of changes made by at least one user of at least one enterprise to the accounting policy (in particular, the user performs an operation that only changes the virtual database that such user has access to, as described in more detail below) and the principles of the formation of management reporting for all (or only certain) enterprises. The mentioned changes (in particular, resulting from the user performing at least one operation) can include any form of management reporting, and in the particular case, users cannot make changes to them at their discretion. It is worth noting that changes made by the user, for example, changes (editing) in documents, addition of new documents and deletion of existing documents, etc., are determined according to the rules that are set, and such rules determine exactly how user operations get into reporting and special case are the same for all users. So, for example, if the management report “Balance” contains the section “Accounts receivable from customers”, then an application server (described later) can be created (for example, by the administrator of the system described in the present invention or, at least, part of it, for example, by the administrator application server) the rule is the separation of the said receivables of buyers into normal receivables and overdue receivables, then this rule will be fulfilled for all users, i.e., at least at least one part (in particular, a module) of the described system will divide the said receivables of buyers into normal receivables and overdue receivables from all users (of the described system). Regarding the mentioned principles of formation of management reporting, it is worth noting that the daily work of the company in a particular case consists of a set of (elementary) operations performed by users. Each operation can lead to a change in the state of assets and liabilities of the company. An accounting policy determines how a particular transaction changes a liability or an asset, and how this change enters into statements such as balance sheet, income statement, cash flow statement, etc. So, for example, if the company sells the goods to the buyer with delivery, then the profit from this operation is not fixed at the time of shipment of the goods from the warehouse, but at the moment when the driver of the vehicle that delivered the goods confirms the fact of transferring the goods to the buyer.
В частном случае, описываемое изобретение позволяет пользователям осуществлять упомянутые выше операции по единым заданным правилам учета в одной базе данных. Стоит отметить, что для каждой операции осуществляется задание и исполнение, по крайней мере, одного алгоритма, определяющего то, в какой момент такая операция осуществляет проводки по регистрам (например, регистр сведений, регистр накопления, регистр бухгалтерии, регистр расчета и т.д.) описываемой системы. На основании данных регистров осуществляется создание отчетности и из соблюдения упомянутого выше правила двойной записи общая сумма по всем регистрам всегда равна нулю. Стоит также отметить, что основой учета также являются справочники (в частности, каталоги) статей взаиморасчетов с контрагентами, статей ДДС, статей затрат и т.д. Набор таких статей хранится (задан, например, упомянутым администратором) в виртуальной базе данных 0 (ФИГ. 7, 710) в виде, по крайней мере, одной таблицы, и доступен пользователям для использования (в частности, для просмотра, например, осуществления чтения клиентским приложением (ФИГ. 1, 130; ФИГ. 1, 136) и т.д.), но недоступен для изменения, как более подробно описано далее. В качестве примера для описания настоящего изобретения используется ERP-система (ERP, от англ. Enterprise Resource Planning, планирование ресурсов предприятия - организационная стратегия интеграции производства и операций, управления трудовыми ресурсами, финансового менеджмента и управления активами, ориентированная на непрерывную балансировку и оптимизацию ресурсов предприятия посредством программного обеспечения, обеспечивающего общую модель данных и процессов для всех сфер деятельности, в частности ERP-система является (программным) модулем, реализующим стратегию ERP и, в частном случае, является системой планирования ресурсов предприятия), но стоит понимать, что может быть использована любая компьютерная система, например, примерный вариант которой приведен на ФИГ. 9. В частном случае, ERP-система, описываемая в рамках настоящего изобретения, включает такую упомянутую базу данных и заданные (предустановленные) правила учета, взаимодействие с которой осуществляют взаимодействие (с которой работают) пользователи предприятий. Так, например, в такой ERP-системе существует каталог (справочник) товаров, хранящийся (сохраненный) в базе данных (БД) такой ERP-системы, в частности в базе данных (ФИГ. 1, 145) основного сервера базы данных (ФИГ. 1, 110), по крайней мере, в одной таблице (в которой осуществляется хранение данных о товарах из упомянутого справочника (каталога) товаров). Так, например, одно предприятие может осуществлять продажу компьютерной техники, второе предприятие может осуществлять продажу бытовой химии, причем оба предприятия (в частности, пользователи предприятий, например, бухгалтеры, операторы баз данных и т.д.) сохраняют данные о своих товарах в один и тот же каталог (справочник) товаров, в частности, в упомянутую таблицу базы данных. Таким образом, каталог (справочник) товаров будет содержать такие товары от первого предприятия (осуществляющего продажу/реализацию компьютерной техники), как ноутбуки, мониторы и т.д., являющиеся компьютерной техникой, и такие товары второго предприятия (осуществляющего продажу/реализацию бытовой химии), как мыло, стиральные порошки, чистящие средства и т.д., являющиеся бытовой химией. Стоит отметить, что в справочниках (каталогах) первое и второе (третье и т.д.) предприятия могут осуществлять хранение (сохранение) данных о поставщиках, компаниях (компаниях предприятий), расчетных счетах и т.д., т.е. в частном случае такие справочники (каталоги) являются общими для обеих компаний (пользователей (сотрудников) компаний), так что данные одного предприятия могут быть отображены (предъявлены) пользователями другого предприятия и/или изменены пользователями другого предприятия, что в частном случае может внести путанность и ошибки в данных между предприятиями, и могут помешать работе пользователей с такими данными (например, пользователи предприятий могут ошибочно изменить данные других предприятий или использовать данные других предприятий вместо своих и т.д.). Стоит отметить, что, в частном случае, пользователи (одного предприятия) не могут сохранять данные, общие для всех пользователей, например, пользователей первого предприятия и пользователей второго предприятия, например, информация (данные) о банках (например, банковские идентификационные коды (БИК), наименование банка, корреспондентский счет, адрес и т.д.), курсы валют и т.д. Такие общие данные в частном случае должны быть доступны, как для пользователей первого предприятия, так и для пользователей второго предприятия, т.е. могут быть доступны (в частности, могут быть просмотрены) всем пользователям или, по крайней мере, одной части пользователей – группе пользователей. Таким образом, необходимо реализовать доступ (в частности, отображение пользователям и/или сохранение пользователями данных, в частности в справочники (каталоги) и/или таблицы базы данных) определенной группе пользователей (первой группе пользователей) к данным, сохраненным первой группой пользователей (клиентским данным первой группы пользователей), а также к части данных (общих данных для двух групп пользователей), сохраненных другой группой пользователей (второй группой пользователей), а также реализовать доступ второй группе пользователей к данным, сохраненным второй группой пользователей (клиентским данным второй группы пользователей), и к части данных (общих данных для двух групп пользователей), сохраненных первой группой пользователей. Так, например, пользователям первого предприятия (первой группе пользователей) может быть предоставлен доступ к данным, которые были сохранены такими пользователями первого предприятия (первой группой пользователей), а пользователям второго предприятия (второй группе пользователей) может быть предоставлен доступ к данным, которые были сохранены такими пользователями второго предприятия (второй группой пользователей), причем в частном случае вторая группа пользователей имеет доступ к части данных, сохраненных первой группой пользователей, а первая группа пользователей имеет доступ к части данных, сохраненных второй группой пользователей. Стоит отметить, что пользователи каждого из предприятия могут составлять, по крайней мере, одну группу пользователей, например, группу пользователей, являющихся сотрудниками бухгалтерии первого предприятия, группу пользователей, являющихся сотрудниками отдела реализации первого предприятия, группу пользователей, являющихся сотрудниками бухгалтерии второго предприятия, группу пользователей, являющихся сотрудниками отдела реализации второго предприятия и т.д. Выше приведен пример для двух групп пользователей двух предприятий, хотя, стоит отметить, что настоящее изобретение не ограничивается двумя предприятиями и одной или двумя группами пользователей для предприятия, так, например, предприятий может существовать - два, три, четыре, десять, сто, тысяча и т.д., причем в каждом предприятии может существовать одна, две, три, четыре и т.д. групп пользователей. В частном случае, определенным пользователям или группам пользователей может быть предоставлен доступ (может осуществляться отображение, возможность редактирования, в частности, изменения и удаления) ко всем записям других пользователей или групп пользователей, как описано в рамках настоящего изобретения.In the particular case, the described invention allows users to carry out the above operations according to unified preset accounting rules in one database. It is worth noting that for each operation, at least one algorithm is specified and executed that determines at what time such an operation posts to the registers (for example, information register, accumulation register, accounting register, calculation register, etc. ) of the described system. Based on the data from the registers, reporting is carried out and from the observance of the aforementioned double entry rule, the total amount for all registers is always zero. It is also worth noting that the basis of accounting is also the directories (in particular, catalogs) of articles of mutual settlements with counterparties, articles of VAT, cost items, etc. A set of such articles is stored (set, for example, by the mentioned administrator) in virtual database 0 (FIG. 7, 710) in the form of at least one table and is available to users for use (in particular, for viewing, for example, reading client application (FIG. 1, 130; FIG. 1, 136), etc.), but is not available for change, as described in more detail below. As an example, to describe the present invention, an ERP system is used (ERP, from Enterprise Resource Planning, enterprise resource planning - an organizational strategy for integrating production and operations, human resources management, financial management and asset management, focused on continuous balancing and optimization of enterprise resources through software that provides a common data and process model for all areas of activity, in particular the ERP system is a (software) module, real which describes the ERP strategy and, in a particular case, is an enterprise resource planning system), but it is worthwhile to understand that any computer system can be used, for example, an approximate version of which is shown in FIG. 9. In the particular case, the ERP system described in the framework of the present invention includes such a database and predefined (predefined) accounting rules, the interaction with which is carried out by the interaction (with which) users of enterprises. So, for example, in such an ERP system there is a catalog (directory) of goods stored (stored) in the database (DB) of such an ERP system, in particular in the database (FIG. 1, 145) of the main database server (FIG. 1, 110), in at least one table (in which data on goods from the said directory (catalog) of goods is stored). So, for example, one enterprise can sell computer equipment, the second enterprise can sell household chemicals, and both enterprises (in particular, users of enterprises, for example, accountants, database operators, etc.) store data about their goods in one and the same catalog (directory) of goods, in particular, to said database table. Thus, the catalog (directory) of goods will contain such goods from the first enterprise (selling / selling computer equipment) as laptops, monitors, etc., which are computer equipment, and such goods from the second company (selling / selling household chemicals) ), like soap, detergents, cleaning products, etc., which are household chemicals. It is worth noting that in directories (catalogs) the first and second (third, etc.) enterprises can store (save) data on suppliers, companies (company companies), settlement accounts, etc., i.e. in the particular case, such directories (directories) are common for both companies (users (employees) of the companies), so that the data of one enterprise can be displayed (presented) by users of another enterprise and / or modified by users of another enterprise, which in a particular case can be confusing and errors in data between enterprises, and may interfere with the work of users with such data (for example, users of enterprises may erroneously change data from other enterprises or use data from other enterprises yaty instead of their own and so on). It is worth noting that, in a particular case, users (of one enterprise) cannot save data common to all users, for example, users of the first enterprise and users of the second enterprise, for example, information (data) about banks (for example, bank identification codes (BICs) ), bank name, correspondent account, address, etc.), exchange rates, etc. Such general data in a particular case should be available, both for users of the first enterprise, and for users of the second enterprise, i.e. can be accessed (in particular, can be viewed) by all users or at least one part of users - a group of users. Thus, it is necessary to realize access (in particular, displaying to users and / or saving by users of data, in particular, to directories (directories) and / or database tables) to a certain group of users (the first group of users) of data stored by the first group of users (client data of the first user group), as well as to the part of the data (common data for two user groups) stored by another user group (second user group), and also to provide access to the second user group It refers to data stored by the second user group (client data of the second user group) and to a part of the data (common data for two user groups) stored by the first user group. So, for example, users of the first enterprise (the first group of users) can be granted access to data that was saved by such users of the first enterprise (the first group of users), and users of the second enterprise (second group of users) can be granted access to the data that saved by such users of the second enterprise (the second group of users), and in the particular case the second group of users has access to some of the data stored by the first user group lei, and the first group of users has access to the portion of the data stored second group of users. It is worth noting that the users of each enterprise can comprise at least one user group, for example, a group of users who are employees of the accounting department of the first enterprise, a group of users who are employees of the sales department of the first enterprise, a group of users who are employees of the accounting department of the second enterprise, users who are employees of the sales department of the second enterprise, etc. The above is an example for two user groups of two enterprises, although it is worth noting that the present invention is not limited to two enterprises and one or two user groups for an enterprise, for example, enterprises can exist - two, three, four, ten, one hundred, one thousand etc., and each enterprise may have one, two, three, four, etc. user groups. In the particular case, certain users or user groups can be granted access (can be displayed, edited, in particular, modified and deleted) to all records of other users or user groups, as described in the framework of the present invention.
На ФИГ. 1 приведен примерный вариант системы, реализующей способ, описываемый в рамках настоящего изобретения.In FIG. 1 shows an exemplary embodiment of a system that implements the method described in the framework of the present invention.
Система, посредством которой осуществляется реализация способа, описанного в рамках настоящего изобретения, изображенная на ФИГ. 2, содержит сервер (в частности, удаленный сервер (компьютерной системы)), например, сервер ERP-системы 112, который включает, по крайней мере, сервер приложений 120. Также сервер ERP-системы 112 может включать сервер экспорта 125.The system by which the implementation of the method described in the framework of the present invention, shown in FIG. 2, comprises a server (in particular, a remote server (computer system)), for example, an
Также, система, изображенная на ФИГ. 2, содержит сервер приложений 120, основной сервер базы данных 110, резервный сервер базы данных 115, сервер экспорта 125, вычислительные устройства пользователя (132, 134) на предприятии 1, предприятии 2 и т.д. с установленными клиентскими приложениями (130, 136), серверы печати (135) и принтеры (140) на упомянутых предприятиях (предприятии 1, предприятии 2 … предприятии N).Also, the system depicted in FIG. 2, contains an
Стоит отметить, что элементы (в частном случае, составные части примерного варианта системы, реализующей способ, описываемый в рамках настоящего изобретения), например, основной сервер базы данных 110, резервный сервер базы данных 115, сервер приложений 120, сервер экспорта 125, сервер печати 135, вычислительные устройства пользователей (132, 134) и т.д., изображенные на ФИГ. 1, могут быть связаны между собой посредством локальной вычислительной сети (ЛВС), Интернета, мобильной связи и/или посредством любого другого вида (способа) проводной связи (например, посредством USB-интерфейса, интерфейса стандарта RS-232/COM-порта и т.д.) и/или беспроводной связи (например, Bluetooth, Wi-Fi, мобильной сотовой связи (GSM), в частности, в диапазонах 850/900/1800/1900 MГц, спутниковой связи, транкинговой связи и каналов передачи данных со сверхнизким энергопотреблением, формирующие сложные беспроводные сети с ячеистой топологией (ZigBee) и т.д.).It is worth noting that the elements (in a particular case, the components of an exemplary embodiment of a system that implements the method described in the framework of the present invention), for example, a
Стоит отметить, что вычислительными устройствами, в частности, вычислительными устройствами пользователей, могут являться смартфоны, ноутбуки, планшеты, персональные компьютеры, электронные вычислительные машины (ЭВМ), серверы, рабочие станции, моноблоки, компьютерные стенды, настольные компьютеры, испытательные стенды, демонстрационные компьютерные стенды, мобильные (сотовые) устройства, в частности, телефоны, и т.д.It should be noted that computing devices, in particular, computing devices of users, can be smartphones, laptops, tablets, personal computers, electronic computers (computers), servers, workstations, monoblocks, computer stands, desktop computers, test benches, demonstration computers stands, mobile (cellular) devices, in particular telephones, etc.
Основной сервер базы данных 110 осуществляет, по крайней мере, управление данными и содержащий, по крайней мере, бизнес-логику (пространство бизнес-логики, компоненты бизнес-логики, элементы бизнес-логики (составные) части бизнес-логики), описанную ниже. Основной сервер базы данных 110 в частном случае содержит СУБД (систему управления базами данных) и обеспечивает функции СУБД по ведению и обслуживанию базы данных 145. В частном случае, основной сервер базы данных 110 может являться (программным) сервером базы данных, в частности, поддерживающих описываемую RLS-технологию, например, «Oracle 11gR2 Enterprise Edition», «Oracle 12c Enterprise Edition», «PostgreSQL 9.6» и т.д., установленным на устройстве хранения данных, по крайней мере, одного вычислительного устройства, например, являющимся компьютером (или специальным компьютерным оборудованием), выделенным и/или специализированным для выполнения определенных сервисных функций. Стоит отметить, что упомянутое устройство хранения данных (хранилище данных) может являться составной частью, по крайней мере, одного основного сервера базы данных 110 и/или может быть связано с ним (проводными или беспроводными типами связи), и является устройством для хранения информации (данных) и может быть реализовано, по крайней мере, одним накопителем на жестких магнитных дисках (НЖМД/HDD, англ. hard (magnetic) disk drive), твердотельным накопителем (SSD, англ. solid-state drive), гибридным жестким диском (SSHD, англ. solid-state hybrid drive), сетью хранения данных (СХД/SAN, англ. Storage Area Network), сетевой системой хранения данных/сетевым хранилищем (NAS, англ. Network Attached Storage) и/или любым другим устройством, позволяющим осуществлять, по крайней мере, запись на устройство, чтение с устройства и/или хранение данных на устройстве. Данные на устройствах хранения данных (в хранилищах данных) могут храниться в любом известном формате, например, в базе данных (БД) 145, например, в виде, по крайней мере, одной таблицы или набора связанных или не связанных между собой таблиц базы данных. Стоит отметить, что, по крайней мере, одна упомянутая база данных 145 может являться иерархической, объектной, объектно-ориентированной, объектно-реляционной, реляционной, сетевой и/или функциональной базой данных, каждая из которых может быть централизованной, сосредоточенной, распределённой, неоднородной, однородной, фрагментированной/секционированной, тиражированной, пространственной, временной, пространственно-временной, циклической, сверх-большой базой данных и т.д., причем для управления, создания и использования баз данных могут использоваться различные системы управления базами данных (СУБД). Также данные на устройствах хранения данных (в хранилищах данных) могут храниться, по крайней мере, в одном файле, в частном случае, в виде текстового файла, либо данные могут храниться в любом, по крайней мере, одном другом известном в настоящее время формате хранения данных (информации) или в формате данных, изобретенном позднее.The
Сервер экспорта (от англ. Export server) 125 осуществляет преобразование печатных форм в файлы.The export server (from the English. Export server) 125 converts printed forms into files.
Сервер печати 135 получает задания на печать документов, по крайней мере, от одного сервера приложений 120. Как правило, сервер печати 135 располагается в офисе, где используются клиентские приложения (130, 136), что позволяет существенно снизить нагрузку на каналы связи за счет передачи гораздо меньшего объема данных (в частности, между сервером приложений 120, располагающимся в дата-центре ((от англ. data center), или центр (хранения и) обработки данных (ЦОД/ЦХОД)), и офисом предприятия, в котором располагается вычислительное устройство пользователя (132, 134 и т.д.) с установленным на нем клиентским приложением (130, 136)).
Резервный сервер базы данных 115 используется для обеспечения отказоустойчивости основного сервера базы данных 110 и осуществляет хранения резервных копий данных, хранящихся в базе данных 145.The
Стоит отметить, что основной сервер базы данных 110, резервный сервер базы данных 115, сервер приложений 120, сервер экспорта 125 и сервер печати 135 могут быть реализованы, по крайней мере, одним специализированным компьютером и/или специализированным оборудованием (для выполнения на нём сервисного программного обеспечения, в частности, без непосредственного участия человека) и/или, по крайней мере, одним программным компонентом (в частности, приложением) вычислительной системы (в частности, по крайней мере, одного, специализированного компьютера и/или специализированного оборудования), выполняющим сервисные (обслуживающие) функции по запросам, предоставляя доступ к определённым ресурсам или услугам. В частном случае основной сервер базы данных 110 или резервный сервер базы данных 115, или сервер приложений 120, или сервер экспорта 125, или сервер печати 135 может быть реализован программным обеспечением, в частности, программным компонентом (приложением), функционирующим на аппаратном обеспечении, в частности, (универсальном) вычислительном устройстве, например, сервере, компьютере и т.д. В частном случае, основной сервер базы данных 110 или резервный сервер базы данных 115, или сервер приложений 120, или сервер экспорта 125, или сервер печати 135 могут являться удаленными серверами, облачными серверами и т.д.It is worth noting that the
В частном случае, клиентские приложения (130, 136 и т.д.), установленные на вычислительных устройствах пользователей (ВУ), например, на ВУ 1 (132), ВУ 2 (134), ВУ N и т.д., осуществляют, по крайней мере, представление данных (в зависимости от описываемых операций, например, если операцией является операция по закупке товара, то пользователю осуществляется отображение (представление) списка поставщиков, товаров, остатков товаров на складах и т.д., в частности, по крайней мере, в одном справочнике) и функциональную обработку (которая в частном случае включает изменение данных в справочниках, например, количества товара в заказе поставщику и в заказе покупателя, т.е., в частном случае осуществляется получение клиентским приложением 130 данных от сервера приложений (который в свою очередь их запрашивает из основного сервера базы данных 110) 120, редактирование (где это разрешено логикой описываемой системы) или добавление новых данных пользователями).In the particular case, client applications (130, 136, etc.) installed on user computing devices (WU), for example, WU 1 (132), WU 2 (134), WU N, etc., are implemented at least, the presentation of data (depending on the operations described, for example, if the operation is an operation to purchase goods, then the user displays (presents) a list of suppliers, goods, stocks of goods in warehouses, etc., in particular, in at least one directory) and functional processing (which in a particular case includes changing data in directories, for example, the quantity of goods in an order to a supplier and in a customer’s order, i.e., in a particular case, the
Стоит отметить, что, в частном случае, система, реализующая способ, описываемый в настоящем изобретении, может быть реализована программно-аппаратным комплексом трехуровневой архитектуры (схемой трехзвенной архитектуры), в частности, одним уровнем такой схемы является основной сервер базы данных 110 и опционально резервный сервер базы данных 115, другим уровнем является сервер приложений 120 и еще одним уровнем является, по крайней мере, одно клиентское приложение, например, клиентское приложение (клиентский (программный) модуль) 130, клиентское приложение (клиентский (программный) модуль) 136 и остальные клиентские приложения (клиентские (программные) модули). В частном случае, система, реализующая способ, описываемый в настоящем изобретении, и изображенная на ФИГ. 1, в том числе реализованная трехуровневой архитектурой, позволяет осуществлять централизованное ведение бизнес-логик(и) и в случае ее (их) изменений позволяет не осуществлять ее (их) тиражирование в упомянутых клиентских приложениях. Стоит отметить, что в частном случае бизнес-логика является реализацией правил и ограничений автоматизируемых операций и является совокупностью правил, принципов, зависимостей поведения объектов предметной области, поддерживаемых описываемой системой. В частном случае, система, реализующая способ, описываемый в настоящем изобретении, и изображенная на ФИГ. 1, позволяет избежать необходимости устанавливать на вычислительных устройствах пользователей (клиентских компьютерах, компьютерах клиентов, вычислительных устройствах пользователей предприятий, в частности, компаний), например, на вычислительном устройстве (ВУ) пользователя 1 (132), на вычислительном устройстве (ВУ) пользователя 2 (134) и т.д., компоненты (программного) обеспечения управления доступом к данным. Также, в частном случае, система, реализующая способ, описываемый в настоящем изобретении, и изображенная на ФИГ. 1, в том числе реализованная трехуровневой архитектурой, позволяет осуществлять возможность отложенного (во времени) обновления базы данных 145 в случае изменения данных, запрошенных с основного сервера базы данных 110, в автономном режиме. В частном случае, упомянутое обновление данных будет осуществляться в базе данных 145 после следующего соединения клиентского приложения (клиентской программы, клиентского программного обеспечения) 130, клиентского приложения 136 и т.д. с сервером приложений 120.It is worth noting that, in the particular case, the system that implements the method described in the present invention can be implemented by a software and hardware complex of three-level architecture (three-tier architecture scheme), in particular, one level of such a scheme is the
На ФИГ. 2 показан примерный вариант составных частей сервера приложений 120, составных частей клиентского приложения 130, а также вариант взаимодействия между ними и базой данных. Сервер приложений 120 включает ядро 210 и пространство бизнес-логики (бизнес-логику). Пространство бизнес-логики (бизнес-логика) включает типы документов 212, обработчики (в частности, реализованные скриптами) 214, подтипы документов 216, печатные формы 218, итоги 220, отчеты 222, справочники (каталоги) 224, метаданные 226, модули сервера 228, модули клиентских приложений 230, а также может включать сценарии обработки бизнес-правил, бизнес-правила, экранные формы и т.д., причем обработчики 214, описывающие логику взаимодействия бизнес-объектов, являются бизнес-правилами и сценариями обработки.In FIG. 2 shows an exemplary embodiment of the components of the
В частном случае, модули сервера 228 являются программными библиотеками (сборником подпрограмм или объектов, используемых для разработки программного обеспечения), используемыми описываемыми скриптами, в частности, скриптами сервера приложений 120, и, в частном случае, загружаемые при загрузке (в частности, при запуске) сервера приложений 120.In the particular case, the
В частном случае, модули клиентских приложений 230 являются набором программных библиотек, например, для создания и, в частности, функционирования клиентских приложений (например, 130, 136). Так, например, такие модули клиентских приложений 230 могут содержать набор форм для редактирования элементов конфигурации и т.д.In the particular case, the
Клиентское приложение 130 включает ядро 210 (в частном случае, являющееся копией ядра сервера приложений 120), метаданные 226 (в частном случае, являющиеся копией метаданных сервера приложений 120), модули клиентских приложений 230 (в частном случае, являющиеся копией модулей клиентских приложений сервера приложений 120) и т.д.
В частном случае, ядро 210 (сервера приложений 120 или клиентского приложения 130) изменяется гораздо реже, чем составные части (элементы) пространства бизнес-логики. Ядро 210 обеспечивает функционирование составных частей пространства бизнес-логики (например, типов документов 212, обработчиков 214, подтипов документов 216, печатных форм 218, итогов 220, отчетов 222, справочников (каталогов) 224, метаданных 226, модулей сервера 228, модулей клиентских приложений 230), причем такие упомянутые составные части хранятся в таблицах (в виде таблиц) базы данных 145 основного сервера базы данных 110.In the particular case, the core 210 (
Ядро 210, в частном случае, является (программным) модулем, который является инвариантной частью описываемой системы и обеспечивает функционирование второй, изменяемой части - пространства бизнес-логики. Ядро 210 обеспечивает функционирование описываемой системы и предоставляет следующие инструменты и механизмы:The
- хранения пользователей, их авторизации и проверки прав;- storage of users, their authorization and verification of rights;
- коммуникации между приложениями;- communication between applications;
- доступа к СУБД (сохранения объектов системы в базу данных 145);- access to the DBMS (saving system objects to the database 145);
- управления изменениями конфигураций (механизм версионирования);- management of configuration changes (versioning mechanism);
- преобразования "сырых данных" из базы данных 145 в объекты описываемой системы;- conversion of "raw data" from the
- интеграции с другими системами, например, SOAP (от англ. Simple Object Access Protocol - простой протокол доступа к объектам), JSON (от англ. JavaScript Object Notation - текстовый формат обмена данными, основанный на JavaScript), REST (от англ. Representational State Transfer — «передача состояния представления»), XML (от англ. eXtensible Markup Language) - расширяемый язык разметки) и т.д.;- integration with other systems, for example, SOAP (from the English Simple Object Access Protocol - a simple protocol for accessing objects), JSON (from the English JavaScript Object Notation - a text-based data exchange format based on JavaScript), REST (from the English Representational State Transfer - “transfer of view state”), XML (from the English eXtensible Markup Language) - an extensible markup language), etc .;
- среду разработки и изменения конфигурации;- development environment and configuration changes;
- преобразования объектов, их выгрузки и сохранения в базу данных;- transformation of objects, their unloading and saving to the database;
- коммуникации между частями (программными и аппаратными модулями) описываемой системы.- communication between parts (software and hardware modules) of the described system.
Как было сказано выше, в частном случае, пространство бизнес-логики содержит бизнес правила, сценарии обработки бизнес-правил, экранные формы и т.д. Конкретное наполнение пространства бизнес-логики, например, соответствующее конкретному клиенту (в частности, предприятию, например, пользователю предприятия или группе пользователей, по крайней мере, одного предприятия, в частности, пользователю компании предприятия) или конкретному варианту бизнеса (в частности предприятия или компании предприятия) является конфигурацией пространства бизнес-логики (конфигурацией). Конфигурация хранится в базе данных 145.As mentioned above, in the particular case, the business logic space contains business rules, business rule processing scenarios, screen forms, etc. A specific filling of the business logic space, for example, corresponding to a specific client (in particular, an enterprise, for example, a user of an enterprise or a group of users of at least one enterprise, in particular, a user of an enterprise company) or a specific business option (in particular, an enterprise or company enterprises) is the configuration of the business logic space (configuration). The configuration is stored in
В частном случае, ядро 210 предоставляет интерфейс и инструменты для реализации бизнес-логики. В частном случае, бизнес-логика, исполняемая на сервере приложений 120, реализуется классами на одном из известных языков программирования (например, C#), унаследованных от соответствующих классов ядра (скриптов).In a particular case, the 210 kernel provides an interface and tools for implementing business logic. In the particular case, the business logic executed on the
Одним из типов скриптов являются транзакционные скрипты ассоциируются с подтипом документа и выполняются (исполняются) при сохранении документа этого подтипа, причем транзакционные скрипты, формируют движения по итогам (проводки).One of the types of scripts are transactional scripts associated with a document subtype and are executed (executed) when a document of this subtype is saved, and transactional scripts form movements based on the results (postings).
Стоит отметить, что обработчиками 214 могут являться скрипты:It is worth noting that scripts may be handlers 214:
- обработчик событий справочника - является скриптом, автоматически выполняемым в случае ряда событий, происходящих (осуществляемых) с записями справочника, причем для каждого справочника может быть создан свой обработчик событий;- a directory event handler - is a script that is automatically executed in the case of a series of events occurring (carried out) with the directory entries, and for each directory its own event handler can be created;
- обработчик событий документа - является скриптом, автоматически выполняемым в случае ряда событий, происходящих (осуществляемых) с документом, причем для каждого типа документа (документов) может быть создан свой обработчик событий.- a document event handler - is a script that is automatically executed in the case of a series of events occurring (carried out) with a document, and for each type of document (documents) its own event handler can be created.
Стоит также отметить, что экранная логика выполняется на клиентском приложении 130 и реализуется в виде модулей, в частности, модулей клиентских приложений 230, например, на .NET совместимом языке программирования.It is also worth noting that the on-screen logic runs on the
Стоит отметить, что пространство бизнес-логики (бизнес-логика, конфигурация) может содержать такие объекты метаданных (являющиеся сущностями данных, структурами данных), как справочники (каталоги) 224, развязочные таблицы справочника (связывающие таблицы справочника, связующие таблицы справочника, таблицы связей справочника, типы развязочных таблиц), документы, табличные части документов, итоги 220 и т.д. Стоит отметить, что данные объектов метаданных в компьютерных информационных системах могут обрабатываться как сущности данных (сущности), имеющие постоянный или переменный наборы значений (в частности, данные). В настоящее время широко распространено использование в компьютерных информационных системах хранение данных в виде сущностей данных, в частном случае сохраненных в таблицах баз данных, для хранения, передачи, предъявления (отображения) и других целей работы с данными. Пользователь может просматривать, передавать и редактировать сущности данных, в частности, данные, содержащиеся в таких сущностях данных. Стоит отметить, что справочники (каталоги) 224, развязочные таблицы справочника (связывающие таблицы справочника, связующие таблицы справочника, таблицы связей справочника, типы развязочных таблиц), документы, табличные части документов, итоги 220 приведены в настоящем описании в качестве примера, и стоит понимать, что настоящее изобретение не ограничивается такими справочниками 224, развязочными таблицами справочника, документами, табличными частями документов, итогами 220. Справочники (каталоги) 224 содержат информацию об объектах, участвующих в бизнес-процессах компаний (например, поставщиках или покупателях или товарах или складах). В частном случае, справочники (каталоги) 224 используются описываемой системой (примерный вариант, который приведен на ФИГ. 1), например, сервером приложений 120 и/или клиентским приложением 130, в тех случаях, когда необходимо исключить неоднозначный ввод данных (информации) пользователями (предприятий), так, например, для того, чтобы каждый пользователь (например, покупатель, продавец, кладовщик, бухгалтер и т.д.) понимали о каком товаре (данные о котором сохранены в базе данных 145) идет речь, каждый такой пользователь должен называть такой товар одинаково, т.е., в частном случае, в базе данных 145 осуществляется хранение, например, одного названия для каждого товара, одних единиц товара для каждого товара и т.д. Стоит отметить, что справочники могут включать обычные (неядерные) справочники (входящие в пространство бизнес-логики) и справочники, относящиеся к ядру («ядерные» справочники, справочники ядра 210), в частном случае, справочники, являющиеся справочниками ядра 210, в которые, в частном случае, пользователями (в частности, группами пользователей) не могут быть добавлены новые поля и/или в которых не могут быть изменены существующие поля, в частности состав полей (в частном случае, не могут быть добавлены новые поля или изменены или удалены существующие поля). В частном случае, справочниками ядра (ядерными справочниками, системными справочниками) могут являться справочники пользователей, групп пользователей, справочники ролей (в частности, предназначенный для ведения списка ролей в системе складского учета и настройки прав для них), справочники документов и т.д.It is worth noting that the business logic space (business logic, configuration) may contain such metadata objects (being data entities, data structures), such as directories (directories) 224, reference decoupling tables (linking reference tables, linking reference tables, link tables reference book, types of decoupling tables), documents, tabular parts of documents,
Отчеты 222 являются (прикладными) объектами конфигурации (бизнес-логики) и используются для обработки накопленной информации и получения сводных данных в удобном для просмотра и анализа виде. Стоит отметить, что отчеты 222 могут существовать трех видов:
- отчеты по итогам, функционал которых полностью реализуется ядром 210;- reports on the results, the functionality of which is fully implemented by the 210 kernel;
- виртуальные итоги, с помощью которых может быть создан отчет по сводным данным нескольких итогов;- virtual totals, with the help of which a report can be created on the summary data of several totals;
- пользовательские отчеты, реализуемые администратором (программистом, разработчиком).- user reports implemented by the administrator (programmer, developer).
Упомянутые развязочные таблицы справочника (хранящиеся в таблицах базы данных 145 основного сервера базы данных 110) используются (в частности, составными частями системы, примерный вариант которой приведен на ФИГ. 1 и ФИГ. 2, например, сервером приложений 120 и/или клиентским приложением 130, и составными частями сервера приложений 120 и/или клиентского приложения 130) для создания связи (в частности, содержат связи, например, являющимися ссылками) между, по крайней мере, одним элементом, по крайней мере, одного справочника, по крайней мере, с одним элементом, по крайней мере, одного другого справочника. Так, например, одна развязочная таблица (связывающая таблица) может содержать связи между одним элементом одного справочника и несколькими элементами другого справочника. В частном случае, связь между элементом одного справочника и несколькими связями является ссылкой.The referenced reference tables (stored in the database tables 145 of the main database server 110) are used (in particular, by the components of the system, an example of which is shown in FIG. 1 and FIG. 2, for example, the
Упомянутые выше документы (хранящиеся в таблицах базы данных 145 основного сервера базы данных 110, в частности, в виде, по крайней мере, одной записи, по крайней мере, одной таблицы, по крайней мере, одной упомянутой базы данных) содержат информацию о произошедших в компании событиях (например, продажа товара, поступление денежных средств на расчетный счет от покупателя и т.д.). В частном случае, документ состоит из (содержит) заголовков («шапки») документа, набора полей, присущих всем подтипам данного типа документа, в частности, полей, которые могут содержаться в подтипах данного типа документа. Также, документ может включать набор табличных частей, в частном случае являющимся массивом данных, принадлежащих такому документу. Так, например, для Прихода товара заголовками документа могут являться информация о дате прихода товара, кем (каким предприятием, в частности, компании предприятия) была осуществлена поставка товара, на какой склад была осуществлена поставка товара и т.д. Также, стоит отметить, что табличной частью документа, в частном случае, является список заказанных товаров предприятием (частности, компании предприятия), количество заказанных товаров, стоимость заказанных товаров и т.д.The documents mentioned above (stored in the database tables 145 of the
В частном случае, каждый документ состоит из общей «шапки» (набора полей, который существует в любом документе описываемой системы), «шапки» (набора полей, который существует только в данном документе, и набора табличных частей, причем количество табличных частей для одного документа не ограничено, что сильно упрощает формулирование сложной бизнес-логики). Табличная часть позволяет сохранить список записей внутри одного документа (например, товарные строки).In the particular case, each document consists of a common “header” (a set of fields that exists in any document of the described system), a “header” (a set of fields that exists only in this document, and a set of tabular parts, and the number of tabular parts for one the document is not limited, which greatly simplifies the formulation of complex business logic). The tabular section allows you to save the list of records within one document (for example, product lines).
В частном случае, документ содержит информацию (данные) об одном событии.In the particular case, the document contains information (data) about one event.
Стоит отметить, что записью (записью справочника) является конкретная строка (или конкретный объект системы, в частности, бизнес-логики) справочника.It should be noted that a record (a record of a directory) is a specific line (or a specific object of the system, in particular, business logic) of a directory.
Стоит также отметить, что, в частном случае, в справочниках и развязочных таблицах (справочников) осуществляется хранение статических редко изменяющихся данных. Так, например, список товаров продаваемых или производимых компанией может быть реализован справочником.It is also worth noting that, in the particular case, directories and decoupling tables (directories) are used to store static, rarely changing data. So, for example, a list of goods sold or manufactured by a company can be implemented by a directory.
Упомянутые выше итоги 220 (хранящиеся в таблицах базы данных 145 основного сервера базы данных 110) содержат информацию (данные) о текущем состоянии измеряемых показателей компании и историю их изменений. Так, например, Итоги 220 могут содержать информацию об остатках товаров (на предприятии, в частности, в компании предприятия, например, на складе). Каждое изменение данных в Итогах 220 называется движением. Так, например, каждый приход или расход товара (на примере остатков товара) являются движениями. Итоги 220 состоят из измерений и переменных. Каждое измерение данных в Итогах 220, например, конкретного итога (прихода или расхода товара), являющегося измеряемым показателем компании, является ссылкой, по крайней мере, на один справочник из Справочников 224, а история их изменений хранится в переменных. Итоги 220 могут иметь несколько измерений, например, два и более. Для итога остатки товара на складе измерениями являются сами товары и склады, а переменными являются количество и стоимость этих товаров. Движения формируются на основании документов (при их сохранении) и, будучи записанными в итоги 220, изменяют значения их переменных для определенных наборов измерений. Приход товара увеличивает остатки оприходованных товаров на указанном в документе прихода складе. Документ расхода наоборот их уменьшает.The results of 220 mentioned above (stored in the database tables 145 of the main database server 110) contain information (data) about the current state of the measured indicators of the company and the history of their changes. So, for example,
Итоги (итог) 220 является объектом описываемой системы (в частности, бизнес-логики), который позволяет описать измеряемый показатель предметной области и хранить историю его изменения. Итоги 220 можно также представлять в виде многомерного куба. Таким образом, документ сохраняет информацию о событии и преобразует свои данные в набор изменений итогов. Так, например, примером итогов 220 являются остатки товаров на складах, причем в итогах 220 осуществляется хранение информации о том, какое количество товара осталось на каждом из складов. Соответственно, документ продажи уменьшает значение итога остатки товаров на складах (для товаров из документа).Results (total) 220 is the object of the described system (in particular, business logic), which allows you to describe the measured indicator of the subject area and store the history of its change.
Печатные формы 218 используются для вывода объектов системы на печать (на принтер или для экспорта в файл). Печатная форма представляет собой шаблон и скрипт, предоставляющий данные для заполнения шаблона.Printed
Стоит отметить, что атрибутами документов, в частном случае, являются типы документов 212, которые (типы документов) определяются бизнес-логикой. Тип документа является описанием набора полей шапки документа и прочих (его) свойств. Так, типом документов (212) может являться Продажа (товара), Приход (товара) и т.д. Событие, информация о котором содержится (хранится), по крайней мере, в одном документе, может быть «растянуто» во времени, так, например, Продажа содержит этапы Заказа, Набора (в частности, комплектации) на складе, Оплаты, Выдачи и т.д., в связи с чем, типы документов (212) имеют соответствующие (под-событиям) подтипы документов 216, описывающие состояние документов в определенный (в том числе прошедший, настоящий и т.д.) момент (или период) времени и связанные с ним.It is worth noting that the attributes of documents, in the particular case, are
Стоит отметить, что справочники содержат справочник исключений справочников, содержащий справочники, наборы данных которых не содержат идентификаторы слоев данных.It is worth noting that directories contain a directory of exceptions to directories containing directories whose datasets do not contain identifiers of data layers.
Стоит отметить, что справочники содержат справочник исключений типов документов, содержащий типы документов, наборы данных которых не содержат идентификаторы слоев данных.It is worth noting that the directories contain a document type exception directory containing document types whose data sets do not contain data layer identifiers.
Стоит отметить, что в рамках настоящего изобретения справочники содержат дополнительный справочник слоев данных («Слои Данных», DataLayer). В частном случае, осуществляется создание (например, администратором описываемой системы) справочника «Слои данных», примерный вариант которого показан в Таблице 1.It is worth noting that, within the framework of the present invention, directories contain an additional directory of data layers (“Data Layers”, DataLayer). In the particular case, the creation (for example, by the administrator of the described system) of the directory “Data Layers” is carried out, an exemplary version of which is shown in Table 1.
Таблица 1.Table 1.
ное имя (название) System-
first name
(Caption)Title
(Caption)
тельно к запол-нениюObligation
regarding filling
ный код (идентифи-
катор, ID)
слоя данныхUnique
code (identical
Kator, ID)
data layer
фикатор слоя данных (уникаль-
ный код, значение) слоя данныхIdentity
data layer fixer (unique
code, value) of the data layer
НАISTI-
ON
НАISTI-
ON
сяПапкойIs-
x folder
НАISTI-
ON
Стоит отметить, что развязочные (связывающие) таблицы (пространства) бизнес-логики содержат развязочные таблицы дочерних слоев данных («Дочерние слои данных») и пользователей слоев данных («Пользователи слоя данных»), в частности, осуществляется создание развязочных таблиц «Дочерние слои данных» (примерный вариант которой приведен в Таблице 2) и «Пользователи слоя данных» (примерный вариант которой приведен в Таблице 3). В частном случае, все данные, которые хранятся в (неядерных) справочниках, развязочных таблицах справочников, документах, табличных частях и итогах 220 содержат (обладают) признак отношения (принадлежности) к определенному слою данных (в частности, обладают признаком (в частности, имеют ссылку на конкретный слой данных из упомянутого справочника слоев данных), к какому слою данных они (данные) относятся), для чего во все упомянутые объекты ((неядерные) справочники, развязочные таблицы справочников, документы, табличные части и итоги 220) осуществляется добавление ссылки на слой данных.It is worth noting that decoupling (linking) tables (spaces) of business logic contain decoupling tables of child data layers (“Child data layers”) and users of data layers (“Data layer users”), in particular, creation of decoupling tables “Child layers” data ”(an example of which is shown in Table 2) and“ Users of the data layer ”(an example of which is shown in Table 3). In the particular case, all data that is stored in (non-nuclear) directories, decoupling tables of directories, documents, tabular parts and totals 220 contain (have) a sign of relationship (belonging) to a particular data layer (in particular, have a sign (in particular, have a link to a specific data layer from the aforementioned directory of data layers), to which data layer they (data) belong), for which all of the mentioned objects ((non-nuclear) directories, decoupling tables of documents, documents, tabular parts and totals 220) will adding a wish to set up links to the data layer.
В Таблице 2 приведен примерный вариант развязочной таблицы (в которой определяется, в частности, задается связь между слоями данных, в частном случае, между родительским слоем данных и дочерним слоем данных), в частности, развязочной таблицы Дочерних слоев данных (ChildrenLayers, «Дочерние слои данных») типа Дочерних слоев данных (DataLayerTreeNode) со связью по идентификатору родительского слоя данных (ParentID), в которой идентификатор родительского слоя данных (ParentID) и идентификатор дочернего слоя данных (ChildID), в частном случае, являются ссылками на справочник слоев данных («Слои Данных» (DataLayer)).Table 2 shows an example variant of the decoupling table (which defines, in particular, the relationship between the data layers, in particular, between the parent data layer and the child data layer), in particular, the decoupling table of the Child data layers (ChildrenLayers, “Child layers ") of the type of Child Data Layers (DataLayerTreeNode) with a link by the identifier of the parent data layer (ParentID), in which the identifier of the parent data layer (ParentID) and the identifier of the child data layer (ChildID), in a particular case, are links to help IR data layers ( "Data Layers» (DataLayer)).
Таблица 2.Table 2.
(Property type..NET Type)Type of field in terms of database
(Property type..NET Type)
(Property type.Database type)Type of field in terms of the system
(Property type.Database type)
тельно к
запол-
нениюObligation
specifically to
fill in
opinion
ского
слоя данных (ParentID)Parent Identifier
sky
data layer (ParentID)
(иденти-
фикатор (роди-тельского) слоя данных)Parent data layer, code
(ident
fixture of the (parent) data layer)
(NUMBER (18))NUMBER
(NUMBER (18))
фикатор (дочернего) слоя
данных)Child data layer, code (identical
fixture (child) layer
data)
(NUMBER (18))NUMBER
(NUMBER (18))
Стоит отметить, что, например, для двух предприятий может быть создан (в частности, администратором описываемой системы) Базовый Слой Данных и для каждого из двух предприятий может быть создан отдельный Слой Данных, например, Слой Данных 1 для Предприятия 1 и Слой Данных 2 для Предприятия 2. Базовый слой данных является зависимым (Слой Данных 1 и Слой Данных 2 наследуют, в частности, содержат, все данные из базового слоя), в частности, дочерним, к Слою Данных 1 и дочерним к Слою Данных 2, причем данная зависимость (связь) осуществляется посредством развязочной таблицы дочерних слоев данных («Дочерние слои данных»), приведенной выше, так что пользователи, у которых есть доступ к Слою данных 1 (данным Слоя данных 1), по крайней мере, видит все данные Слоя данных 1 и Базового слоя данных и, в частном случае, может их редактировать. Пользователи Предприятия 1 и пользователи Предприятия 2 добавляются (заводятся), в частности, администратором описываемой системы, в справочник пользователей (в частности, являющийся ядерным справочником, в котором перечислены (все) пользователи описываемой системы), в частности, администратором описываемой в настоящем изобретении системы или, по крайней мере, ее части, например, администратором сервера приложений. В развязочную таблицу пользователей слоев данных («Пользователи слоя данных»), примерный вариант который приведен ниже, для Слоя Данных 1 добавляются пользователи (в частности, идентификаторы пользователей) Предприятия 1. В развязочную таблицу пользователей слоев данных («Пользователи слоя данных») для Слоя Данных 2 добавляются пользователи Предприятия 1. Для всех данных (наборов данных), в частности, таблиц базы данных основного сервера базы данных 110, которые должны быть общими для Предприятия 1 и Предприятия 2 в упомянутой развязочной таблице проставляется (задается, устанавливается) другой слой данных, например, базовый слой данных («Базовый слой данных»), в частности, проставляется упомянутый выше признак, в частном случае, идентификатор, отношения (принадлежности) к слою данных, например, администратором описываемой системы, или средствами описываемой системы, например, по крайней мере, одним модулем (составным элементом) описываемой системы. Так, например, если под одной из ролей (с одной из ролей), описываемых в рамках настоящего изобретения, пользователь открывает один из справочников, например, справочник валют, то для записи в этом справочнике администратор описываемой системы (например, программист, разработчик, администратор клиентского приложения, администратор сервера приложений и т.д.) может явно указать, к какому слою данных эта запись (данные, набор данных, например, данные, сохраненные, по крайней мере, в одной ячейке таблицы базы данных) принадлежит. В частном случае, для такой упомянутой роли может не применяться (может не действовать) механизм RLS (не применяться RLS-политика), так что с использованием такой роли может быть изменен слой данных для любой записи в любом справочнике. Стоит отметить, что значения в справочники могут быть добавлены автоматически, причем добавлены в соответствующий слой данных. Так, например, значения курсов валют могут быть загружены автоматически программными модулями, например, скриптами, программными "роботами" с одного из сайтов, например, с сайта Центрального Банка Российской Федерации. Такой программный модуль определяет, в каком слое данных находится (хранится) валюта и добавляет значения для такой валюты в соответствующий (в частном случае, в тот же) слой данных. Стоит отметить, что к таким данным могут относиться, например, данные из справочника валют и курсов валют, и сам справочник валют и курсов валют. Стоит также отметить, что для предприятий может быть проставлено несколько базовых слоев данных.It is worth noting that, for example, for two enterprises, a Basic Data Layer can be created (in particular, by the administrator of the described system) and a separate Data Layer can be created for each of the two enterprises, for example,
В Таблице 3 показан примерный вариант развязочной таблицы пользователей слоев данных («Пользователи слоя данных») с типом «Пользователи» предприятия (клиента) со связью по идентификатору слоя данных (DataLayerID), причем идентификатор слоя данных (DataLayerID), в частном случае, является ссылкой на справочник слоев данных (DataLayer), приведенный в таблице выше, а идентификатор пользователя (UserID) идентифицирует пользователя и, в частном случае, является ссылкой на системный справочник пользователей, содержащий пароль пользователя, в котором, в частном случае, содержится логин (от англ. login - имя (идентификатор) учётной записи пользователя), хэш (хеш-сумма) пароля пользователя (результат применения хэш-функции к паролю пользователя), роль пользователя. Стоит отметить, что развязочная (связывающая) таблица пользователей (пользователей слоев данных) содержит связь между пользователями и слоями данных, в частности, в виде сохраненных связанных идентификаторов пользователей и идентификаторов слоев данных. Стоит отметить, что, в частном случае, идентификатор слоя данных является идентификатором предприятия, т.е., в частном случае, определяет принадлежность данных (наборов данных) тому или иному предприятию.Table 3 shows an example variant of the decoupling table of data layer users (“Data layer users”) with the “Users” type of the enterprise (client) with a link by the data layer identifier (DataLayerID), and the data layer identifier (DataLayerID), in a particular case, is a link to the data layer directory (DataLayer) shown in the table above, and the user identifier (UserID) identifies the user and, in a particular case, is a link to the system directory of users containing a user password, in which, in a private case tea, contains the login (from the English login - the name (identifier) of the user account), the hash (hash sum) of the user's password (the result of applying the hash function to the user's password), the user's role. It should be noted that the decoupling (linking) table of users (users of data layers) contains a link between users and data layers, in particular, in the form of stored associated user identifiers and data layer identifiers. It is worth noting that, in the particular case, the identifier of the data layer is the identifier of the enterprise, i.e., in the particular case, it determines whether the data (data sets) belongs to one or another enterprise.
Таблица 3.Table 3.
ное имя
(название)System-
first name
(title)
(Caption)Title
(Caption)
(Property type..NET Type)Type of field in terms of the system
(Property type..NET Type)
(Property type.Database type)Type of field in terms of database
(Property type.Database type)
нениюObligatory to
opinion
катор слоя данных (DataLayerID)Identity-
data layer cator (DataLayerID)
фикатор слоя данных)Data layer, code (identical
data layer fixture)
катор пользова-
теля (UserID)Identity-
the user
body (UserID)
фикатор пользователя)User code (identifier
user lock)
В частном случае, во все несистемные (неядерные) справочники, документы, связующие таблицы, табличные части и итоги осуществляется добавление ссылки (Идентификатор слоя данных (DataLayerID)) на справочник слоев данных (DataLayer). Так же, в частном случае, во все транзакционных скриптов (TransactionScripts) в транзакциях осуществляется добавления заполнения Идентификатор слоя данных (DataLayerID). Стоит отметить, что документы с помощью transactionScripts осуществляют (делают) проводки по Итогам, поскольку документ принадлежит (или содержится) какому-то определенному, по крайней мере, одному слою данных, то проводка должна принадлежать в том же слое данных, таким образом, в скрипте прописывается для проводки такой слой данных из упомянутого документа.In the particular case, in all non-systemic (non-nuclear) directories, documents, connecting tables, tabular parts and totals, a link (Data LayerID) is added to the data layer directory (DataLayer). Also, in the particular case, in all transactional scripts (TransactionScripts) in transactions, filling in the data layer identifier (DataLayerID) is performed. It is worth noting that documents using transactionScripts post (make) postings to the Results, since the document belongs to (or contains) some specific, at least one data layer, then the posting must belong to the same data layer, thus, in the script registers for posting such a data layer from the mentioned document.
Стоит отметить, что для ограничения доступа пользователей (и групп пользователей) к данным, в настоящем изобретении используется RLS-политика (от англ. row-level security, RLS, безопасность на уровне строк, защита на уровне строк, политика защиты на уровне строк) СУБД. Стоит отметить, что RLS-политика позволяет разграничить доступ к данным (информации), хранящимся в базе данных 145, в частности, на основе определенных знаний о пользователе (пользователях) и группах пользователей. Такими знаниями могут являться роль пользователя на предприятии (в частности, в компании предприятия), должность пользователя, отдел (подразделение), в котором работает пользователь и т.д. RLS-политика (в частном случае, реализованная RLS-технологией) предоставляет возможность создания политик безопасности, которые ограничивают доступ пользователям к определенным данным, хранящимся в базе данных 145, в частности, к строкам (и данным, содержащимся в строках), по крайней мере, в одной таблице базы данных 145, даже если у такого пользователя существуют стандартные права (возможность получать данные из таблицы) на чтение (и изменение, включая удаление и редактирование) данных из упомянутой таблицы (таблиц). Стоит отметить, что при осуществлении связи, по крайней мере, одного объекта базы данных с политикой безопасности контроль доступа осуществляется с использованием логики, например, логики PL/SQL-функции (от англ. Procedural Language/Structured Query Language, PL/SQL - язык программирования, процедурное расширение языка SQL, разработанное компанией Oracle). При этом в базу данных 145 (например, в БД Oracle) осуществляется добавление (специального) пакета (от англ. package - пакеты, которые позволяют группировать наборы именованных блоков кода, и в которых осуществляется хранение состояния сессии базы данных на время жизни, доступное для функций и процедур, входящих в пакет), содержащего (отдельные элементарные) функции и процедуры и обеспечивающего работу со слоями данных. Стоит отметить, что упомянутый пакет является пакетом PL/SQL. Пространство бизнес-логики содержит программный инструмент (который создается, например, программистом, разработчиком), в частности, реализованный скриптом, осуществляющий доступ (в частности запросы) к данным базы данных, который осуществляет проверку у объекта метаданных (например, документа, справочника, итога и т.д.) наличие RLS-политики в СУБД для соответствующих объекту метаданных таблиц (в частности, хранящих данные такого объекта метаданных) базы данных, (в частности, базы данных 145) и, в случае отсутствия RLS-политики, осуществляет создание RLS-политики. В частном случае, исполнение (запуск) упомянутого программного инструмента, в частности, модуля, осуществляется после добавления (в частности, администратором описываемой системы) нового объекта метаданных, в частности, запуск инструмента осуществляется программистом, пользователем или автоматически (в частности, сервером приложений 120). Так, например, для каждого (или, по крайней мере, для одного) справочника, развязочной таблицы, документа, табличной части, итога и т.д., созданных в пространстве бизнес-логики, в базе данных 145 осуществляется создание RLS-политики, ограничивающей доступ пользователя к данным по значениям (идентификаторам) слоя данных, в частности, с каким слоем данных связан пользователь (к какому слою данных привязан пользователь (или группа пользователей)), с таким значением (идентификатором) слоя данных пользователь и получает данные.It is worth noting that to limit the access of users (and user groups) to data, the present invention uses the RLS policy (from the English row-level security, RLS, line-level security, line-level protection, line-level security policy) DBMS It is worth noting that the RLS policy allows you to differentiate access to data (information) stored in the
Стоит отметить, что для предоставления (и/или ограничения) доступа пользователям к данным справочников, документов, табличных частей документов, итогов и связывающих таблиц справочников на чтение (просмотр) или модификацию (добавление, изменение или удаление) RLS-политика (реализованная программным кодом, в частности, на сценарном языке, например, скриптом) содержит, по крайней мере, одно выражение, в частности, возвращающее логический результат, определяющий то, какие строки таблиц, в которых хранятся упомянутые данные, будут предоставлены для чтения и модификации пользователям, а какие - не будут предоставлены для чтения и модификации пользователям. В частном случае, упомянутые выражения вычисляются для каждой строки таблиц перед другими условиями или функциями (до выполнения других условий и функций), поступающими из запроса пользователя из клиентского приложения. Таким образом, при применении (использовании) RLS-политики строки таблиц (следовательно, данные (в частности, наборы данных), содержащиеся в таких строках), для которых упомянутое выражение RLS-политики вернет логическое ЛОЖЬ, обрабатываться не будут и не будут возвращены на запрос от пользователя (клиентского приложения пользователя).It should be noted that to provide (and / or limit) access to users to the data of directories, documents, tabular parts of documents, totals and linking tables of directories for reading (viewing) or modifying (adding, changing or deleting) RLS policy (implemented by program code , in particular, in a scripting language, for example, a script) contains at least one expression, in particular, returns a logical result that determines which rows of the tables in which the mentioned data is stored will be provided for reading and modification to users, and which will not be provided for reading and modification to users. In the particular case, the mentioned expressions are calculated for each row of the tables before other conditions or functions (before other conditions and functions are fulfilled) coming from the user’s request from the client application. Thus, when applying (using) the RLS policy, table rows (therefore, data (in particular, data sets) contained in such rows) for which the mentioned RLS policy expression returns a logical FALSE will not be processed and will not be returned to request from the user (client application of the user).
На ФИГ. 3 показан примерный вариант ограничения доступа пользователей (и групп пользователей) к данным с использованием RLS-политики. Для отображения данных, запрашиваемых пользователем предприятия (например, предприятия 1), клиентское приложение 130, установленное на вычислительном устройстве пользователя 132, отправляет запрос данных (запрашивает данные) (315) из справочника, например, справочника товаров (справочник «Товары» («Articles»)), на сервер приложений 120, в частности, в зависимости от того, какие формы открывает пользователь. Ниже приведен примерный вариант упомянутого запроса данных:In FIG. Figure 3 shows an example of restricting user (and user group) access to data using the RLS policy. To display the data requested by the user of the enterprise (for example, enterprise 1), the
«SELECT"SELECT
c.ID, c.ID,
c.NAME as Name c.NAME as Name
FROMFROM
ARTICLES c.». ARTICLES c. ”.
В клиентском приложении (например, 130, 136 и т.д.) пользователь открывает, например, форму «Каталог товаров». Чтобы вывести данные по товарам упомянутое клиентское приложение запрашивает у сервера приложений 120 данные справочника товаров. Далее сервер приложений 120 определяет, в какой таблице базы данных 145 хранятся данные справочника товаров и осуществляет (отправляет) запрос (325) в базу данных 145 к соответствующим данным, на получение таких данных из таблицы (запрос данных таблицы), например, из таблицы, в которой хранятся данные справочника «Товары», на основной сервер базы данных 110. Упомянутая таблица, в которой хранятся данные справочника «Товары», приведена в качестве примера и, в частном случае, является таблицей базы данных, в которой хранятся данные (неядерного) справочника, в частности, справочника товаров, причем такая таблица товаров (в частности, справочник товаров) может содержать такие поля, как код товара, наименование товара, артикул товара, габаритные характеристики товара и т.д. Далее основной сервер базы данных 110 средствами СУБД осуществляет поиск RLS-политики для таблицы, например, для таблицы «Товары». Далее основной сервер базы данных 110 применяет найденную RLS-политику к запросу на данные таблицы, например, таблицы «Товары». Так, в частном случае, для каждой таблицы базы данных 145, где должны быть (в которой должны содержаться) слои данных в базе данных 145, должна быть создана RLS-политика. Далее основной сервер базы данных 110 возвращает серверу приложений 120 данные (335) таблицы, например, таблицы «Товары », у которых значение (идентификатор) слоя данных совпадает со значением (идентификатором) слоя данных пользователя, запрашивающего данные. Далее сервер приложений 120 передает данные (в частности, те же данные (345), что основной сервер базы данных 110 вернул серверу приложений 120 таблицы, в частности, таблицы «Товары») в клиентское приложение 130, и клиентское приложение 130 осуществляет предоставление (отображение) полученных данных пользователю предприятия.In a client application (for example, 130, 136, etc.), the user opens, for example, the “Product Catalog” form. In order to display data on goods, said client application requests from the
Стоит отметить, что пользователю, пользователям, группе пользователей или группам пользователей предприятия 1 предоставляется (средствами RLS-политики) доступ, в частности, для чтения и отображения, только к данным со значением (идентификатором) первого слоя данных для первого предприятия (Слой Данных 1 для Предприятия 1) и базовый слой данных (Базовый Слой Данных), т.е. предоставляется доступ к данным Слоя 1 Предприятия 1 и Базового слоя данных.It should be noted that the user, users, user groups or user groups of
Также, пользователю, пользователям, группе пользователей или группам пользователей Предприятия 2 предоставляется (средствами RLS-политики) доступ, в частности, для чтения и отображения, только к данным со значением (идентификатором) второго слоя данных для второго предприятия (Слой Данных 2 для Предприятия 2) и Базовый слой данных, т.е. предоставляется доступ к данным Слоя Данных 2 Предприятия 2 и Базового слоя данных.Also, the user, users, user group or user groups of
Стоит отметить, что пользователь, пользователи, группа пользователей или группы пользователей предприятия 1 (первого предприятия) и предприятия 2 (второго предприятия) не могут изменять или добавлять данные, содержащиеся (хранящиеся) в Базовом слое данных, и данные в Базовом слое данных (т.е., в частном случае, содержащиеся в других слоях данных), которые не указаны в развязочной таблице пользователей слоев данных, что реализовано RLS-политикой.It is worth noting that the user, users, user group or user groups of enterprise 1 (first enterprise) and enterprise 2 (second enterprise) cannot change or add data contained (stored) in the Base data layer and data in the Base data layer (t .e., in the particular case, contained in other data layers) that are not specified in the interchange table of users of data layers, which is implemented by the RLS policy.
В частном случае, при добавлении пользователем (в частности, принадлежащим, по крайней мере, одной группе пользователей) новой записи в справочник (например, добавление нового товара в каталог (справочник) товаров) информация (данные) о принадлежности к определенному, по крайней мере, одному слою данных автоматически определяется по текущему пользователю (где, по крайней мере, одному пользователю или группе пользователей соответствует, по крайней мере, один слой данных), т.е. определяется в зависимости от того, с каким слоем данных связан пользователь (к какому слою данных «привязан» пользователь), и осуществляется сохранение записи в базе данных 145 с нужным (соответствующим) значением (идентификатором) слоя данных.In a particular case, when a user (in particular, belonging to at least one user group) adds a new record to the directory (for example, adding a new product to the catalog (directory) of goods) information (data) on belonging to a certain, at least , one data layer is automatically determined by the current user (where at least one user or group of users corresponds to at least one data layer), i.e. is determined depending on which data layer the user is associated with (to which data layer the user is “attached”), and the record is saved in the
В частном случае, при добавлении новой записи (в частности, алгоритмом скрипта, который запускается при сохранении новой записи) в развязочную таблицу справочника информация (данные) о принадлежности к слою автоматически определяется по текущему слою данных (в частности, слою данных из справочника, к которому относится сохраняемая строка развязочной таблицы) и осуществляется сохранение записи в базе данных 145 с нужным (определенным) значением (идентификатором) слоя данных. Стоит отметить, что запись самого справочника может являться записью (набором данных) дочернего слоя данных (может относиться к дочернему слою данных), в частности, обладать признаком отношения к слою данных, в частном случае, к дочернему слою данных, и не быть доступна пользователям для редактирования (в частном случае, доступ на чтение записи (в частности, данных) предоставляется только на чтение).In the particular case, when a new record is added (in particular, by a script algorithm that is launched when a new record is saved), information (data) on the layer membership is automatically determined by the current data layer (in particular, the data layer from the directory, to to which the stored row of the decoupling table belongs) and the record is saved in the
Стоит отметить, что при добавлении новой записи в документ информация (данные) о принадлежности к слою данных автоматически определяется по текущему пользователю и запись сохраняется в базе данных 145 с нужным значением (идентификатором) слоя данных.It is worth noting that when adding a new record to the document, information (data) about belonging to the data layer is automatically determined by the current user and the record is stored in
Стоит также отметить, что при добавлении новой записи в табличную часть документа информация о принадлежности к слою данных автоматически вычитывается (получается) из документа и запись сохраняется в базе данных 145 с нужным значением (идентификатором) слоя данных (в частном случае, данные, которые добавляет пользователь, добавляются только в те виртуальные базы данных, к которым «привязан» (имеет доступ, связан) пользователь).It is also worth noting that when adding a new record to the tabular part of the document, information about belonging to the data layer is automatically subtracted (obtained) from the document and the record is stored in the
Также, для всех "проводок" по итогам («проводки» осуществляются (только) документами) используются данные о слое данных из документа. "Проводка" (в частности, контировка) является записью в базе данных 145 об изменении состояния учитываемых товаров.Also, for all “postings” based on the results (“postings” are made (only) by documents), data about the data layer from the document is used. "Posting" (in particular, account assignment) is a record in the
Стоит отметить, что при добавлении (например, программистом, разработчиком) нового объекта метаданных (справочника, развязочной таблицы, документа, табличной части документа, итога и т.д.) атрибут слоя данных (идентификатор слоя данных, в частности, ссылка на слой данных) добавляется в объект автоматически, в частности, в объект метаданных (документ, справочник, итог(и)). Стоит отметить, что новый объект добавляется (включается) в систему контроля прав доступа (RLS, RLS-политика) к данным слоев данных (данным виртуальных баз данных), в частности, RLS-политика создается средствами СУБД (автоматически) для соответствующей таблицы.It is worth noting that when adding (for example, a programmer, developer) a new metadata object (directory, decoupling table, document, tabular part of the document, total, etc.), the attribute of the data layer (identifier of the data layer, in particular, a link to the data layer ) is added to the object automatically, in particular, to the metadata object (document, directory, total (s)). It is worth noting that a new object is added (included) to the access control system (RLS, RLS policy) to data layer data (virtual database data), in particular, the RLS policy is created by the DBMS (automatically) for the corresponding table.
На ФИГ. 4 показана блок-схема примерного варианта процесса создания новой записи (в частности, записи справочника, например, набора полей, записываемых в таблицу базы данных 145) в справочнике или развязочной таблице справочника. Стоит отметить, что при сохранении записи в развязочной таблице одновременно осуществляется сохранение и в записи справочника, к которой относится запись развязочной таблицы. Процесс создания новой записи в справочнике и/или развязочной (связывающей) таблице справочника базы данных 145 начинается в шаге 410. В рамках процесса, представленного на ФИГ. 4, осуществляется создание и сохранение новой записи, по крайней мере, в одной развязочной таблице (неядерного) справочника и/или в справочнике, в частности, в неядерном справочнике (вручную) при добавлении записей (в частности, наборов данных) пользователем (например, в клиентском приложении 130 пользователем компании) или программно (например, посредством периодического выполнения задачи (от англ. task), в частности, сервером приложений 120, в котором прописан слой данных, в частности, базовый слой данных, причем такой задачей (task’ом), например, может являться загрузка и сохранение курсов валют и т.д.). В частном случае, упомянутая задача является специальным служебным пользователем системы, в частности, реализованным скриптом, который видит данные сразу всех слоев данных, причем под таким пользователем осуществляется запуск (выполнение, исполнение) периодических заданий, например, ежедневный импорт (загрузка) курсов валют и т.д. Стоит отметить, что задача также имеет идентификатор пользователя, в частности, в таком же формате, что и описываемый в рамках настоящего изобретения идентификатор пользователя.In FIG. 4 is a flowchart of an exemplary embodiment of a process for creating a new record (in particular, a directory entry, for example, a set of fields written to a database table 145) in a directory or a reference table of a directory. It is worth noting that when you save a record in the decoupling table, it is also saved in the directory entry to which the record of the decoupling table belongs. The process of creating a new entry in the directory and / or the decoupling (linking) table of the
В шаге 425 сервером приложений 120 осуществляется проверка того факта, содержится ли (неядерный) справочник в справочнике исключений справочников (списке исключений справочников), в котором не содержится (идентификаторов) слоев данных (который не должен содержать слои данных, в частности, идентификаторы слоев данных). Если в шаге 425 установлено, что упомянутый справочник не содержится в справочнике исключений справочников, то процесс переходит к шагу 430, в противном случае процесс переходит к шагу 460.In
В шаге 430 осуществляется, в частности, скриптом (сервера приложений 120), проверка указано ли значение (идентификатор) слоя данных в записи явно. В частном случае, явным добавлением значения (идентификатора) слоя данных является добавление такого значения (идентификатора) слоя данных соответствующим алгоритмом, скриптом, программным кодом и т.д.At
Если в шаге 430 установлено, что значение (идентификатор) слоя данных не указано явно, то процесс переходит к шагу 435. Если в шаге 430 установлено, что значение (идентификатор) слоя данных указано явно, то процесс переходит к шагу 445.If it is determined in
В шаге 435 осуществляется получение значения (идентификатора) слоя данных для текущего пользователя (осуществляющего добавление записи) посредством вызова скриптом функции, в частности, скалярной функции, «GET_CURR_USER_DATA_LAYER» из пакета «PACK_DATA_LAYERS» (примерный вариант программного кода которого приведен ниже) базы данных 145. Функция (метод) «GET_CURR_USER_DATA_LAYER» осуществляет отправку запроса в таблицу «DATA_LAYER_TO_USERS» (развязочную таблицу пользователей слоев данных, примерный вариант которой приведен в Таблице 3) с фильтром (в частности, запрос в базе данных 145 с условием WHERE) по текущему пользователю, возвращает код (идентификатор, значение, признак) слоя данных, в частности, добавленный ранее, в частности, в таблицу пользователей слоев данных, например, администратором описываемой системы или, по крайней мере, одним модулем описываемой системы.In
Далее в шаге 440 осуществляется сохранение значения (идентификатора, признака, кода) слоя данных, в частности, отношения к определенной виртуальной базе данных, в записи справочника, в который осуществляется добавление записи пользователем.Next, in
Далее в шаге 445 осуществляется (в частности, упомянутым скриптом на сервере приложений 120) проверка того факта, является ли текущий пользователь задачей (т.е. сохранение выполняется упомянутой выше задачей (заданием) или (вручную) пользователем). Если в шаге 445 было установлено, что пользователь является задачей (т.е. сохранение выполняется упомянутой выше задачей, а не (вручную) пользователем), то процесс переходит к шагу 450. Если в шаге 445 было установлено, что пользователь не является задачей (т.е. сохранение выполняется не упомянутой выше задачей, а (вручную) пользователем), то процесс переходит к шагу 455.Next, in
В шаге 450 всем несохраненным записям всех развязочных таблиц, которые (записи справочника) относятся к добавляемой записи, добавляется значение (идентификатор) слоя данных из добавляемой записи справочника и процесс переходит к шагу 460.In
В шаге 455 всем несохраненным записям всех развязочных таблиц, относящихся к добавляемой записи, добавляется значение (идентификатор) слоя данных из текущего пользователя (сохраняющего запись), причем значение (идентификатор) слоя данных для текущего пользователя осуществляется с использованием вызова упомянутой выше (исполнения, выполнения) функции, в частности, скалярной функции, «GET_CURR_USER_DATA_LAYER» из пакета «PACK_DATA_LAYERS» базы данных 145 для осуществления запроса таблицу «CLIENT_TO_USERS» с фильтром по текущему пользователю, определяет предприятие (клиента) и возвращает связанный с (привязанный к) предприятием (клиентом) значение (идентификатор, признак, код,) слоя данных, в частности, идентификатор слоя пользователя, и процесс переходит к шагу 460.In
В шаге 460 осуществляется сохранение наборов данных. В частности, осуществляется сохранение наборов данных с соответствующими им идентификаторами слоев данных или без соответствующих им идентификаторов слоев данных, в зависимости от того факта, содержится ли справочник в справочнике исключений, определяемого в шаге 425.At
На ФИГ. 5 показана блок-схема примерного варианта процесса сохранения нового документа. Процесс сохранения нового документа, в частности, создание и сохранение новой записи (нового документа) в журнале документов, содержащего документы данного типа, (вручную) пользователем или программно, начинается в шаге 513. Далее в шаге 515 осуществляется проверка того, что тип документа не содержится в справочнике исключений типов (списке исключений типов), в котором (в частности, в документах с определенным типом (определенного типа)) не должно быть слоев данных (не должно содержаться идентификаторов слоев данных), в частном случае, если необходимо исключение, что в каком-то типе документов нет деления данных по слоям данных, т.е. пользователи из разных слоев данных (пользователи, которым назначены разные идентификаторы слоев данных) сохраняют такие документы с доступом к ним всеми пользователями.In FIG. 5 is a flowchart of an exemplary embodiment of a process for saving a new document. The process of saving a new document, in particular, creating and saving a new record (new document) in the document journal containing documents of this type (manually) by the user or programmatically, starts at
Если в шаге 515 установлено, что упомянутый справочник не содержится в справочнике исключений типов (списке исключений типов), то процесс переходит к шагу 517, в противном случае процесс переходит к шагу 529.If it is determined in
В шаге 517 скриптом (выполняемым, в частности, при сохранении документа или справочника) осуществляется проверка указано ли значение (идентификатор) слоя данных явно.In
Если в шаге 517 установлено, что значение (идентификатор) слоя данных не указано явно, то процесс переходит к шагу 519. Если в шаге 517 установлено, что значение (идентификатор) слоя данных указано явно, то процесс переходит к шагу 523.If it is determined in
В шаге 519 осуществляется получение значения (идентификатора) слоя данных для текущего пользователя посредством вызова функции, в частности, скалярной функции, GET_CURR_USER_DATA_LAYER из пакета PACK_DATA_LAYERS базы данных 145. Функция (метод) GET_CURR_USER_DATA_LAYER осуществляет отправку запроса в таблицу CLIENT_TO_USERS с фильтром по текущему пользователю, определяет предприятие (клиента) и возвращает связанный с (привязанный к) к предприятием (клиентом) код слоя данных (в частности, идентификатор, значение (идентификатор) слоя данных).In
Далее в шаге 521 осуществляется добавление (присваивание) значения (кода, идентификатора, значения) слоя данных в (текущем) документе.Next, in
Далее в шаге 523 осуществляется проверка того, является ли текущий пользователь задачей (task’ом). Если в шаге 523 было установлено, что пользователь является задачей (task’ом), то процесс переходит к шагу 525. Если в шаге 523 было установлено, что пользователь не является задачей (task’ом), то процесс переходит к шагу 527.Next, in
В шаге 525 (всем) несохраненным записям (всех) табличных частей, относящихся к добавляемой записи документа, присваивается значение (идентификатор) слоя данных из добавляемого документа (причем, в частном случае, документ также является записью в базе данных) и процесс переходит в шаг 529.In
В шаге 527 (всем) несохраненным записям (всех) табличных частей, относящихся к добавляемой записи документа, присваивается добавленное (присвоенное) в шаге 521 значение (идентификатор) слоя данных.In
В шаге 529 осуществляется сохранение документа. В частности, осуществляется сохранение наборов данных документа с соответствующими им идентификаторами слоев данных или без соответствующих им идентификаторов слоев данных, в зависимости от того факта, содержится ли тип добавляемого документа в справочнике исключений типов документов, определяемого в шаге 515.At
ФИГ. 6 иллюстрирует примерный вариант формирования виртуальных баз данных, согласно настоящему изобретению. На ФИГ. 6 показана физическая база данных 145, из данных которой формируются виртуальные базы данных, например, виртуальная база данных 1, виртуальная база данных 2, виртуальная база данных 3 … виртуальная база данных N (соответственно 615, 620, 625, 630), в частном случае, являющиеся частью базы данных 145. Виртуальные базы данных формируются в зависимости от слоев данных для соответствующих пользователей (и/или групп пользователей, в том числе групп супер-пользователей), в частности, средствами RLS-политики, причем каждая такая виртуальная база данных содержит данные (например, справочников, развязочных таблиц, документов, итогов), доступные определенным пользователям (или группам пользователей, в том числе групп супер-пользователей) конкретного предприятия (клиента), причем также могут быть сформированы виртуальные базы данных, данные в которых доступны всем пользователям. как описано в рамках настоящего изобретения. Стоит отметить, что супер-пользователи имеют доступ (для чтения и изменения) ко всем данным во всех виртуальных базах данных. Стоит отметить, что супер-пользователям доступны данные, по крайней мере, одной виртуальной базы данных (например, данные из двух, трех и т.д. виртуальных баз данных). Так, например, группе супер-пользователей 1 (642) доступны все данные виртуальной базы данных 1 (615) и все данные виртуальной базы данных 2 (620), группе супер-пользователей 2 (644) доступны все данные виртуальной базы данных 1 (615) и все данные виртуальной базы данных 3 (625), группе супер-пользователей N (646) доступны все данные виртуальной базы данных 3 (625) и все данные виртуальной базы данных N (630). Также, в частном случае, одной группе пользователей доступны данные только одной виртуальной базы данных, например, группе пользователей 1 (651) доступны данные только виртуальной базы данных 1 (615), группе пользователей 2 (652) доступны только данные виртуальной базы данных 2 (620), группе пользователей 3 (653) доступны только данные виртуальной базы данных 3 (625), группе пользователей N (654) доступны только данные виртуальной базы данных 3 (630) и т.д.FIG. 6 illustrates an exemplary embodiment of virtual database generation according to the present invention. In FIG. 6 shows a
Стоит отметить, что в частном случае виртуальные базы данных содержат те же метаданные (например, метаданные (226, ФИГ. 2)), что и база данных, из данных которой формируются виртуальные базы данных. Так, например, виртуальная база данных 1 (615) содержит все или часть метаданных базы данных 145, виртуальная база данных 2 (620) содержит все или часть метаданных базы данных 145, виртуальная база данных 3 (625) содержит все или часть метаданных базы данных 145, виртуальная база данных N (630) содержит все или часть метаданных базы данных 145 и т.д. Стоит также отметить, что каждая виртуальная база данных может содержать все данные базы данных 145 или часть метаданных, относящихся к данным конкретной виртуальной базы данных.It is worth noting that in a particular case, virtual databases contain the same metadata (for example, metadata (226, FIG. 2)) as the database from which data virtual databases are generated. So, for example, virtual database 1 (615) contains all or part of
Стоит отметить, что виртуальная база данных 1 (615) содержит данные (наборы данных), относящиеся к слою данных 1 (т.е. наборы данных имеют идентификаторы слоя данных 1); виртуальная база данных 2 (620) содержит данные (наборы данных), относящиеся к слою данных 2; виртуальная база данных 3 (625) содержит данные (наборы данных), относящиеся к слою данных 3 и т.д.; виртуальная база данных N (630) содержит данные (наборы данных), относящиеся к слою данных N.It is worth noting that virtual database 1 (615) contains data (data sets) related to data layer 1 (i.e., data sets have identifiers of data layer 1); virtual database 2 (620) contains data (data sets) related to
ФИГ. 7 иллюстрирует примерный вариант иерархии виртуальных баз данных, согласно настоящему изобретению. На ФИГ. 7 база данных 145 может содержать, по крайней мере, одну виртуальную базу данных, например, может содержать виртуальную базу данных 1 (615), виртуальную базу данных 2 (620), виртуальную базу данных 3 (625), и другие виртуальные базы данных, дочерними для которых могут являться другие виртуальные базы данных, например, виртуальная база данных 0 (710). Так, например, виртуальная база данных 0 (710) может являться дочерней для виртуальной базы данных 1 (615) и/или для виртуальной базы данных 2 (620), и/или для виртуальной базы данных 3 (625). Так, например, виртуальная база данных 1 (615) может быть сформирована для пользователя или группы пользователей (в частности, группы пользователей 1 (651) предприятия 1), виртуальная база данных 2 (620) может быть сформирована для пользователя или группы пользователей (в частности, группы пользователей 2 (652) предприятия 2), виртуальная база данных 3 (625) может быть сформирована для пользователя или группы пользователей (в частности, группы пользователей 3 (652) предприятия 3 и/или предприятия 2), а виртуальная база данных 0 (710), в которой хранятся данные, общие для группы пользователей 1 и группы пользователей 2.FIG. 7 illustrates an exemplary embodiment of a virtual database hierarchy according to the present invention. In FIG. 7,
Поскольку, показанная на ФИГ. 7 виртуальная база данных 0 (710) является дочерней для виртуальной базы данных 1 (615), для виртуальной базы данных 2 (620) и для виртуальной базы данных 3 (625), то:Because shown in FIG. 7 virtual database 0 (710) is a child of virtual database 1 (615), for virtual database 2 (620) and for virtual database 3 (625), then:
- группа пользователей 1 (651) имеет доступ к виртуальной базе данных 1 (615), в частности, к данным виртуальной базы данных 1 (615), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- user group 1 (651) has access to virtual database 1 (615), in particular, to data from virtual database 1 (615), and has access to virtual database 0 (715), in particular, to virtual database data data 0 (710);
- группа пользователей 2 (652) имеет доступ к виртуальной базе данных 2 (620), в частности, к данным виртуальной базы данных 2 (620), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- user group 2 (652) has access to virtual database 2 (620), in particular, to data from virtual database 2 (620), and has access to virtual database 0 (710), in particular, to virtual database data data 0 (710);
- группа пользователей 3 (653) имеет доступ к виртуальной базе данных 3 (625), в частности, к данным виртуальной базы данных 3 (625), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- the user group 3 (653) has access to the virtual database 3 (625), in particular, to the data of the virtual database 3 (625), and has access to the virtual database 0 (710), in particular, to the data of the virtual database data 0 (710);
- группа супер-пользователей 1 (642) имеет доступ к виртуальной базе данных 1 (615), в частности, к данным виртуальной базы данных 1 (615), и к виртуальной базе данных 2 (620), в частности, к данным виртуальной базы данных 2 (620), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710);- a group of super-users 1 (642) has access to virtual database 1 (615), in particular, to data from virtual database 1 (615), and to virtual database 2 (620), in particular, to data from a virtual database data 2 (620), and has access to virtual database 0 (710), in particular, to data from virtual database 0 (710);
- группа супер-пользователей 2 (644) имеет доступ к виртуальной базе данных 1 (615), в частности, к данным виртуальной базы данных 1 (615), и к виртуальной базе данных 3 (625), в частности, к данным виртуальной базы данных 3 (625), и имеет доступ к виртуальной базе данных 0 (710), в частности, к данным виртуальной базы данных 0 (710).- the group of super-users 2 (644) has access to virtual database 1 (615), in particular, to the data of virtual database 1 (615), and to virtual database 3 (625), in particular, to data of the virtual database data 3 (625), and has access to virtual database 0 (710), in particular, to data from virtual database 0 (710).
Стоит отметить, что виртуальная база данных 1 (615) содержит данные (наборы данных), относящиеся к слою данных 1; виртуальная база данных 2 (620) содержит данные (наборы данных), относящиеся к слою данных 2; виртуальная база данных 3 (625) содержит данные (наборы данных), относящиеся к слою данных 3; виртуальная база данных 0 (710) содержит данные (наборы данных), относящиеся к слою 0. Стоит также отметить, что слой данных 0 является дочерним для слоя данных 2.It is worth noting that virtual database 1 (615) contains data (data sets) related to
ФИГ. 8 иллюстрирует способ осуществления настоящего изобретения. В шаге 808 осуществляется создание справочника слоев данных, сохраненного, по крайней мере, в одной таблице, в базе данных 145 (основного) сервера базы данных 110 удаленного сервера (сервера ERP-системы) 112. Стоит отметить, что справочник слоев данных содержит названия всех слоев данных, а также содержит идентификаторы (значения) слоев данных для наборов данных, хранимых в объектах метаданных бизнес логики сервера приложений сервера системы планирования ресурсов предприятия (ERP-системы). Как было сказано выше, объектами метаданных являются справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, сохраненные в таблицах базы данных 145 основного сервера базы данных 110, связанного с сервером ERP-системы 112. Стоит отметить, что идентификатор слоя данных определяет принадлежность набора данных к соответствующему слою данных.FIG. 8 illustrates an embodiment of the present invention. In
В шаге 818 осуществляется создание связывающей таблицы пользователей слоев данных в базе данных 145 (основного) сервера базы данных 110 сервера ERP-системы 112. Стоит отметить, что в связывающей таблице пользователей слоев данных хранятся связи между пользователями и слоями данных в виде сохраненных связанных идентификаторов пользователей и соответствующих им идентификаторов слоев данных из доступных идентификаторов слоев данных справочника слоев данных, причем связи между пользователями и слоями данных определяют доступность наборов данных для чтения и модификации пользователям связанных с ними слоями данных.In
В шаге 828 осуществляется создание связывающей таблицы дочерних слоев данных в базе данных 145 (основного) сервера базы данных 110 сервера ERP-системы 112. Стоит отметить, что в связывающей таблице дочерних слоев данных хранится иерархия между слоями данных в виде сохраненных связанных идентификаторов для дочерних слоев данных и идентификаторов для родительских слоев данных, причем связь между родительскими слоями и дочерними слоями определяет доступность наборов данных дочерних слоев данных для чтения пользователями родительских слоев данных.In
В шаге 838 осуществляется создание политики безопасности на уровне строк (RLS-политики) для каждой из таблиц базы данных сервера базы данных, в которых хранятся справочники, документы, табличные части документов, итоги и связывающие таблицы справочников, и осуществляется сохранение RLS-политик в базе данных сервера базы данных, причем RLS-политика содержит, по крайней мере, одно выражение, возвращающее логический результат, определяющий доступность пользователю наборов данных из таблиц базы данных сервера базы данных в зависимости от идентификаторов слоев данных для таких наборов данных.In
В шаге 848 сервером приложений 120 при добавлении набора данных в справочник осуществляется установление (определение, выявление) идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя.In
В шаге 858 сервером приложений 120 при добавлении набора данных в связывающую таблицу осуществляется установление идентификатора слоя данных для добавляемого набора данных и осуществляется сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя.In
Стоит отметить, что при добавлении, по крайней мере, одного набора данных, по крайней мере, одну развязочную таблицу справочника и/или, по крайней мере, в один другой справочник, отличный от справочника исключений справочников, осуществляется проверка наличия справочника, в который осуществляется добавление набора данных, в справочнике исключений справочников. Также, осуществляется проверка наличия в добавляемом наборе данных идентификатора слоя данных для добавляемого набора данных при установлении отсутствия справочника в справочнике исключений справочников. При установлении отсутствия в добавляемом наборе данных идентификатора слоя данных для добавляемых данных осуществляется получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора слоя данных в добавляемый набор данных в справочнике. Далее осуществляется проверка добавления набора данных в базу данных пользователем или задачей, исполняемой программным кодом. Причем, при добавлении набора данных пользователем осуществляется присваивание, в частном случае, добавление, идентификатора слоя данных, полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных. Также, в случае добавления набора данных задачей, исполняемой программным кодом осуществляется присваивание идентификатора слоя данных, полученного из добавляемого набора данных, несохраненным наборам данных связывающих таблиц, связанных с добавляемым набором данных.It is worth noting that when adding at least one data set, at least one decoupling table of the directory and / or at least one other directory other than the directory of directory exclusions, checks for the presence of the directory in which Adding a dataset to the directory exceptions directories. Also, the presence of a data layer identifier in the added data set is checked for the added data set when the absence of the directory is found in the directory of directory exclusions. When the absence of a data layer identifier for the data being added is added to the data set, the data layer identifier is obtained from the data layer user linking table and the obtained data layer identifier is added to the data set to be added in the directory. Next, a check is made to add a data set to the database by a user or a task executed by program code. Moreover, when adding a dataset by a user, assignment, in a particular case, is added, of the identifier of the data layer obtained from the user data linking table to the unsaved data sets of the linking tables associated with the added data set. Also, in the case of adding a data set by a task executed by the program code, the identifier of the data layer obtained from the added data set is assigned to the unsaved data sets of the linking tables associated with the added data set.
В шаге 868 сервером приложений 120 при добавлении документа осуществляется установление идентификатора слоя данных, по крайней мере, для одного добавляемого набора данных, содержащегося в добавляемом документе, и осуществляется сохранение добавляемого документа и, по крайней мере, одного набора данных документа в базу данных сервера базы данных с сохранением для сохраняемого набора данных документа установленного идентификатора слоя.In
Стоит отметить, что при добавлении документа в базу данных сервера базы данных осуществляется проверка наличия типа добавляемого документа в справочнике исключений типов документов. Также, при установлении отсутствия типа добавляемого документа в справочнике исключений типов документов осуществляется проверка наличия в добавляемом документе идентификатора слоя данных для данных добавляемого документа. При установлении отсутствия в добавляемом документе идентификатора слоя данных осуществляется получение идентификатора слоя данных из связывающей таблицы пользователей слоев данных и добавление полученного идентификатора в добавляемый документ. Далее осуществляется проверка осуществления добавления документа в базу данных пользователем или задачей, исполняемой программным кодом. Причем, при добавлении документа в базу данных пользователем осуществляется присваивание идентификатора слоя данных, полученного из добавляемого документа, несохраненным наборам данных табличных частей, связанных с добавляемым документом. В случае добавления документа в базу данных задачей, исполняемой программным кодом, осуществляется присвоение идентификатора слоя данных, добавленного в документ из полученного из связывающей таблицы пользователей слоев данных, несохраненным наборам данных табличных частей, связанных с добавляемым документом.It is worth noting that when adding a document to the database of the database server, it checks the presence of the type of the added document in the directory of exceptions for document types. Also, when establishing the absence of the type of the added document in the directory of exceptions of document types, the presence of the identifier of the data layer for the data of the added document is checked in the added document. When the absence of a data layer identifier in the added document is established, the data layer identifier is obtained from the data layer user linking table and the obtained identifier is added to the added document. Next, the implementation of adding a document to the database by a user or a task executed by program code is checked. Moreover, when a document is added to the database by the user, the identifier of the data layer obtained from the added document is assigned to the unsaved data sets of tabular parts associated with the added document. If a document is added to the database by a task executed by program code, the identifier of the data layer, added to the document from the data layers obtained from the user linking table, is assigned to the unsaved data sets of the table parts associated with the added document.
В шаге 878 сервером приложений 120 при добавлении набора данных в табличную часть документа осуществляется установление идентификатора слоя данных для добавляемого набора данных и сохранение добавляемого набора данных в базу данных сервера базы данных с сохранением для такого набора данных установленного идентификатора слоя.In
В шаге 898 удаленным сервером (сервером ERP-системы) 112 посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, осуществляется предоставление пользователю доступа к наборам данных и наборов данных для чтения и модификации, идентификаторы слоев данных которых связаны с идентификатором пользователя в связывающей таблице пользователей слоев данных при осуществлении запросов данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера ERP-системы 112.In
В шаге 899 удаленным сервером (сервером ERP-системы) 112 осуществляется предоставление доступа пользователю родительского слоя к наборам данных и наборов данных дочернего слоя данных для чтения, без возможности их модификации, посредством применения RLS-политики, выполняемой сервером базы данных, к запросам, осуществляемым к наборам данных из базы данных сервера базы данных, с использованием идентификаторов слоев данных для дочерних слоев данных и идентификаторов слоев данных для родительских слоев данных из связывающей таблицы дочерних слоев данных для установления связи между родительским слоем данных и, по крайней мере, одним дочерним слоем данных при осуществлении запроса данных из базы данных сервера базы данных пользователем с использованием клиентского приложения, установленного на вычислительном устройстве пользователя, связанном с сервером приложений сервера ERP-системы.In
На ФИГ. 9 показан пример компьютерной системы общего назначения, которая включает в себя многоцелевое вычислительное устройство в виде компьютера 20 или сервера, или модуля описываемой в настоящем изобретении системы, включающего в себя процессор 21, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память с процессором 21.In FIG. 9 shows an example of a general-purpose computer system that includes a multi-purpose computing device in the form of a
Системная шина 23 может быть любого из различных типов структур шин, включающих шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества архитектур шин. Системная память включает постоянное запоминающее устройство (ПЗУ) 24 и оперативное запоминающее устройство (ОЗУ) 25. В ПЗУ 24 хранится базовая система ввода/вывода 26 (БИОС), состоящая из основных подпрограмм, которые помогают обмениваться информацией между элементами внутри компьютера 20, например, в момент запуска.The
Компьютер 20 также может включать в себя накопитель 27 на жестком диске для чтения с и записи на жесткий диск, не показан, накопитель 28 на магнитных дисках для чтения с или записи на съёмный магнитный диск 29, и накопитель 30 на оптическом диске для чтения с или записи на съёмный оптический диск 31 такой, как компакт-диск, цифровой видео-диск и другие оптические средства. Накопитель 27 на жестком диске, накопитель 28 на магнитных дисках и накопитель 30 на оптических дисках соединены с системной шиной 23 посредством, соответственно, интерфейса 32 накопителя на жестком диске, интерфейса 33 накопителя на магнитных дисках и интерфейса 34 оптического накопителя. Накопители и их соответствующие читаемые компьютером средства обеспечивают энергонезависимое хранение читаемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 20.
Хотя описанная здесь типичная конфигурация использует жесткий диск, съёмный магнитный диск 29 и съёмный оптический диск 31, специалист примет во внимание, что в типичной операционной среде могут также быть использованы другие типы читаемых компьютером средств, которые могут хранить данные, которые доступны с помощью компьютера, такие как магнитные кассеты, карты флеш-памяти, цифровые видеодиски, картриджи Бернулли, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ) и т.п.Although the typical configuration described here uses a hard disk, a removable
Различные программные модули, включая операционную систему 35, могут быть сохранены на жёстком диске, магнитном диске 29, оптическом диске 31, ПЗУ 24 или ОЗУ 25. Компьютер 20 включает в себя файловую систему 36, связанную с операционной системой 35 или включенную в нее, одно или более программное приложение 37, другие программные модули 38 и программные данные 39. Пользователь может вводить команды и информацию в компьютер 20 при помощи устройств ввода, таких как клавиатура 40 и указательное устройство 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, геймпад, спутниковую антенну, сканер или любое другое.Various software modules, including operating system 35, may be stored on a hard disk,
Эти и другие устройства ввода соединены с процессором 21 часто посредством интерфейса 46 последовательного порта, который связан с системной шиной, но могут быть соединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (УПШ). Монитор (дисплей) 47 или другой тип устройства визуального отображения также соединен с системной шиной 23 посредством интерфейса, например, видеоадаптера 48. В дополнение к монитору 47, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показано), такие как динамики и принтеры.These and other input devices are connected to the
Компьютер 20 может работать в сетевом окружении посредством логических соединений к одному или нескольким удаленным компьютерам 49. Удаленный компьютер (или компьютеры) 49 может представлять собой другой компьютер, сервер, роутер, сетевой ПК, пиринговое устройство или другой узел единой сети, а также обычно включает в себя большинство или все элементы, описанные выше, в отношении компьютера 20, хотя показано только устройство хранения информации 50. Логические соединения включают в себя локальную сеть (ЛВС) 51 и глобальную компьютерную сеть (ГКC) 52. Такие сетевые окружения обычно распространены в учреждениях, корпоративных компьютерных сетях, Интернете.
Компьютер 20, используемый в сетевом окружении ЛВС, соединяется с локальной сетью 51 посредством сетевого интерфейса или адаптера 53. Компьютер 20, используемый в сетевом окружении ГКС, обычно использует модем 54 или другие средства для установления связи с глобальной компьютерной сетью 52, такой как Интернет.The
Модем 54, который может быть внутренним или внешним, соединен с системной шиной 23 посредством интерфейса 46 последовательного порта. В сетевом окружении программные модули или их части, описанные применительно к компьютеру 20, могут храниться на удаленном устройстве хранения информации. Надо принять во внимание, что показанные сетевые соединения являются типичными, и для установления коммуникационной связи между компьютерами могут быть использованы другие средства.The
Ниже приведен примерный код упомянутого пакета «PACK_DATA_LAYERS»:Below is an example code of the mentioned package “PACK_DATA_LAYERS”:
«"
CREATE OR REPLACE PACKAGE ULTIMA.PACK_DATA_LAYERS ASCREATE OR REPLACE PACKAGE ULTIMA.PACK_DATA_LAYERS AS
TYPE DATA_LAYER_ID IS RECORD (DATA_LAYER_ID DATA_LAYERS.ID%type); TYPE DATA_LAYER_ID IS RECORD (DATA_LAYER_ID DATA_LAYERS.ID% type);
TYPE DATA_LAYER_LIST IS TABLE OF DATA_LAYER_ID; TYPE DATA_LAYER_LIST IS TABLE OF DATA_LAYER_ID;
-- Функция возвращает код слоя данных для заданного пользователя - The function returns the data layer code for the specified user
FUNCTION GET_USER_DATA_LAYER(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYERS.ID%type;FUNCTION GET_USER_DATA_LAYER (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYERS.ID% type;
-- Функция возвращает код слоя данных для текущего пользователя - The function returns the data layer code for the current user
FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID%type; FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID% type;
-- Функция возвращает набор всех слоев данных (включая зависимые слои данных) для указанного пользователя - The function returns a set of all data layers (including dependent data layers) for the specified user
FUNCTION GET_USER_DATA_LAYERS(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYER_LIST pipelined;FUNCTION GET_USER_DATA_LAYERS (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYER_LIST pipelined;
-- Функция возвращает набор всех слоев данных (включая зависимые слои данных) для текущего пользователя - The function returns a set of all data layers (including dependent data layers) for the current user
FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined;FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined;
-- Процедура для пересчета слоев данных пользователей при изменении пользователя в клиенте (предприятии) - Procedure for recalculating user data layers when a user changes in a client (enterprise)
PROCEDURE RECALC_CLIENT_USER_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID%type, vUSER_ID CLIENT_TO_USERS.USER_ID%type); PROCEDURE RECALC_CLIENT_USER_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID% type, vUSER_ID CLIENT_TO_USERS.USER_ID% type);
-- Процедура для пересчета слоев данных пользователей при изменении клиента (предприятия) в слое данных - Procedure for recalculating user data layers when changing a client (enterprise) in the data layer
PROCEDURE RECALC_CLIENT_DL_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vDATA_LAYER_ID DATA_LAYERS.ID%type, vCLIENT_ID DATA_LAYERS.CLIENT_ID%type); PROCEDURE RECALC_CLIENT_DL_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vDATA_LAYER_ID DATA_LAYERS.ID% type, vCLIENT_ID DATA_LAYERS.CLIENT_ID% type);
-- Процедура для пересчета набора пользователей при вставке узла в дерево слоев данных - Procedure for recalculating a set of users when inserting a node into a tree of data layers
PROCEDURE RECALC_DL_USER_EXT_NODE_INS(vPARENT_ID DATA_LAYERS.ID%type, vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER); PROCEDURE RECALC_DL_USER_EXT_NODE_INS (vPARENT_ID DATA_LAYERS.ID% type, vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER);
-- Процедура для пересчета набора пользователей при удалении узла из дерева слоев данных - Procedure for recounting a set of users when deleting a node from the data layer tree
PROCEDURE RECALC_DL_USER_EXT_NODE_DEL(vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER); PROCEDURE RECALC_DL_USER_EXT_NODE_DEL (vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER);
FUNCTION GET_DL_RLS_PREDICATE(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2; FUNCTION GET_DL_RLS_PREDICATE (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2;
END PACK_DATA_LAYERS;END PACK_DATA_LAYERS;
CREATE OR REPLACE PACKAGE BODY ULTIMA.PACK_DATA_LAYERS ASCREATE OR REPLACE PACKAGE BODY ULTIMA.PACK_DATA_LAYERS AS
CTX_HAS_KEYMAKER_PERM NUMBER := -1; CTX_HAS_KEYMAKER_PERM NUMBER: = -1;
CTX_HAS_KEYMAKER_EDIT_PERM NUMBER := -1; CTX_HAS_KEYMAKER_EDIT_PERM NUMBER: = -1;
FUNCTION GET_USER_DATA_LAYER(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYERS.ID%type IS FUNCTION GET_USER_DATA_LAYER (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYERS.ID% type IS
vDataLayerID DATA_LAYERS.ID%type := 0; vDataLayerID DATA_LAYERS.ID% type: = 0;
BEGIN BEGIN
select DL.ID into vDataLayerID select DL.ID into vDataLayerID
from CLIENT_TO_USERS CU from CLIENT_TO_USERS CU
join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID
where CU.USER_ID = vUserID; where CU.USER_ID = vUserID;
return nvl(vDataLayerID, 0); return nvl (vDataLayerID, 0);
EXCEPTION EXCEPTION
WHEN NO_DATA_FOUND THEN WHEN NO_DATA_FOUND THEN
IF vUserID IS NOT NULL THEN IF vUserID IS NOT NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'Data layer for user #' || vUserID || ' not found.'); RAISE_APPLICATION_ERROR (-20000, 'Data layer for user #' || vUserID || 'not found.');
ELSE ELSE
RAISE_APPLICATION_ERROR(-20000, 'User not specified.'); RAISE_APPLICATION_ERROR (-20000, 'User not specified.');
END IF; END IF;
END GET_USER_DATA_LAYER; END GET_USER_DATA_LAYER;
FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID%type IS FUNCTION GET_CURR_USER_DATA_LAYER RETURN DATA_LAYERS.ID% type IS
BEGIN BEGIN
RETURN GET_USER_DATA_LAYER(KERNEL.GET_UID()); RETURN GET_USER_DATA_LAYER (KERNEL.GET_UID ());
END GET_CURR_USER_DATA_LAYER; END GET_CURR_USER_DATA_LAYER;
FUNCTION GET_USER_DATA_LAYERS(vUserID KERNEL.USERS.ID%type) RETURN DATA_LAYER_LIST pipelined IS FUNCTION GET_USER_DATA_LAYERS (vUserID KERNEL.USERS.ID% type) RETURN DATA_LAYER_LIST pipelined IS
BEGIN BEGIN
for curr in for curr in
( (
SELECT UDL.DATA_LAYER_ID SELECT UDL.DATA_LAYER_ID
FROM DATA_LAYER_USERS UDL FROM DATA_LAYER_USERS UDL
WHERE UDL.USER_ID = vUserID WHERE UDL.USER_ID = vUserID
) )
loop loop
pipe row (curr); pipe row (curr);
end loop; end loop;
END GET_USER_DATA_LAYERS; END GET_USER_DATA_LAYERS;
FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined IS FUNCTION GET_CURR_USER_DATA_LAYERS RETURN DATA_LAYER_LIST pipelined IS
BEGIN BEGIN
for curr in for curr in
( (
SELECT UDL.DATA_LAYER_ID SELECT UDL.DATA_LAYER_ID
FROM DATA_LAYER_USERS UDL FROM DATA_LAYER_USERS UDL
WHERE UDL.USER_ID = KERNEL.GET_UID() WHERE UDL.USER_ID = KERNEL.GET_UID ()
) )
loop loop
pipe row (curr); pipe row (curr);
end loop; end loop;
END GET_CURR_USER_DATA_LAYERS; END GET_CURR_USER_DATA_LAYERS;
-- Процедура для пересчета набора пользователей при связи пользователя со слоем данных(назначению идентификатора слоя данных пользователю, связь идентификаторов пользователей и идентификатором слоев данных) - Procedure for recalculating a set of users when a user associates with a data layer (assigning a data layer identifier to a user, linking user identifiers and data layer identifier)
PROCEDURE RECALC_DL_USER_INS(vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID%type, vUSER_ID DATA_LAYER_USERS.USER_ID%type, vRECURSION_COUNTER NUMBER) IS PROCEDURE RECALC_DL_USER_INS (vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID% type, vUSER_ID DATA_LAYER_USERS.USER_ID% type, vRECURSION_COUNTER NUMBER) IS
vTMP_NUMBER NUMBER(18) := 0; vTMP_NUMBER NUMBER (18): = 0;
CURSOR CHILD_DATA_LAYERS(vPARENT_ID DATA_LAYERS.ID%type) IS CURSOR CHILD_DATA_LAYERS (vPARENT_ID DATA_LAYERS.ID% type) IS
SELECT DLT.CHILD_ID SELECT DLT.CHILD_ID
FROM DATA_LAYER_TREE_NODES DLT FROM DATA_LAYER_TREE_NODES DLT
WHERE DLT.PARENT_ID = vPARENT_ID; WHERE DLT.PARENT_ID = vPARENT_ID;
BEGIN BEGIN
IF vRECURSION_COUNTER > 200 THEN IF vRECURSION_COUNTER> 200 THEN
RAISE_APPLICATION_ERROR(-20021, 'Too long recursion'); RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');
END IF; END IF;
SELECT COUNT(*) INTO vTMP_NUMBER SELECT COUNT (*) INTO vTMP_NUMBER
FROM DATA_LAYER_USERS RPE FROM DATA_LAYER_USERS RPE
WHERE RPE.DATA_LAYER_ID = vDATA_LAYER_ID AND RPE.USER_ID = vUSER_ID; WHERE RPE.DATA_LAYER_ID = vDATA_LAYER_ID AND RPE.USER_ID = vUSER_ID;
IF vTMP_NUMBER = 0 THEN IF vTMP_NUMBER = 0 THEN
-- вставляем строчку для текущей роли если такой нет - insert a line for the current role if there is none
INSERT INTO DATA_LAYER_USERS(DATA_LAYER_ID, USER_ID) INSERT INTO DATA_LAYER_USERS (DATA_LAYER_ID, USER_ID)
VALUES(vDATA_LAYER_ID, vUSER_ID); VALUES (vDATA_LAYER_ID, vUSER_ID);
END IF; END IF;
-- проход по дочерним - passage through subsidiaries
FOR CHILD_REC IN CHILD_DATA_LAYERS(vDATA_LAYER_ID) LOOP FOR CHILD_REC IN CHILD_DATA_LAYERS (vDATA_LAYER_ID) LOOP
SELECT COUNT(*) INTO vTMP_NUMBER SELECT COUNT (*) INTO vTMP_NUMBER
FROM DATA_LAYER_USERS UDL FROM DATA_LAYER_USERS UDL
WHERE UDL.DATA_LAYER_ID = CHILD_REC.CHILD_ID AND UDL.USER_ID = vUSER_ID; WHERE UDL.DATA_LAYER_ID = CHILD_REC.CHILD_ID AND UDL.USER_ID = vUSER_ID;
--проверка на отмену права в самой роли --check for revocation of the right in the role itself
IF vTMP_NUMBER = 0 THEN IF vTMP_NUMBER = 0 THEN
RECALC_DL_USER_INS(CHILD_REC.CHILD_ID, vUSER_ID, vRECURSION_COUNTER + 1); RECALC_DL_USER_INS (CHILD_REC.CHILD_ID, vUSER_ID, vRECURSION_COUNTER + 1);
END IF; END IF;
END LOOP; END LOOP;
END; END
-- Процедура для пересчета набора пользователей при удалении - Procedure for recounting user recruitment at deletion
PROCEDURE RECALC_DL_USER_DEL(vDATA_LAYER_ID DATA_LAYER_TO_USERS.DATA_LAYER_ID%type, vUSER_ID DATA_LAYER_TO_USERS.USER_ID%type, vRECURSION_COUNTER NUMBER) IS PROCEDURE RECALC_DL_USER_DEL (vDATA_LAYER_ID DATA_LAYER_TO_USERS.DATA_LAYER_ID% type, vUSER_ID DATA_LAYER_TO_USERS.USER_ID% type, vRECURSION_COUNTER NUMBER) IS
BEGIN BEGIN
IF vRECURSION_COUNTER > 200 THEN IF vRECURSION_COUNTER> 200 THEN
RAISE_APPLICATION_ERROR(-20021, 'Too long recursion'); RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');
END IF; END IF;
DELETE FROM DATA_LAYER_USERS RPE DELETE FROM DATA_LAYER_USERS RPE
WHERE RPE.USER_ID = vUSER_ID; WHERE RPE.USER_ID = vUSER_ID;
END; END
-- Процедура для пересчета набора пользователей при изменении указанных измерений. - A procedure for recalculating a set of users when changing specified dimensions.
PROCEDURE RECALC_DL_USER_EXT_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID%type, vUSER_ID DATA_LAYER_USERS.USER_ID%type) IS PROCEDURE RECALC_DL_USER_EXT_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vDATA_LAYER_ID DATA_LAYER_USERS.DATA_LAYER_ID% type, vUSER_ID DATA_LAYER_USERS.USER_ID% type)
BEGIN BEGIN
IF vROW_OPERATION_ID = 2 THEN IF vROW_OPERATION_ID = 2 THEN
RECALC_DL_USER_INS(vDATA_LAYER_ID, vUSER_ID, 0); RECALC_DL_USER_INS (vDATA_LAYER_ID, vUSER_ID, 0);
ELSIF vROW_OPERATION_ID = 4 THEN ELSIF vROW_OPERATION_ID = 4 THEN
-- при обновлении операции осуществляется удаление - when updating the operation, deletion is performed
RECALC_DL_USER_EXT_BY_ROW(8, vDATA_LAYER_ID, vUSER_ID); RECALC_DL_USER_EXT_BY_ROW (8, vDATA_LAYER_ID, vUSER_ID);
-- и добавить - and add
RECALC_DL_USER_EXT_BY_ROW(2, vDATA_LAYER_ID, vUSER_ID); RECALC_DL_USER_EXT_BY_ROW (2, vDATA_LAYER_ID, vUSER_ID);
ELSIF vROW_OPERATION_ID = 8 THEN ELSIF vROW_OPERATION_ID = 8 THEN
RECALC_DL_USER_DEL(vDATA_LAYER_ID, vUSER_ID, 0); RECALC_DL_USER_DEL (vDATA_LAYER_ID, vUSER_ID, 0);
END IF; END IF;
END; END
-- Процедура для пересчета набора пользователей при добавлении (вставке) узла в дерево слоев данных - Procedure for recalculating a set of users when adding (inserting) a node to the tree of data layers
PROCEDURE RECALC_CLIENT_DL_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vDATA_LAYER_ID DATA_LAYERS.ID%type, vCLIENT_ID DATA_LAYERS.CLIENT_ID%type) IS PROCEDURE RECALC_CLIENT_DL_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vDATA_LAYER_ID DATA_LAYERS.ID% type, vCLIENT_ID DATA_LAYERS.CLIENT_ID% type) IS
CURSOR CLIENT_USERS IS CURSOR CLIENT_USERS IS
SELECT CU.USER_ID SELECT CU.USER_ID
FROM CLIENT_TO_USERS CU FROM CLIENT_TO_USERS CU
WHERE CU.CLIENT_ID = vCLIENT_ID; WHERE CU.CLIENT_ID = vCLIENT_ID;
BEGIN BEGIN
FOR CLIENT_USER IN CLIENT_USERS LOOP FOR CLIENT_USER IN CLIENT_USERS LOOP
RECALC_DL_USER_EXT_BY_ROW(vROW_OPERATION_ID, vDATA_LAYER_ID, CLIENT_USER.USER_ID); RECALC_DL_USER_EXT_BY_ROW (vROW_OPERATION_ID, vDATA_LAYER_ID, CLIENT_USER.USER_ID);
END LOOP; END LOOP;
END; END
-- Процедура для пересчета слоев данных пользователей при изменении пользователя в клиенте (предприятии) - Procedure for recalculating user data layers when a user changes in a client (enterprise)
PROCEDURE RECALC_CLIENT_USER_BY_ROW(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID%type, vUSER_ID CLIENT_TO_USERS.USER_ID%type) IS PROCEDURE RECALC_CLIENT_USER_BY_ROW (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vCLIENT_ID CLIENT_TO_USERS.CLIENT_ID% type, vUSER_ID CLIENT_TO_USERS.USER_ID% type) IS
vTMP_NUMBER_ID NUMBER(18) := 0; vTMP_NUMBER_ID NUMBER (18): = 0;
vDATA_LAYER_ID NUMBER(18) := 0; vDATA_LAYER_ID NUMBER (18): = 0;
BEGIN BEGIN
SELECT COUNT(*) INTO vTMP_NUMBER_ID SELECT COUNT (*) INTO vTMP_NUMBER_ID
FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID; FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID;
IF vTMP_NUMBER_ID = 1 THEN IF vTMP_NUMBER_ID = 1 THEN
SELECT DL.ID INTO vDATA_LAYER_ID SELECT DL.ID INTO vDATA_LAYER_ID
FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID; FROM DATA_LAYERS DL WHERE DL.CLIENT_ID = vCLIENT_ID;
RECALC_DL_USER_EXT_BY_ROW(vROW_OPERATION_ID, vDATA_LAYER_ID, vUSER_ID); RECALC_DL_USER_EXT_BY_ROW (vROW_OPERATION_ID, vDATA_LAYER_ID, vUSER_ID);
END IF; END IF;
END; END
-- Процедура для пересчета набора пользователей при добавлении (вставке) узла в дерево слоев данных - Procedure for recalculating a set of users when adding (inserting) a node to the tree of data layers
PROCEDURE RECALC_DL_USER_EXT_NODE_INS(vPARENT_ID DATA_LAYERS.ID%type, vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER) IS PROCEDURE RECALC_DL_USER_EXT_NODE_INS (vPARENT_ID DATA_LAYERS.ID% type, vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER) IS
CURSOR CHILD_DATA_LAYERS(vPARENT_ID DATA_LAYERS.ID%type) IS CURSOR CHILD_DATA_LAYERS (vPARENT_ID DATA_LAYERS.ID% type) IS
SELECT CHILD_ID SELECT CHILD_ID
FROM DATA_LAYER_TREE_NODES RT FROM DATA_LAYER_TREE_NODES RT
WHERE RT.PARENT_ID = vPARENT_ID; WHERE RT.PARENT_ID = vPARENT_ID;
BEGIN BEGIN
IF vRECURSION_COUNTER > 200 THEN IF vRECURSION_COUNTER> 200 THEN
RAISE_APPLICATION_ERROR(-20021, 'Too long recursion'); RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');
END IF; END IF;
INSERT INTO DATA_LAYER_USERS(DATA_LAYER_ID, USER_ID) INSERT INTO DATA_LAYER_USERS (DATA_LAYER_ID, USER_ID)
SELECT vCHILD_ID, RPE.USER_ID SELECT vCHILD_ID, RPE.USER_ID
FROM DATA_LAYER_USERS RPE FROM DATA_LAYER_USERS RPE
WHERE RPE.DATA_LAYER_ID = vPARENT_ID AND RPE.USER_ID NOT IN ( WHERE RPE.DATA_LAYER_ID = vPARENT_ID AND RPE.USER_ID NOT IN (
--те что уже есть у дочернего слоя данных - what the child data layer already has
SELECT RPE.USER_ID SELECT RPE.USER_ID
FROM DATA_LAYER_USERS RPE FROM DATA_LAYER_USERS RPE
WHERE RPE.DATA_LAYER_ID = vCHILD_ID WHERE RPE.DATA_LAYER_ID = vCHILD_ID
); );
FOR CHILD_REC IN CHILD_DATA_LAYERS(vCHILD_ID) LOOP FOR CHILD_REC IN CHILD_DATA_LAYERS (vCHILD_ID) LOOP
RECALC_DL_USER_EXT_NODE_INS(vPARENT_ID, CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1); RECALC_DL_USER_EXT_NODE_INS (vPARENT_ID, CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1);
END LOOP; END LOOP;
END; END
-- Процедура для пересчета набора пользователей при удалении узла из дерева слоев данных - Procedure for recounting a set of users when deleting a node from the data layer tree
PROCEDURE RECALC_DL_USER_EXT_NODE_DEL(vCHILD_ID DATA_LAYERS.ID%type, vRECURSION_COUNTER NUMBER) IS PROCEDURE RECALC_DL_USER_EXT_NODE_DEL (vCHILD_ID DATA_LAYERS.ID% type, vRECURSION_COUNTER NUMBER) IS
CURSOR CHILD_DATA_LAYERS(vPARENT_ID DATA_LAYERS.ID%type) IS CURSOR CHILD_DATA_LAYERS (vPARENT_ID DATA_LAYERS.ID% type) IS
SELECT CHILD_ID SELECT CHILD_ID
FROM DATA_LAYER_TREE_NODES RT FROM DATA_LAYER_TREE_NODES RT
WHERE RT.PARENT_ID = vPARENT_ID; WHERE RT.PARENT_ID = vPARENT_ID;
BEGIN BEGIN
IF vRECURSION_COUNTER > 200 THEN IF vRECURSION_COUNTER> 200 THEN
RAISE_APPLICATION_ERROR(-20021, 'Too long recursion'); RAISE_APPLICATION_ERROR (-20021, 'Too long recursion');
END IF; END IF;
DELETE FROM DATA_LAYER_USERS RPE DELETE FROM DATA_LAYER_USERS RPE
WHERE RPE.DATA_LAYER_ID = vCHILD_ID AND RPE.USER_ID NOT IN ( WHERE RPE.DATA_LAYER_ID = vCHILD_ID AND RPE.USER_ID NOT IN (
SELECT DISTINCT USER_ID FROM SELECT DISTINCT USER_ID FROM
( (
SELECT CHILD_P.USER_ID FROM DATA_LAYER_USERS CHILD_P SELECT CHILD_P.USER_ID FROM DATA_LAYER_USERS CHILD_P
WHERE CHILD_P.DATA_LAYER_ID IN ( WHERE CHILD_P.DATA_LAYER_ID IN (
SELECT PARENT_ID SELECT PARENT_ID
FROM DATA_LAYER_TREE_NODES RT FROM DATA_LAYER_TREE_NODES RT
WHERE RT.CHILD_ID = vCHILD_ID WHERE RT.CHILD_ID = vCHILD_ID
) )
UNION ALL UNION ALL
SELECT CU.USER_ID SELECT CU.USER_ID
FROM DATA_LAYERS DL FROM DATA_LAYERS DL
join CLIENT_TO_USERS CU on DL.CLIENT_ID = CU.CLIENT_ID join CLIENT_TO_USERS CU on DL.CLIENT_ID = CU.CLIENT_ID
WHERE DL.ID = vCHILD_ID WHERE DL.ID = vCHILD_ID
) )
); );
FOR CHILD_REC IN CHILD_DATA_LAYERS(vCHILD_ID) LOOP FOR CHILD_REC IN CHILD_DATA_LAYERS (vCHILD_ID) LOOP
RECALC_DL_USER_EXT_NODE_DEL(CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1); RECALC_DL_USER_EXT_NODE_DEL (CHILD_REC.CHILD_ID, vRECURSION_COUNTER + 1);
END LOOP; END LOOP;
END; END
FUNCTION HAS_KEYMAKER_PERMISSION RETURN NUMBER IS FUNCTION HAS_KEYMAKER_PERMISSION RETURN NUMBER IS
BEGIN BEGIN
IF CTX_HAS_KEYMAKER_PERM = -1 THEN IF CTX_HAS_KEYMAKER_PERM = -1 THEN
SELECT COUNT(*) INTO CTX_HAS_KEYMAKER_PERM SELECT COUNT (*) INTO CTX_HAS_KEYMAKER_PERM
FROM KERNEL.ROLE_PERMISSIONS_EXT P FROM KERNEL.ROLE_PERMISSIONS_EXT P
JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID
WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 77; WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 77;
END IF; END IF;
RETURN CTX_HAS_KEYMAKER_PERM; RETURN CTX_HAS_KEYMAKER_PERM;
END; END
FUNCTION HAS_KEYMAKER_EDIT_PERMISSION(vUSER_ID NUMBER) RETURN NUMBER IS FUNCTION HAS_KEYMAKER_EDIT_PERMISSION (vUSER_ID NUMBER) RETURN NUMBER IS
BEGIN BEGIN
IF CTX_HAS_KEYMAKER_EDIT_PERM = -1 OR vUSER_ID = 110 THEN IF CTX_HAS_KEYMAKER_EDIT_PERM = -1 OR vUSER_ID = 110 THEN
SELECT COUNT(*) INTO CTX_HAS_KEYMAKER_EDIT_PERM SELECT COUNT (*) INTO CTX_HAS_KEYMAKER_EDIT_PERM
FROM KERNEL.ROLE_PERMISSIONS_EXT P FROM KERNEL.ROLE_PERMISSIONS_EXT P
JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID JOIN KERNEL.USERS U ON U.ROLE_ID = P.ROLE_ID
WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 87; WHERE U.ID = KERNEL.GET_UID AND P.PERMISSION_ID = 87;
END IF; END IF;
RETURN CTX_HAS_KEYMAKER_EDIT_PERM; RETURN CTX_HAS_KEYMAKER_EDIT_PERM;
END; END
FUNCTION GET_DL_RLS_PREDICATE(vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID%type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2 IS FUNCTION GET_DL_RLS_PREDICATE (vROW_OPERATION_ID KERNEL.ACC_OPERATIONS.ID% type, vALL_USER_LAYERS NUMBER) RETURN VARCHAR2 IS
vUSER_ID NUMBER(18) := 0; vUSER_ID NUMBER (18): = 0;
BEGIN BEGIN
vUSER_ID := KERNEL.GET_UID; vUSER_ID: = KERNEL.GET_UID;
IF HAS_KEYMAKER_EDIT_PERMISSION(vUSER_ID) = 1 OR vUSER_ID = 13 OR vUSER_ID = 14 OR vUSER_ID = 15 /*OR vUSER_ID = 110*/ THEN IF HAS_KEYMAKER_EDIT_PERMISSION (vUSER_ID) = 1 OR vUSER_ID = 13 OR vUSER_ID = 14 OR vUSER_ID = 15 / * OR vUSER_ID = 110 * / THEN
RETURN NULL; RETURN NULL;
END IF; END IF;
IF vROW_OPERATION_ID = 1 AND HAS_KEYMAKER_PERMISSION = 1 THEN IF vROW_OPERATION_ID = 1 AND HAS_KEYMAKER_PERMISSION = 1 THEN
RETURN NULL; RETURN NULL;
END IF; END IF;
/*IF vALL_USER_LAYERS = 1 THEN / * IF vALL_USER_LAYERS = 1 THEN
RETURN 'DATA_LAYER_ID in (select DATA_LAYER_ID from TABLE(PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYERS))'; RETURN 'DATA_LAYER_ID in (select DATA_LAYER_ID from TABLE (PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYERS))';
ELSE ELSE
RETURN 'DATA_LAYER_ID = PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYER'; RETURN 'DATA_LAYER_ID = PACK_DATA_LAYERS.GET_CURR_USER_DATA_LAYER';
END IF;*/ END IF; * /
IF vALL_USER_LAYERS = 1 THEN IF vALL_USER_LAYERS = 1 THEN
RETURN 'DATA_LAYER_ID in (SELECT UDL.DATA_LAYER_ID FROM DATA_LAYER_USERS UDL WHERE UDL.USER_ID = ' || to_char(vUSER_ID) || ')'; RETURN 'DATA_LAYER_ID in (SELECT UDL.DATA_LAYER_ID FROM DATA_LAYER_USERS UDL WHERE UDL.USER_ID =' || to_char (vUSER_ID) || ')';
ELSE ELSE
RETURN 'DATA_LAYER_ID in (select DL.ID RETURN 'DATA_LAYER_ID in (select DL.ID
from CLIENT_TO_USERS CU from CLIENT_TO_USERS CU
join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID join DATA_LAYERS DL on DL.CLIENT_ID = CU.CLIENT_ID
where CU.USER_ID = ' || to_char(vUSER_ID) || ')'; where CU.USER_ID = '|| to_char (vUSER_ID) || ')';
END IF; END IF;
END GET_DL_RLS_PREDICATE; END GET_DL_RLS_PREDICATE;
END PACK_DATA_LAYERS;END PACK_DATA_LAYERS;
»"
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.In conclusion, it should be noted that the information provided in the description are examples that do not limit the scope of the present invention defined by the claims. One skilled in the art will recognize that there may be other embodiments of the present invention consistent with the spirit and scope of the present invention.
Claims (25)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2018112651A RU2682010C1 (en) | 2018-04-10 | 2018-04-10 | Data in the database access separation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2018112651A RU2682010C1 (en) | 2018-04-10 | 2018-04-10 | Data in the database access separation method |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2682010C1 true RU2682010C1 (en) | 2019-03-14 |
Family
ID=65805784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2018112651A RU2682010C1 (en) | 2018-04-10 | 2018-04-10 | Data in the database access separation method |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2682010C1 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155403B2 (en) * | 2001-03-22 | 2006-12-26 | International Business Machines Corporation | System and method for leveraging procurement across companies and company groups |
US20080052193A1 (en) * | 2006-08-25 | 2008-02-28 | Alexander Katzner | Integrated Communication Systems and Methods for Purpose of Product Presentation and Direct Sales |
US20090172035A1 (en) * | 2007-12-31 | 2009-07-02 | Pieter Lessing | System and method for capturing and storing casino information in a relational database system |
WO2016018450A1 (en) * | 2014-07-30 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Distributed segmented file systems |
RU2656739C1 (en) * | 2017-10-04 | 2018-06-06 | Общество с ограниченной ответственностью "ИНТЕЛЛЕКТУАЛЬНЫЙ РЕЗЕРВ" | Data storage method and system |
-
2018
- 2018-04-10 RU RU2018112651A patent/RU2682010C1/en not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155403B2 (en) * | 2001-03-22 | 2006-12-26 | International Business Machines Corporation | System and method for leveraging procurement across companies and company groups |
US20080052193A1 (en) * | 2006-08-25 | 2008-02-28 | Alexander Katzner | Integrated Communication Systems and Methods for Purpose of Product Presentation and Direct Sales |
US20090172035A1 (en) * | 2007-12-31 | 2009-07-02 | Pieter Lessing | System and method for capturing and storing casino information in a relational database system |
WO2016018450A1 (en) * | 2014-07-30 | 2016-02-04 | Hewlett-Packard Development Company, L.P. | Distributed segmented file systems |
RU2656739C1 (en) * | 2017-10-04 | 2018-06-06 | Общество с ограниченной ответственностью "ИНТЕЛЛЕКТУАЛЬНЫЙ РЕЗЕРВ" | Data storage method and system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11914620B2 (en) | System and method for aggregating values through risk dimension hierarchies in a multidimensional database environment | |
US9152662B2 (en) | Data quality analysis | |
EP3365810B1 (en) | System and method for automatic inference of a cube schema from a tabular data for use in a multidimensional database environment | |
US7657505B2 (en) | Data retrieval from a database utilizing efficient eager loading and customized queries | |
Hobbs et al. | Oracle 10g data warehousing | |
US20080208918A1 (en) | Efficient data handling representations | |
US20140244573A1 (en) | Data warehouse with cloud fact table | |
US20050038629A1 (en) | Pricing of enterprise information resource management systems | |
US20180174164A1 (en) | Predictive Analysis of Transactional Data | |
US20170195449A1 (en) | Smart proxy for datasources | |
US20180203914A1 (en) | Document Clustering In In-Memory Databases | |
Desamsetti | Relational Database Management Systems in Business and Organization Strategies | |
RU2682010C1 (en) | Data in the database access separation method | |
Bruni et al. | Optimizing DB2 queries with IBM DB2 analytics accelerator for z/OS | |
US10409788B2 (en) | Multi-pass duplicate identification using sorted neighborhoods and aggregation techniques | |
US11972018B2 (en) | Data categories for purpose-based processing of personal data | |
Mazumdar et al. | The Data Lakehouse: Data Warehousing and More | |
Gupta et al. | Demystifying Databases: Exploring their Use Cases | |
US20110106667A1 (en) | System for object oriented financial accounting | |
Siddesh et al. | Driving big data with hadoop technologies | |
Chinchilla et al. | MCSA SQL 2016 BI Development Exam Ref 2-pack | |
Damus Ros | A Business Intelligence Solution, based on a Big Data Architecture, for processing and analyzing the World Bank data | |
US20060190405A1 (en) | Utilizing distribution types to assign attributes to distribution lines in an accounting system | |
Tirumala et al. | E-Commerce applications using Web-Services | |
Jyoti et al. | Salesforce Data Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20200411 |