WO2003019414A1 - Computer system and document management method - Google Patents

Computer system and document management method Download PDF

Info

Publication number
WO2003019414A1
WO2003019414A1 PCT/FR2002/002907 FR0202907W WO03019414A1 WO 2003019414 A1 WO2003019414 A1 WO 2003019414A1 FR 0202907 W FR0202907 W FR 0202907W WO 03019414 A1 WO03019414 A1 WO 03019414A1
Authority
WO
WIPO (PCT)
Prior art keywords
document
server
tag
account
file
Prior art date
Application number
PCT/FR2002/002907
Other languages
French (fr)
Inventor
René Ebel
Pierre Thorel
Original Assignee
France Telecom
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by France Telecom filed Critical France Telecom
Publication of WO2003019414A1 publication Critical patent/WO2003019414A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions

Definitions

  • the present invention relates to the field of computer systems, in particular servers suitable for document management.
  • a computer network with remote data communication for example the Internet
  • the documents which one wishes to make available to other users are presented in a particular form generally called markup language.
  • the HTML markup language defines a set of fixed tags which depends on the language version and which is oriented towards a given presentation. It has enabled the development of the exchange of hypertextual • data through the Internet. Different HTML standards have defined how browsers should represent HTML data. For more information on HTML one can refer to the site http://www.w3.org.
  • XML language is a language for constituting data adapted to represent structured documentation.
  • a so-called structured document is a document that contains both text and images, but also indications of the role played by each element of text: the title of a paragraph, the caption of an image, the content of a brand. footer.
  • the XML language or Extensible Markup Language makes it possible to materialize the structure of the document and to focus on the role of the elements, the semantics, more than on the form of representation.
  • the XML language does not fix either the semantics or the set of tags used. Viewing or printing an XML document requires defining how the data is displayed or printed, programmatically or using style sheets.
  • the XML language makes it possible to enter or update a single content once without worrying about the presentation or future processing and without having to enter labels such as "author”, “year of publication”, etc., without. having to put titles in italics, in other words exactly the way you would feed a database.
  • XML also makes it possible to automatically generate multiple presentations with possible sorting, selection, reorganization, automatic generation of wording, table of contents, index, etc .; and this on multiple media - screens, papers, Braille terminals, etc.
  • the existing XML language servers are essentially designed to facilitate the search for information on the basis of any criteria.
  • the query languages associated with XML for example of the XQL, SXQL, XUPDATE, etc. type designate the tags from a path description in the XML tree.
  • this operating mode is ill suited to reliable and fine management of access rights to documents or parts of documents.
  • the tree structure is constantly evolving in a multiuser context with the addition or deletion of sub trees by the different users, and depends on access rights.
  • either a tag comprising two sub-tags of lower rank to which three users access simultaneously at a given time or at least in a given state at close times.
  • the first user adds a third sub-tag to the tag and returns the tag to the server by means of an adapted request
  • the second user removes the first sub-tag from the tag and returns the tag to the server by means of a request adapted at a later time to the addition of the third tag.
  • the third user sends a request to modify the second sub-tag.
  • the server will take into account the request of the third user by applying it to the third sub-tag and not to the second because of the relative classification of sub-tags. This relative classification of sub-tags also poses difficulties in the context of filtering users according to their right of access.
  • the invention provides a document sharing system suitable for a multi-user context and for managing access rights.
  • the invention proposes a system which makes it possible to solve the problems mentioned above, to carry out unambiguously the updates carried out by different users and thus to allow them to work simultaneously on different tags of the same document.
  • the computer system capable of managing documents comprises at least one server, at least one client station capable of exchanging data with the server, at least one document stored by the server and. capable of being sent by the server to a specific client station, and a means of absolute designation of the document, so that access to said document is secure.
  • the client station can be another server, a computer, for example of the PC type, a pocket computer, of the personal organizer type, a telephone station equipped with means of communications.
  • Internet a radiotelephone, for example of the WAP type and more generally any means of data processing equipped with means of communication with a network.
  • the system comprises means for absolute designation of tag or part of the document, each tag being associated with a label, a label being associated with a single tag.
  • the system comprises means for generating a document or tag request for a document.
  • the requests can be independent of each other.
  • the system comprises a communication network between the server and the client station.
  • At least one label is assigned to at least one document.
  • At least one tag is uniquely identified by a label. All tags can be identified by a label.
  • the invention also provides a computer server capable of managing documents and comprising means for exchanging data with at least one client station, means for storing at least one document, means for sending a document to a specific client station, and a means of absolute designation of the document, so that access to said document is secure.
  • the server comprises means for assigning a unique label to each tag or part of the document.
  • the invention also provides a computer program comprising program code means for operating the server as described above, when said program is running on a processing means or a computer.
  • the invention also proposes a document management method, in which data is exchanged between at least one server and at least one client station, the server storing at least one document and sending it to a determined client station, the document being designated in an absolute manner so that access to said document is secure.
  • a document is made available to several client stations simultaneously.
  • a document is divided into tags or parts, each tag being associated with a label and a label being associated with a single document tag.
  • a label is associated with a document tag in a stable manner over time.
  • the invention also provides a computer program comprising program code means for implementing the steps of the above method, when said program is operating in a server processing means or on a computer.
  • the invention allows efficient document sharing thanks to the unique and systematic labeling by the server of all the document tags.
  • the labeling makes the documents a little more voluminous but leads to a concise and unambiguous expression of the requests for modifications. This removes any conflicts or uncertainties during modification requests or access requests.
  • Each user can indicate the version of the tag of the document which he has, which allows the server by comparison with version numbers associated with each tag on the common document, to arbitrate the concurrency.
  • the invention proposes to express access rights in the form of attributes.
  • the various embodiments of the invention integrate efficiently in XML format and make it possible to provide many useful functionalities on a document server such as association of files or documents, administration of accounts, notions of domains, application. style sheets ...
  • the invention applies in an interesting manner to telemedicine applications aiming to share the medical records of patients between a group of health professionals.
  • the access rights management functionalities prove to be extremely useful and the sharing of medical information meets a need both for health organizations and for the practitioners themselves.
  • FIG. 1 is a diagram of the architecture of the system
  • - Figure 2 is a block diagram of software according to one aspect of the invention
  • - Figure 3 is a diagram of the system according to the different types of client;
  • FIG. 5 is a flowchart showing the sequence selected for the consultation of a medical type client file from a WAP mobile phone.
  • a server 1 is associated with a large capacity data storage 2, for example a hard disk which has been represented here externally but which could be integrated into the server 1.
  • the server 1 is also associated with an http server 3, an electronic mail server 5 and another server 5 of unspecified standard.
  • the http server 3 is connected to a WAP gateway 6.
  • These different servers or gateways 3 to 6 are each provided for communicating with client workstations, one of which is referenced 7, via a communication network 8 Of type
  • the server 1 comprises a memory -9, a communication bus 10, a communication interface 11 with external servers, in particular the servers 3 to 5, an interface 12 with the data storage 2, a calculation and processing unit 13 including at least
  • a microprocessor and a memory 14 which may be smaller than the memory 9 but with reduced access time.
  • the server 1 is equipped with a plurality of software stored in the memory 9 and which can also be stored in the memory 14 to be executed by the unit 13.
  • the memories. 9 and 14, the interfaces 11 and 12 0 and the unit 13 communicate by means of the communication bus 10.
  • the interface 11 can be of the CGI type.
  • a document, for example in XML format, of the user is stored in the form of a file.
  • the storage organization is illustrated in FIG. 2.
  • the software 15 stored in the memory 9 and / or 14 and executed 5 by the unit 13 makes it possible to process such documents.
  • a document 16 is capable of being sent or received by the software 15 and stored in the form of a file, in the data storage 2. Certain information originating from the document 16 must be stored in a relational database 18 via of a basic management system of
  • the server 1 assigns a version counter to each XML document and marks each modified or created tag with the current value of the counter, in the form of an attribute noted “N”.
  • Each user who requests a file from the server is informed of the current value of the counter, attribute "N" at the root level. It must restore this value during a modification operation.
  • the server compares the value indicated with the value it has for the tags affected by the modifications or creations. For a given tag, the server actually checks the versions of all the parent tags and all the child tags. If one of the versions is higher than the version of the user, the modification request is rejected. In other words, a field can only be modified if the value which was available when the field was read has not been modified in the meantime.
  • the table below illustrates the version management algorithm.
  • the user is not informed of the version of each tag. He only knows the version of the whole file.
  • the expected algorithm performs optimistic locking.
  • the pessimistic locking technique that is to say the initial locking of the parts of the document intended to be modified, can be carried out by the user by playing on the access rights, for example by placing an exclusive right of writing on the parties concerned in the file before proceeding to their modifications, then restoring the initial rights after the operation.
  • the storage of the versions also allows the server 1 to locate the modified tags with respect to an interior version of the document. This indicates to the user the “file” tags modified compared to a local version on a client computer. However, it is not possible to reconstitute the list of deleted tags on the server. But this information can be easily deduced by the customer himself.
  • the invention proposes a document server in XML or equivalent format intended to allow the sharing of these documents by a set of users.
  • This server is placed at the center of a client server architecture and provides services comparable to those of a relational database management system, but with XML documents. These services may include defining a user account, storing documents in a transparent manner for the user, managing access to documents according to precise rules, searching for documents on the basis of certain criteria, executing transactional requests ...
  • the adoption of the XML format to represent the data also makes it possible to effectively arbitrate the write accesses to the various parts of a document, to very finely fix the access rights, to a any level of the XML tree, associating binary files with documents, or even giving direct access to the server to a wide range of platforms and client software.
  • the invention minimizes the constraints imposed on hosted XML documents while making the server architecture independent of the data processed.
  • the server function invocation protocol is as simple as possible. It is therefore provided for requests that are independent of each other, in the absence of a notion of session, a transactional operation, that is to say that a request is either canceled, or executed in full and if the description is excepted attached files which can be of varied format, a purely ASCII format for the requests, and, moreover, of XML type, as for the documents handled.
  • the invention of functions through XML requests is in line with the principle of the SOAP protocol (SIMPLE OBJECT ACCESS PROTOCOL in English). A simpler formulation specific to the processing of XML documents can be chosen. Unless the client or user requests a binary file associated with a document, the server also responds with an XML message.
  • Any software capable of dialoging in XML format with the server can a priori play the role of client.
  • a mechanism for transforming the XML response using style sheets can be integrated into the server.
  • the simplicity of the access to the server and the possibilities of applying stylesheets lead to a wide variety of potential customers which can be another server, a computer, a handheld computer, a Web telephone, a Wap radio telephone, etc.
  • the role of the server is to allow the sharing of XML documents between several users.
  • the aim is also to ensure high operating security, to rigorously manage access and in particular questions of access rights and access competition, to open the system to as wide a range of users as possible.
  • client platforms and software as well as minimizing the constraints imposed on hosted XML documents.
  • the server provides among other things the user account management service with administration functions (creation, modification, deletion, list %), user profile, home domain and authentication by smart cards, and management of XML documents with administration, arbitration functions concurrent access, control of access rights with data filtering, management of attached files and application of style sheets to the document.
  • ⁇ Text> This is ⁇ Underlined> not ⁇ / Underlined> allowed. ⁇ /Text> and the order in which the tags are written does not matter. All documents or objects managed by the server are uniquely designated by identifiers generated by the server itself.
  • the format of the identifiers is that of a base 36 number (composed of the numbers from 0 to 9 and the letters from A to Z).
  • File identifiers also include an alphanumeric extension that indicates the type, for example ".doc".
  • the application hosted on the server is accessible with the HTTP or HTTPS protocols.
  • the nature of the protocol does not affect the operation, so other access sites can be considered, for example with an SMTP protocol for one ; delayed access, by email ...
  • Any software capable of generating a request in XML format, interpreting the response in the same format, except when reading a file associated with a document, and communicating via the network with the appropriate protocol (HTTP, HTTPS, WAP , SMTP ...) is likely to play the role of client when executed by a computing and processing unit.
  • HTTP HyperText Transfer Protocol
  • WAP Wireless Fidelity
  • SMTP Simple Stream Transfer Protocol
  • the server is associated with an XSL stylesheet processor which can transform the response XML to HTML or WML.
  • the style sheet to be used is indicated in the request, under the form of a URL or file name local to the server.
  • the data relating to the administration of the system are represented in the form of XML documents of imposed structure, unlike that of the user documents described below.
  • a domain is characterized by a unique name according to the following syntax:
  • An account allows a user to connect to the server. It is identified by the couple (count name; domain), by its internal identifier (attribute I at the root) or by a key number.
  • the value of the ⁇ password> tag corresponds to f (P), that is to say to a scrambling function applied to the password.
  • the length of this value can be between 10 and 25 characters. This field is not returned by the server. It is created by client software to change the account password.
  • All the fields in the ⁇ Account / trace> block are generated by the server and cannot be modified.
  • the tags ⁇ request> and ⁇ service> recall certain parameters of the last access to the server with the account considered. This information can be useful for managing a recovery after a connection break during a request.
  • the request account identification is not intentionally traced.
  • the domain and the profile can be designated by their name or the attribute ⁇ I>. Any user of an account is authorized to view his own ⁇ account> folder and to change his password.
  • the concept of key has been introduced to allow rapid identification of accounts from a single login and in 'some cases authentication of the user.
  • a key is characterized by a type, a unique identifier for a given type (serial number, carrier number, ...), and, optionally, a cryptographic authentication protocol.
  • a key is described with the following syntax:
  • the user profile makes it possible to associate a certain number of rights, such as access to documents, administration of accounts, etc. and constraints such as authentication to each account.
  • rights such as access to documents, administration of accounts, etc.
  • constraints such as authentication to each account.
  • the user profile can be defined as follows:
  • the ⁇ Profile / Authentication> block defines the mandatory parameters for the authentication of accounts with this profile.
  • a value ⁇ yes> for the ⁇ password> tag indicates, for example, the need to present a non-empty password for access to the account.
  • the type must correspond to an authentication key.
  • any key of the indicated type opens access to the account. But this key does not, by itself, identify the account because it is necessary to specify an account name and a domain name. If the attribute ⁇ I> is present (with an empty value) this means that a precise key number is required at the account level. In this case, the key allows both identification and authentication of the account.
  • the ⁇ Profile / Account> block describes the account administration possibilities linked to the profile.
  • the value ⁇ YES> restricts the administration rights to the domain in which the account belongs.
  • the ⁇ Profile / Account / List> block conditions access to the list of accounts.
  • the ⁇ Profile / Account / Authentication> block makes it possible to impose an authentication of the users of the administered accounts.
  • Manageable profiles are specified in the block
  • the ⁇ Prof il / Doc> block allows you to prohibit access to this type of document in the absence of a ⁇ Doc> tag corresponding to a type of document.
  • the ⁇ Profile / Doc / List> block specifies whether the list of documents is accessible to the user.
  • the ⁇ Profile / Doc / Authentication> block indicates in the event of a value
  • the identification and authentication data required for this account must be indicated in the request.
  • the ⁇ Profile / Doc / Read> and ⁇ Profile / Doc / Write> blocks are used to define the accesses.
  • value ⁇ NONE> no access is not authorized
  • ⁇ PERSONAL> access is authorized to accessible parts of personal files as defined by the access rights defined in the documents.
  • ⁇ TOUS> access to the accessible parts of all documents is authorized.
  • all the paths are accessible in read and write, that is to say in modification.
  • meta-document Any type of XML document hosted by the server must be described beforehand by a document called a "meta-document". This requirement is linked to the need to be able to manage lists of documents effectively.
  • a meta-document describes in fact the elements of the documents that one wishes to appear in the lists and on the basis of which one makes the selections. The structure of a meta-document is illustrated below.
  • the path to the item in the document is empty, the name of the root tag appears in the list.
  • the usual size of the elements as well as the description field are not used by the server. This optional information is simply intended to facilitate the formatting of any list of documents by client workstations. If the maximum size is exceeded, the information is truncated in the list but not in the document. It is possible to list attribute values or to place attribute values in the list. It suffices to indicate the name of the attribute and the rest of the path, with the following syntax: Path / ® name of the Attribute A list can include several ⁇ Ref> tags. Access to the elements of the lists in the documents does not take account of any access rights specified in these documents.
  • Each tag in a document is automatically marked by the server with a unique identifier, in the form of an attribute "B" which then allows the client software to effectively designate any tag in the document to make a modification.
  • ⁇ tag B "tag ID">. . . ⁇ /balise>
  • the "A" attribute allows the user to specify the access rights on a part of the document.
  • the users authorized to access this tag can be described by their account, their profile or their domain, more precisely by their account for a specific user, by their profile for users with a specific and specific profile and by a domain for all users of a domain. You can specify a whole list of users. We can have for example:
  • Access restrictions are combined by traversing paths in the document from root.
  • Access restrictions are combined by traversing paths in the document from the root.
  • the principle of using the ⁇ Ref> tag has already been described below.
  • a user of a given domain cannot create or modify a reference on another domain.
  • deletion is authorized for
  • the principle of using the ⁇ Ref> tag has already been described above.
  • a user of a given domain cannot create or modify a reference on another domain.
  • erasure is authorized to avoid deadlock situations.
  • the ⁇ Ref> tag constitutes a sheet 5 in the XML tree.
  • the ⁇ File> tag is used to refer to a file external to the document managed as a whole by the server.
  • the file tag uses attributes and "I” and "S” generated by the server, see below.
  • the ⁇ file> tag usually does not contain a value. 10
  • the path tags declared in the meta-document must be respected if you want their value to appear in the list of documents.
  • the message indicates at least one error code:
  • the version attribute “N” requires the client to indicate for 0 which version of the server it was designed. This allows the server to reject obsolete requests, by inviting the user to update its IT resources.
  • the first request sent to the server by a user is generally that which allows the description of the user's account to be obtained, which is advantageous for directly using the account identifier in subsequent requests and for immediately checking the accuracy of access parameters.
  • the server request and response can take the following form
  • the list query is used to obtain the list of documents of a given type. It is possible to filter this list by indicating values for the elements to be listed. A filter consists of the same paths as those indicated for the list in the meta-document. A filter value ending with "*" indicates any sequence of characters.
  • the file In response to a request from. reading a document, the file sends the binary data of the file except in case of error or it sends an XML error message.
  • Deleting or archiving a document deletes the archiving of files associated with this document. If the delete or archive operation went well, the server response is minimized.
  • the request for deletion or archiving and the response from the server can appear 1 as follows:
  • the data relating to the file is added following the creation request, using any sequence of characters as a separator, for example.
  • the i th block is assumed to correspond to the i th “file” tag.
  • Each of these tags must have an "I” attribute that tells the server the extension (three letters) to give to the file.
  • the "I” attribute is supplemented by a name to constitute a unique file identifier.
  • S size of the transmitted file is indicated in an "S" attribute:
  • the modification of a document is carried out by sending the server the sequence of elementary modification orders to be carried out. If the files are modified or created, they should also be sent to the server.
  • the principle is the same as for the creation of documents.
  • the data are classified following the request, in the order defined by the "File" tags in the XML part. Instead of the content of the document, a list of elementary orders of modifications to be sent is sent. If there is no error, the server responds by returning the content of the modified XML document. We also find the file renaming list, the principle of which is preserved.
  • the server response will contain a modified file list which contains the names of the files that have been created or modified between the document version indicated by the server (Request / doc / Arobase N) and that of the document returned by the server (Service / tag / root / @ N).
  • the information is interesting in the case of a client who allows local work, since he thus knows which files are to be updated. The list can ignore the last modification, made by the customer himself. There is no list of files deleted since the customer can easily create it himself, in particular by comparing the “File” tags before and after modification of the document.
  • ⁇ MB "identifier of the tag to be modified" (optional) attribute name t- 'value "attribute name ⁇ ' 'value” ...> new subtree (without tag identifiers) or value s' it is a leaf
  • ⁇ C B "identifier of the father tag”> new sub-tree (without tag identifiers) or value if it is a sheet ⁇ /C>
  • the server would have returned an error message indicating concurrency:
  • the tag causing the error is specified in the error message in the form:
  • the system also includes an account authentication mechanism using keys.
  • keys We mean here, in general, an authentication mechanism using asymmetric keys, based on solving challenges: certificate, smart cards ...
  • the user has the following information: a unique identifier also called an identifier of keys marked Kid, a public key Kpub, a private key Kpriv and Daccrd accreditation data.
  • the user sends the values of the key identifier, the public key and the accreditation data to the server.
  • the redundancy contained in this data allows the server to check its validity.
  • the server generates a random sequence denoted D which it sends back to the client.
  • the triplet of value identifier of key, public key and random sequence is memorized by the server;
  • Each server response to a client request contains a new random sequence value.
  • the user encrypts this value with his private key and returns the result in the following request for it to be accepted.
  • the server can decrypt the result and verify that it has found the value of the random sequence, also stored, see the table below:
  • the first user request is constructed as follows:
  • the server If this data is deemed valid, the server returns the first challenge under the form of an attribute "K" (the value of the challenge is expressed in base 64), as well as the account identifier:
  • the client indicates each time its response (in base 64) to the challenge of the previous request in a K attribute at the level of the “Request / Account / Key” tag:
  • the server does not generate a new challenge and the authentication protocol should be resumed at its beginning.
  • the account parameters are indicated in the ⁇ Param> block of the request.
  • the value of the random sequence is the same for the two accounts and corresponds to the value returned during the authentication of the account of the. user.
  • two rules are applied: in the absence of restriction of read right, the right is taken for granted, in the absence of restriction of write right, the right is acquired for users authorized to read.
  • the algorithm for evaluating access rights at the beacon level as executed by the server can be, in a simplified manner, as follows:
  • the server is also expected to understand them. following two functions for managing upper and lower access from a given tag. These functions allow you to manage the nesting of tags.
  • Acceslnf function (Oper: "R” or "W”; B: Tag; User: User): boolean If there is a tag B 'daughter of B (at any level) such as
  • the invention advantageously applies in the medical field, more precisely in the field of sharing medical records of patients between health professionals.
  • the use of XML format and the importance given to rigorous management of access rights are particularly advantageous.
  • the invention applies both to central server computer systems and to distributed systems with a main server and a plurality of secondary servers. It is expected that all users regardless of their software will access the same documents on the server.
  • the patient record constitutes the main document for this application of the invention.
  • Two documents of lesser importance, entitled professional file and establishment file may contain summary information relating to health professionals and healthcare establishments. These secondary files make it possible to avoid the repetition of information in each patient file with the difficulties of updating that this would imply.
  • Whatever the client software the procedure for accessing information likely to be delivered by the server remains essentially the same.
  • the user is first invited to identify himself and then accesses the list of patients, filtered according to criteria such as name, first name, sex, date of birth ... This list allows him to select the patient file which is of particular interest. Such a file may then contain links to other professional or establishment type files. ⁇ professional> and ⁇ establishment> tags can be provided but whose management is exclusively the responsibility of the user and not of the server. great freedom is left to the user to structure the data.
  • FIG. 4 the organization chosen for the documents is illustrated.
  • the documents entitled “account”, “profile” and “domain” have an imposed form while the user benefits from a great latitude for the other documents, for example the documents “patient”, “professional”, “establishment”.
  • “Heavy” client workstation is understood to mean a client workstation equipped with an application requiring an installation step on the workstation.
  • This type of client workstation offers many processing possibilities such as work - in offline mode following a local copy of documents, a richer man-machine interface which facilitates sometimes complex interactions to modify files (specifications access rights) editions of tables ...) administer accounts and profiles, etc. Even if the software is downloaded, the download volume remains quite reasonable in the order of a few megabytes. In addition, the updates are less bulky.
  • a client workstation accessing the server through an HTML browser is said to be "Light" and benefits from fewer processing possibilities. However, no installation or update is required. Just enter the home page URL in the browser.
  • the client workstation is open to all systems and its interfaces are familiar to Internet users. In general, a "Light" client workstation is well suited to quickly consulting a file from any workstation.
  • FIG. 5 shows the sequence of interfaces or screens which has been provided for consulting a patient file from an organizer or from a mobile phone.
  • the invention therefore makes it possible to share documents, in particular XML documents, while effectively managing concurrency and access rights at any level of the tree structure. This allows users to work simultaneously on different parts of the same document.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The invention relates to a computer system that can be used to manage documents. The inventive system comprises: at least one server; at least one client station which can exchange data with the server; at least one document which is stored by the server and which can be sent by the server to a determined client station; and a means for the absolute designation of the document, such that the access to said document is secure.

Description

Système informatique et procédé de gestion de documents Computer system and document management method
La présente invention relève du domaine des systèmes informatiques, notamment des serveurs aptes à la gestion de documents. Dans le cadre d'un réseau informatique avec communication de données à distance, par exemple le réseau Internet, les documents que l'on souhaite mettre à disposition d' autres utilisateurs sont présentés selon une forme particulière généralement appelée langage de balisage. Le langage de balisage HTML définit un jeu de balises fixes qui dépend de la version du langage et qui est orienté vers une présentation donnée. Il a permis le développement de l' échange de données • hypertextuelles au travers d'Internet. Les différentes normes HTML ont défini comment les butineurs (browsers) doivent représenter des données HTML. Pour plus de renseignements sur HTML on peut se référer au site http://www.w3.org.The present invention relates to the field of computer systems, in particular servers suitable for document management. In the context of a computer network with remote data communication, for example the Internet, the documents which one wishes to make available to other users are presented in a particular form generally called markup language. The HTML markup language defines a set of fixed tags which depends on the language version and which is oriented towards a given presentation. It has enabled the development of the exchange of hypertextual • data through the Internet. Different HTML standards have defined how browsers should represent HTML data. For more information on HTML one can refer to the site http://www.w3.org.
Plus récemment, a été développé le langage XML qui est un langage de constitution de données adaptées pour représenter de la documentation structurée.More recently, the XML language has been developed which is a language for constituting data adapted to represent structured documentation.
Un document dit structuré est un document qui contient à la fois du texte, des images mais aussi des indications du rôle joué par chaque élément de texte : le titre d'un paragraphe, la légende d'une image, le contenu d'une marque de bas de page. Le langage XML ou Langage extensible de balisage (extensible Markup Language en langue anglaise) permet de matérialiser la structure du document et de se focaliser sur le rôle des éléments, la sémantique, plus que sur la forme de représentation. Le langage XML ne fixe ni la sémantique, ni le jeu de balises utilisé. L' affichage ou l'impression d'un document XML impose de définir comment les données s' affichent ou s'impriment, par programme ou soit utilisant des feuilles de style. Dans le langage XML, les informations doivent être soit encadrées par des balises ouvrantes et fermantes avec imbrication possible, soit incluses à l'intérieur même des balises par exemple : <LIVRE SUJET = XML>. Ici l' attribut SUJET de l'élément LIVRE a la valeur « XML ». La norme XML peut se trouver à l'adresse . httpr/Λv w. w3.org/TR/REC- OXMLA so-called structured document is a document that contains both text and images, but also indications of the role played by each element of text: the title of a paragraph, the caption of an image, the content of a brand. footer. The XML language or Extensible Markup Language (extensible Markup Language in English) makes it possible to materialize the structure of the document and to focus on the role of the elements, the semantics, more than on the form of representation. The XML language does not fix either the semantics or the set of tags used. Viewing or printing an XML document requires defining how the data is displayed or printed, programmatically or using style sheets. In the XML language, the information must either be framed by opening and closing tags with possible nesting, or included inside the tags for example: <TOPIC BOOK = XML>. Here the SUBJECT attribute of the BOOK element has the value "XML". The XML standard can be found at. httpr / Λv w. w3.org/TR/REC- OXML
Le langage XML permet de saisir ou de mettre à jour une seule fois un contenu sans se soucier de la présentation ou du traitement futur et sans avoir à saisir des libellés tels que « auteur », « année de parution », etc, sans . avoir à mettre les titres en italique, en d' autres termes exactement à la manière dont on alimenterait une base de données. Le langage XML permet également de générer ensuite automatiquement de multiples présentations avec éventuellement des tris, sélection, réorganisation, génération automatique de libellé, table des matières, index, etc ; et ce sur de multiples médias-, écrans, papiers, terminaux braille, etc.The XML language makes it possible to enter or update a single content once without worrying about the presentation or future processing and without having to enter labels such as "author", "year of publication", etc., without. having to put titles in italics, in other words exactly the way you would feed a database. XML also makes it possible to automatically generate multiple presentations with possible sorting, selection, reorganization, automatic generation of wording, table of contents, index, etc .; and this on multiple media - screens, papers, Braille terminals, etc.
Les serveurs existants en langage XML sont essentiellement conçus en vue de faciliter la recherche d'informations sur la base de critères quelconques. Les langages de requête associés à XML, par exemple de type XQL, SXQL, XUPDATE, etc désignent les balises à partir d'une description de chemin dans l' arborescence XML.The existing XML language servers are essentially designed to facilitate the search for information on the basis of any criteria. The query languages associated with XML, for example of the XQL, SXQL, XUPDATE, etc. type designate the tags from a path description in the XML tree.
Or, ce mode de fonctionnement est mal adapté à une gestion fiable et fine de droits d' accès à des documents ou à des parties de documents. En effet, l' arborescence est en constante évolution dans un contexte multiutilisateur avec ajout ou effacement de sous arbres par les différents utilisateurs, et dépend des droits d' accès.However, this operating mode is ill suited to reliable and fine management of access rights to documents or parts of documents. In fact, the tree structure is constantly evolving in a multiuser context with the addition or deletion of sub trees by the different users, and depends on access rights.
A titre d'exemple soit une balise comprenant deux sous balises de rang inférieur auquel trois utilisateurs accèdent simultanément à un instant donné ou à tout le moins dans un état donné à des instants proches. Supposons que le premier utilisateur ajoute une troisième sous balise à la balise et renvoie la balise au serveur au moyen d' une requête adaptée, puis que le deuxième utilisateur supprime la première sous balise de la balise et renvoie la balise au serveur au moyen d' une requête adaptée à un instant ultérieur à l' ajout de la troisième sous balise. Puis qu' enfin, le troisième utilisateur envoie une requête de modification de la deuxième sous balise. Le serveur prendra en compte la requête du troisième utilisateur en l' appliquant à la troisième sous balise et non pas à la deuxième en raison du classement relatif des sous balises. Ce classement relatif des sous balises pose également des difficultés dans le cadre du filtrage des utilisateurs selon leur droit d' accès.For example, either a tag comprising two sub-tags of lower rank to which three users access simultaneously at a given time or at least in a given state at close times. Suppose that the first user adds a third sub-tag to the tag and returns the tag to the server by means of an adapted request, then that the second user removes the first sub-tag from the tag and returns the tag to the server by means of a request adapted at a later time to the addition of the third tag. Then finally, the third user sends a request to modify the second sub-tag. The server will take into account the request of the third user by applying it to the third sub-tag and not to the second because of the relative classification of sub-tags. This relative classification of sub-tags also poses difficulties in the context of filtering users according to their right of access.
L'invention propose un système de partage de documents adapté à un contexte multiutilisateurs et à la gestion des droits d' accès. L'invention propose un système qui permet de résoudre les problèmes évoqués ci-dessus, de réaliser sans ambiguïté les mises à jour effectuées par différents utilisateurs et ainsi de leur permettre de travailler simultanément sur des balises différentes d' un même document.The invention provides a document sharing system suitable for a multi-user context and for managing access rights. The invention proposes a system which makes it possible to solve the problems mentioned above, to carry out unambiguously the updates carried out by different users and thus to allow them to work simultaneously on different tags of the same document.
Le système informatique apte à la gestion de documents selon un aspect de l'invention, comprend au moins un serveur, au moins un poste client apte à échanger des données avec le serveur, au moins un document stocké par le serveur et . susceptible d'être envoyé par le serveur à un poste client déterminé, et un moyen de désignation absolue du document, de façon que l' accès audit document soit sûr. Le poste client peut être un autre serveur, un ordinateur, par exemple de type PC, un ordinateur de poche, du genre organiseur personnel, un poste de téléphone équipé de moyens de communicationsThe computer system capable of managing documents according to one aspect of the invention comprises at least one server, at least one client station capable of exchanging data with the server, at least one document stored by the server and. capable of being sent by the server to a specific client station, and a means of absolute designation of the document, so that access to said document is secure. The client station can be another server, a computer, for example of the PC type, a pocket computer, of the personal organizer type, a telephone station equipped with means of communications.
Internet, un radiotéléphone, par exemple de type WAP et plus généralement tout moyen de traitement de l'information équipé de moyens de communication avec un réseau.Internet, a radiotelephone, for example of the WAP type and more generally any means of data processing equipped with means of communication with a network.
Dans un mode de réalisation, le système comprend un moyen de désignation absolue de balise ou partie du document, chaque balise étant associée à une étiquette, une étiquette étant associée à une seule balise.In one embodiment, the system comprises means for absolute designation of tag or part of the document, each tag being associated with a label, a label being associated with a single tag.
Avantageusement, le système comprend un moyen pour générer une requête de document ou de balise d'un document. Les requêtes peuvent être indépendantes les unes des autres.Advantageously, the system comprises means for generating a document or tag request for a document. The requests can be independent of each other.
Dans un mode de réalisation, le système comprend un réseau de communication entre le serveur et le poste client.In one embodiment, the system comprises a communication network between the server and the client station.
Avantageusement, au moins une étiquette est attribuée à au moins un document.Advantageously, at least one label is assigned to at least one document.
Avantageusement, au moins une balise est identifiée de façon unique par une étiquette. Toutes les balises peuvent être identifiées par une étiquette. L'invention propose également un serveur informatique apte à la gestion de documents et comprenant un moyen pour échanger des données avec au moins un poste client, un moyen pour stocker au moins un document, un moyen pour envoyer un document à un poste client déterminé, et un moyen de désignation absolue du document, de façon que l' accès audit document soit sûr.Advantageously, at least one tag is uniquely identified by a label. All tags can be identified by a label. The invention also provides a computer server capable of managing documents and comprising means for exchanging data with at least one client station, means for storing at least one document, means for sending a document to a specific client station, and a means of absolute designation of the document, so that access to said document is secure.
Avantageusement, le serveur comprend un moyen pour attribuer une étiquette unique à chaque balise ou partie de document.Advantageously, the server comprises means for assigning a unique label to each tag or part of the document.
L'invention propose également un programme d' ordinateur comprenant des moyens de code programme pour faire fonctionner le serveur tel que décrit ci-dessus, lorsque ledit programme fonctionne sur un moyen de traitement ou un ordinateur.The invention also provides a computer program comprising program code means for operating the server as described above, when said program is running on a processing means or a computer.
L'invention propose encore un procédé de gestion de documents, dans lequel on échange des données entre au moins un serveur et au moins un poste client, le serveur stockant au moins un document et l' envoyant à un poste client déterminé, le document étant désigné de façon absolue de façon que l'accès audit document soit sûr.The invention also proposes a document management method, in which data is exchanged between at least one server and at least one client station, the server storing at least one document and sending it to a determined client station, the document being designated in an absolute manner so that access to said document is secure.
Dans un mode de réalisation, un document est mis simultanément à la disposition de plusieurs postes clients. Avantageusement, un document est divisé en balises ou parties, chaque balise étant associée à une étiquette et une étiquette étant associée à une seule balise de document. Une étiquette est associée à une balise de document de façon stable dans le temps.In one embodiment, a document is made available to several client stations simultaneously. Advantageously, a document is divided into tags or parts, each tag being associated with a label and a label being associated with a single document tag. A label is associated with a document tag in a stable manner over time.
L'invention propose encore un programme d' ordinateur comprenant des moyens de code programme pour mettre en œuvre les étapes du procédé ci-dessus, lorsque ledit programme fonctionne dans un moyen de traitement de serveur ou sur un ordinateur.The invention also provides a computer program comprising program code means for implementing the steps of the above method, when said program is operating in a server processing means or on a computer.
L' invention permet un partage efficace de document grâce à l' étiquetage unique et systématique par le serveur de toutes les balises des documents. L' étiquetage rend les documents un peu plus volumineux mais conduit à une expression concise et non ambiguë des requêtes de modifications. On supprime ainsi d' éventuels conflits ou incertitudes lors de requêtes de modification ou de requêtes d' accès. En outre, il est particulièrement avantageux d' associer cet étiquetage systématique à un procédé de gestion des versions d' un document. Chaque utilisateur peut indiquer la version de la balise du document dont il dispose, ce qui permet au serveur par comparaison avec des numéros de versions associés à chaque balise sur le document commun, d' arbitrer les concurrences d' accès. L'invention propose d'exprimer les droits d' accès sous la forme d' attributs.The invention allows efficient document sharing thanks to the unique and systematic labeling by the server of all the document tags. The labeling makes the documents a little more voluminous but leads to a concise and unambiguous expression of the requests for modifications. This removes any conflicts or uncertainties during modification requests or access requests. In addition, it is particularly advantageous to associate this systematic labeling with a process for managing the versions of a document. Each user can indicate the version of the tag of the document which he has, which allows the server by comparison with version numbers associated with each tag on the common document, to arbitrate the concurrency. The invention proposes to express access rights in the form of attributes.
Les différents modes de réalisation de l'invention s'intègrent de façon efficace au format XML et permettent d' assurer de nombreuses fonctionnalités utiles sur un serveur de document tel que association de fichiers ou de documents, administration de comptes, notions de domaines, application de feuilles de style...The various embodiments of the invention integrate efficiently in XML format and make it possible to provide many useful functionalities on a document server such as association of files or documents, administration of accounts, notions of domains, application. style sheets ...
A titre d' exemple, l' invention s' applique de façon intéressante aux applications de télémédecine visant à partager les dossiers médicaux de patients entre un ensemble de professionnels de la santé. Dans ce domaine, les fonctionnalités de gestion des droits d' accès se révèlent extrêmement utiles et le partage de l'information médicale répond à un besoin tant des organismes de santé que des praticiens eux-mêmes.By way of example, the invention applies in an interesting manner to telemedicine applications aiming to share the medical records of patients between a group of health professionals. In this area, the access rights management functionalities prove to be extremely useful and the sharing of medical information meets a need both for health organizations and for the practitioners themselves.
La présente invention sera mieux comprise à l'étude de la description détaillée d'un mode de réalisation pris à titre d'exemple nullement limitatif illustré par les dessins annexés, sur lesquels :The present invention will be better understood on studying the detailed description of an embodiment taken by way of nonlimiting example illustrated by the appended drawings, in which:
- la figure 1 est un schéma de l' architecture du système ; —- Figure 1 is a diagram of the architecture of the system; -
- la figure 2 est un schéma de fonctionnement d'un logiciel selon un aspect de l'invention ; - la figure 3 est un schéma du système selon les différents types de client ;- Figure 2 is a block diagram of software according to one aspect of the invention; - Figure 3 is a diagram of the system according to the different types of client;
- la figure 4 est un schéma d' organisation des documents ; et- Figure 4 is a document organization diagram; and
- la figure 5 est un organigramme montrant l' enchaînement retenu pour la consultation d'un dossier client de type médical à partir d' un téléphone portable WAP. Comme on peut le voir sur la figure 1, un serveur 1 est associé à un stockage de données 2 à grande capacité, par exemple un disque dur qui a été représenté ici de façon externe mais qui pourrait être intégré au serveur 1. Le serveur 1 est également associé à un serveur http 3, à un 5 serveur de messagerie électronique 4 et à un autre serveur 5 de standard non précisé. Le serveur http 3 est relié à une passerelle WAP 6. Ces différents serveurs ou passerelles 3 à 6 sont chacun prévus pour communiquer avec des postes client dont l' un référencé 7 a été représenté, par l'intermédiaire d'un réseau de communication 8 de type- Figure 5 is a flowchart showing the sequence selected for the consultation of a medical type client file from a WAP mobile phone. As can be seen in FIG. 1, a server 1 is associated with a large capacity data storage 2, for example a hard disk which has been represented here externally but which could be integrated into the server 1. The server 1 is also associated with an http server 3, an electronic mail server 5 and another server 5 of unspecified standard. The http server 3 is connected to a WAP gateway 6. These different servers or gateways 3 to 6 are each provided for communicating with client workstations, one of which is referenced 7, via a communication network 8 Of type
1.0 filaire, par fibre optique, ou encore hertzien.1.0 wired, fiber optic, or wireless.
Le serveur 1 comprend une mémoire -9, un bus de communication 10, une interface de communication 11 avec des serveurs extérieurs, notamment les serveurs 3 à 5, une interface 12 avec le stockage de données 2, une unité de calcul et de traitement 13 comprenant au moinsThe server 1 comprises a memory -9, a communication bus 10, a communication interface 11 with external servers, in particular the servers 3 to 5, an interface 12 with the data storage 2, a calculation and processing unit 13 including at least
15 un microprocesseur et une mémoire 14 qui peut être de taille inférieure à la mémoire 9 mais à temps d' accès réduit.15 a microprocessor and a memory 14 which may be smaller than the memory 9 but with reduced access time.
Le serveur 1 est équipé d'une pluralité de logiciels stockés dans la mémoire 9 et pouvant également être stockés dans la mémoire 14 pour être exécutés par l'unité 13. Les mémoires. 9 et 14, les interfaces 11 et 12 0 et l' unité 13 communiquent au moyen du bus de communication 10. L'interface 11 peut être de type CGI.The server 1 is equipped with a plurality of software stored in the memory 9 and which can also be stored in the memory 14 to be executed by the unit 13. The memories. 9 and 14, the interfaces 11 and 12 0 and the unit 13 communicate by means of the communication bus 10. The interface 11 can be of the CGI type.
Un document, par exemple sous format XML, de l' utilisateur est stocké sous forme de fichier. L'organisation du stockage est illustrée sur la figure 2. Le logiciel 15 stocké dans la mémoire 9 et/ou 14 et exécuté 5 par l'unité 13 permet de traiter de tels documents. Un document 16 est susceptible d'être émis ou reçu par le logiciel 15 et stocké sous la forme de fichier, dans le stockage de données 2. Certaines informations issues du document 16 doivent être stockées dans une base de données relationnelle 18 par l'intermédiaire d' un système de gestion de base deA document, for example in XML format, of the user is stored in the form of a file. The storage organization is illustrated in FIG. 2. The software 15 stored in the memory 9 and / or 14 and executed 5 by the unit 13 makes it possible to process such documents. A document 16 is capable of being sent or received by the software 15 and stored in the form of a file, in the data storage 2. Certain information originating from the document 16 must be stored in a relational database 18 via of a basic management system of
30 données 19, afin d' en faciliter l' accès. Il s' agit essentiellement des valeurs des éléments susceptibles d' apparaître dans les listes de documents. Ces éléments sont préalablement déclarés au serveur par l'intermédiaire d'un méta-document tel que décrit plus loin. Un fichier 17 associé au document 16 peut également être rangé dans un répertoire sans traitement particulier. A la création d'un rhéta-document, les tables utiles à la gestion des documents XML correspondants sont générées dans la base de données relationnelle 18. En l' absence de balise « Ref » parmi les éléments à lister, il n'y a qu' une table, avec autant de colonnes que d' éléments. S'il faut gérer des balises « Ref » dans les listes, des tables additionnelles sont créées puisque la balise peut prendre des valeurs différentes en fonction des domaines. Après chaque opération sur un document XML, les valeurs des éléments des listes sont à la fois mises à jour dans le fichier 16 et dans la base de données relationnelle 18. Le tableau ci-dessous montre le principe de stockage d'un document XML possédant des champs « Ref ».30 data 19, to facilitate access. These are essentially the values of the elements likely to appear in the lists of documents. These elements are previously declared to the server via a meta-document as described below. A file 17 associated with document 16 can also be stored in a directory without special treatment. When creating a rheta-document, the tables useful for managing the corresponding XML documents are generated in the relational database 18. In the absence of a “Ref” tag among the elements to be listed, there is no as a table, with as many columns as there are elements. If it is necessary to manage “Ref” tags in the lists, additional tables are created since the tag can take different values depending on the fields. After each operation on an XML document, the values of the elements of the lists are both updated in the file 16 and in the relational database 18. The table below shows the principle of storage of an XML document having "Ref" fields.
Documents XMLXML documents
Eléments à faire apparaître dans la liste des documentsItems to appear in the list of documents
Figure imgf000008_0001
Figure imgf000008_0001
<A D="20 ' I="2"><A D="20 'I="2">
<B><B>
<Ref I="0"?B0_ 2</?._ï><Ref I = "0"? B0_ 2 </?._ ï>
<oc_ _2</C><oc_ _2 </C>
<D>D_ ~2</D><D> D_ ~ 2 </D>
</B></ B>
<E><E>
<Re-f I="0">E0_ _2</Ref><Re-f I = "0"> E0_ _2 </Ref>
<Ref I="1">E1~ ^2</Re ><Ref I = "1"> E1 ~ ^ 2 </ Re>
</E></ I>
<F>F_2</F><F> F_2 </ F>
</A> Dase relationnelle</A> Relational Dase
list 20list 20
I c3 c4I c3 c4
1 C 1 D 1 2 C_2 D 21 C 1 D 1 2 C_2 D 2
Tables additionnelles pour gérer les références dans les listesAdditional tables to manage the references in the lists
Figure imgf000009_0001
Figure imgf000009_0001
Un même document ou dossier peut être accédé simultanément en lecture ou en écriture par plusieurs utilisateurs. Pour éviter les problèmes classiques d'écrasement de données ou d'incohérence, un mécanisme de gestion de version est prévu dans le logiciel 15.The same document or folder can be read or written simultaneously by several users. To avoid the classic problems of data overwriting or inconsistency, a version management mechanism is provided in the software 15.
Le serveur 1 attribue un compteur de version à chaque document XML et marque chaque balise modifiée ou créée avec la valeur courante du compteur, sous la forme d'un attribut noté « N ». Chaque utilisateur qui demande un dossier au serveur est informé de la valeur courante du compteur, attribut « N » au niveau de la racine. Il doit restituer cette valeur lors d'une opération de modification. Le serveur compare la valeur indiquée avec la valeur dont il dispose pour les balises concernées par les modifications ou les créations. Pour une balise donnée, le serveur contrôle en fait les versions de toutes les balises pères et de toutes les balises fils. Si l' une des versions est supérieure à la version de l'utilisateur, la requête de modification est rejetée. En d' autres termes, on ne peut modifier un champ que si la valeur dont on disposait lors de la lecture du champ n' a pas été modifiée entre temps. Le tableau ci-dessous illustre l' algorithme de gestion des versions.
Figure imgf000010_0001
Figure imgf000010_0002
Il convient de remarquer que l'utilisateur n' est pas informé de la version de chaque balise. Il ne connaît que la version de l'ensemble du dossier. L' algorithme prévu effectue un verrouillage optimiste. La technique du verrouillage pessimiste c'est-à-dire du verrouillage initial des parties du document destiné à être modifié peut être réalisé par l' utilisateur en jouant sur les droits d' accès, par exemple en plaçant un droit exclusif d'écriture sur les parties concernées du dossier avant de procéder à leurs modifications, puis en restituant les droits initiaux après l' opération. La mémorisation des versions permet également au serveur 1 de repérer les balises modifiées par rapport à une version intérieure du document. Ceci permet d'indiquer à l'utilisateur les balises « fichiers » modifiées par rapport à une version locale sur un poste client. Il n' est pas possible, en revanche, de reconstituer sur le serveur la liste des balises effacées. Mais cette information peut-être aisément déduite par le client lui-même.
The server 1 assigns a version counter to each XML document and marks each modified or created tag with the current value of the counter, in the form of an attribute noted “N”. Each user who requests a file from the server is informed of the current value of the counter, attribute "N" at the root level. It must restore this value during a modification operation. The server compares the value indicated with the value it has for the tags affected by the modifications or creations. For a given tag, the server actually checks the versions of all the parent tags and all the child tags. If one of the versions is higher than the version of the user, the modification request is rejected. In other words, a field can only be modified if the value which was available when the field was read has not been modified in the meantime. The table below illustrates the version management algorithm.
Figure imgf000010_0001
Figure imgf000010_0002
It should be noted that the user is not informed of the version of each tag. He only knows the version of the whole file. The expected algorithm performs optimistic locking. The pessimistic locking technique, that is to say the initial locking of the parts of the document intended to be modified, can be carried out by the user by playing on the access rights, for example by placing an exclusive right of writing on the parties concerned in the file before proceeding to their modifications, then restoring the initial rights after the operation. The storage of the versions also allows the server 1 to locate the modified tags with respect to an interior version of the document. This indicates to the user the “file” tags modified compared to a local version on a client computer. However, it is not possible to reconstitute the list of deleted tags on the server. But this information can be easily deduced by the customer himself.
Ainsi, l'invention propose un serveur de document au format XML ou équivalent destiné à permettre le partage de ces documents par un ensemble d'utilisateurs. Ce serveur se place au centre d' une architecture client serveur et rend des services comparables à ceux d'un système de gestion de base de données relationnelle, mais avec des documents XML. Ces services peuvent comprendre la définition de compte d'utilisateur, le stockage de documents de manière transparente pour l' utilisateur, la gestion des accès aux documents suivant des règles précises, la recherche de documents sur la base de certains critères, l'exécution de requêtes transactionnelles...Thus, the invention proposes a document server in XML or equivalent format intended to allow the sharing of these documents by a set of users. This server is placed at the center of a client server architecture and provides services comparable to those of a relational database management system, but with XML documents. These services may include defining a user account, storing documents in a transparent manner for the user, managing access to documents according to precise rules, searching for documents on the basis of certain criteria, executing transactional requests ...
Par rapport à une base de données relationnelle, l' adoption du format XML pour représenter les données permet en outre d' arbitrer efficacement les accès en écriture aux différentes parties d' un document, de fixer très finement les droits d' accès, à un niveau quelconque de l' arborescence XML, d' associer des fichiers binaires aux documents, ou encore de donner un accès direct au serveur à un large éventail de plateformes et de logiciels clients. Bien entendu, l'invention réduit au strict minimum les contraintes imposées aux documents XML hébergés tout en rendant l' architecture du serveur indépendante des données traitées.Compared to a relational database, the adoption of the XML format to represent the data also makes it possible to effectively arbitrate the write accesses to the various parts of a document, to very finely fix the access rights, to a any level of the XML tree, associating binary files with documents, or even giving direct access to the server to a wide range of platforms and client software. Of course, the invention minimizes the constraints imposed on hosted XML documents while making the server architecture independent of the data processed.
Pour permettre l' accès au serveur à une grande variété de clients ou d'utilisateurs, le protocole d'invocation des fonctions du serveur est le plus simple possible. Il est donc prévu des requêtes indépendantes les unes des autres, en l' absence de notion de session, un fonctionnement transactionnel, c'est à dire qu'une requête est soit annulée, soit exécutée en totalité et si l' on excepte la description des fichiers joints qui peuvent être de format varié, un format purement ASCII pour les requêtes, et, qui plus est, de type XML, comme pour les documents manipulés. L'invention de fonctions à travers des requêtes XML rejoint le principe du protocole SOAP (SIMPLE OBJECT ACCESS PROTOCOLE en langue anglaise). Une formulation plus simple et spécifique au traitement de documents XML peut être choisie. Sauf demande par le client ou l'utilisateur d'un fichier binaire associé à un document, le serveur répond également par un message XML.To allow server access to a wide variety of clients or users, the server function invocation protocol is as simple as possible. It is therefore provided for requests that are independent of each other, in the absence of a notion of session, a transactional operation, that is to say that a request is either canceled, or executed in full and if the description is excepted attached files which can be of varied format, a purely ASCII format for the requests, and, moreover, of XML type, as for the documents handled. The invention of functions through XML requests is in line with the principle of the SOAP protocol (SIMPLE OBJECT ACCESS PROTOCOL in English). A simpler formulation specific to the processing of XML documents can be chosen. Unless the client or user requests a binary file associated with a document, the server also responds with an XML message.
Tout logiciel capable de dialoguer sous format XML avec le serveur, selon le protocole de communication adéquat (http, ou autre), peut a priori jouer le rôle de client. Pour permettre un accès direct au serveur, c'est à dire sans logiciel intermédiaire, à partir de clients de type navigateur html ou wml, un mécanisme de transformation de la réponse XML à l' aide de feuilles de style peut être intégre au serveur. La simplicité de l' accès au serveur et les possibilités d' application de feuilles de style condμisent à une large variété de clients potentiels qui peuvent être un autre serveur, un ordinateur, un ordinateur de poche, un téléphone Web, un radio téléphone Wap, etc.Any software capable of dialoging in XML format with the server, according to the appropriate communication protocol (http, or other), can a priori play the role of client. To allow direct access to the server, that is to say without intermediate software, from html or wml browser type clients, a mechanism for transforming the XML response using style sheets can be integrated into the server. The simplicity of the access to the server and the possibilities of applying stylesheets lead to a wide variety of potential customers which can be another server, a computer, a handheld computer, a Web telephone, a Wap radio telephone, etc.
Le rôle du serveur est de permettre le partage de documents XML entre plusieurs utilisateurs. On se fixe également pour objectif d' assurer une sécurité de fonctionnement élevée, de gérer avec rigueur les accès et notamment les questions de droits d' accès et de concurrences d' accès, d' ouvrir le système à un éventail aussi large que possible de plateformes et de logiciels clients ainsi que de réduire au strict minimum les contraintes imposées aux documents XML hébergés. Le serveur assure entre autre le service de gestion de comptes d'utilisateurs avec des fonctions d' administration (création, modification, effacement, liste...), profil d'utilisateur, domaine d' appartenance et authentification par cartes à puce, et la gestion de documents XML avec les fonctions d' administration, d' arbitrage des accès concurrents, de contrôle des droits d' accès avec filtrage des données, de gestion des fichiers joints et d'application de feuilles de style au document.The role of the server is to allow the sharing of XML documents between several users. The aim is also to ensure high operating security, to rigorously manage access and in particular questions of access rights and access competition, to open the system to as wide a range of users as possible. client platforms and software as well as minimizing the constraints imposed on hosted XML documents. The server provides among other things the user account management service with administration functions (creation, modification, deletion, list ...), user profile, home domain and authentication by smart cards, and management of XML documents with administration, arbitration functions concurrent access, control of access rights with data filtering, management of attached files and application of style sheets to the document.
Pour des raisons liées au principe de fonctionnement du serveur et à la sécurité, on introduit deux exigences de syntaxe. Tout d' abord, chaque donnée doit être comprise entre une balise ouvrante et la balise fermante correspondante. On exclut donc le cas de figure suivant :For reasons related to the operating principle of the server and to security, two syntax requirements are introduced. First of all, each piece of data must be between an opening tag and the corresponding closing tag. We therefore exclude the following scenario:
<Texte>Ceci n'est <Souligné>pas</Souligné> autorisé. </Texte> et l' ordre d'écriture des balises n' a pas d'importance. Tous les documents ou objets gérés par le serveur sont désignés de manière unique par des identifiants générés par le serveur lui-même. Le format des identifiants est celui d'un nombre en base 36 (composé des chiffres de 0 à 9 et des lettres de A à Z). Les identifiants de fichiers comprennent, en plus, une extension alphanumérique qui en indique le type, par exemple « .doc ».<Text> This is <Underlined> not </ Underlined> allowed. </Text> and the order in which the tags are written does not matter. All documents or objects managed by the server are uniquely designated by identifiers generated by the server itself. The format of the identifiers is that of a base 36 number (composed of the numbers from 0 to 9 and the letters from A to Z). File identifiers also include an alphanumeric extension that indicates the type, for example ".doc".
L'application hébergée sur le serveur est accessible avec les protocoles HTTP ou HTTPS . La nature du protocole n' a pas d'incidence sur le fonctionnement, de sorte que d' autres sites d' accès peuvent être envisagés, par exemple avec un protocole SMTP pour un; accès en -différé, par messagerie électronique...The application hosted on the server is accessible with the HTTP or HTTPS protocols. The nature of the protocol does not affect the operation, so other access sites can be considered, for example with an SMTP protocol for one ; delayed access, by email ...
Tout logiciel capable de générer une requête au format XML, d' interpréter la réponse au même format, sauf en cas de lecture d'un fichier associé à un document, et de communiquer via le réseau avec le protocole adéquat (HTTP, HTTPS , WAP, SMTP... ) est susceptible de jouer le rôle de client lorsqu'il est exécuté par une unité de calcul et de traitement. Afin de donner également un accès direct, sans logiciel intermédiaire, au serveur à des clients légers de type navigateur HTML ou WML, on associe au serveur un processeur de feuilles de style XSL qui peut réaliser une transformation de la réponse XML vers HTML ou WML. La feuille de style à utiliser est indiquée dans la requête, sous la forme d'une adresse URL ou d'un nom de fichier local au serveur. Pour formuler des requêtes XML dans l' environnement des navigateurs, on s' appuie sur les langages de script disponible tels que JAVAscript, NBscript, WMLscript... Le recours aux feuilles de style se justifie essentiellement pour les clients légers, c'est-à-dire téléchargés. Les clients dits lourds, c' est-à- dire les applications installées sur le poste client, généralement écrits dans un langage de haut niveau, pourront généralement interpréter directement une réponse XML du serveur. Les différents flux d'informations, au format XML ou dérivé, sont présentés sur la figure 3.Any software capable of generating a request in XML format, interpreting the response in the same format, except when reading a file associated with a document, and communicating via the network with the appropriate protocol (HTTP, HTTPS, WAP , SMTP ...) is likely to play the role of client when executed by a computing and processing unit. In order to also give direct access, without intermediate software, to the server to thin clients of HTML or WML browser type, the server is associated with an XSL stylesheet processor which can transform the response XML to HTML or WML. The style sheet to be used is indicated in the request, under the form of a URL or file name local to the server. To formulate XML requests in the browser environment, we rely on the available scripting languages such as JAVAscript, NBscript, WMLscript ... The use of style sheets is essentially justified for thin clients, that is ie downloaded. So-called heavy clients, that is to say the applications installed on the client workstation, generally written in a high-level language, will generally be able to directly interpret an XML response from the server. The different information flows, in XML or derived format, are presented in Figure 3.
Les données relatives à l' administration du système sont représentées sous la forme de documents XML de structure imposée, contrairement à celle des documents utilisateurs décrits plus loin. Un attribut « D » caractérise le type de document. D = 0 indique un méta- document, D = 1 indique un compte d' utilisateur, D = 2 indique un profil de compte, D = 3 indique un domaine. Ainsi, en considérant par exemple un document décrivant un domaine, sa valeur sera toujours égale à 3.The data relating to the administration of the system are represented in the form of XML documents of imposed structure, unlike that of the user documents described below. An attribute "D" characterizes the type of document. D = 0 indicates a meta-document, D = 1 indicates a user account, D = 2 indicates an account profile, D = 3 indicates a domain. Thus, when considering for example a document describing an area, its value will always be equal to 3.
Un domaine (D = 3) désigne un ensemble d'utilisateurs qui partagent un même système d'indexation des informations, par exemple les numéros de référence de dossiers. Un domaine est caractérisé par un nom unique selon la syntaxe suivante :A domain (D = 3) designates a set of users who share the same system of indexing information, for example file reference numbers. A domain is characterized by a unique name according to the following syntax:
<Domaine D= "3" I=" id du domaine" N= "id de version"> <Νom> nom de domaine (nom unique) </Nom> </Domaine><Domain D = "3" I = "domain id" N = "version id"> <Νom> domain name (unique name) </Nom> </Domaine>
Par exemple :For example :
<Domaine B=M0" D="3" 1= "5" V="0 "> <Nom B=" l">Clinique du X</Nom> </Domaine> La notion de domaine permet de réaliser une gestion automatique des numéros de référence par le serveur, quelque soit le document considéré. Chaque référence sera délimitée par une balise réservée "Ref", avec la syntaxe suivante<Domain B = M 0 "D =" 3 "1 =" 5 "V =" 0 "><Name B =" l "> Clinique du X </Nom></Domaine> The concept of domain makes it possible to carry out a automatic management of reference numbers by the server, whatever the document considered Each reference will be delimited by a reserved tag "Ref", with the following syntax
<Ref I="id du domaine"> référence </Ref> Considérons un document qui. contient, à un endroit quelconque de l'arborescence XML , les lignes suivantes : <Ref B="2H" I="5 ">altai N 77</Ref> <Ref B= "21" I="3E">a8364</Ref><Ref I = "domain id"> reference </Ref> Consider a document that. contains, at any place in the XML tree, the following lines: <Ref B = "2H" I = "5"> altai N 77 </Ref><Ref B = "21" I = "3E"> a8364 </ ref>
<Ref B= "2J" I="9"<alt-nic-77.3</Ref><Ref B = "2J" I = "9" <alt-nic-77.3 </Ref>
Un utilisateur du domaine I="9" qui accède au document ne verra en fait que la ligne suivante : <Ref B="2J" I="9">alt-nic-77.3</Ref>A user of domain I = "9" who accesses the document will in fact only see the following line: <Ref B = "2J" I = "9"> alt-nic-77.3 </Ref>
Un compte permet à un utilisateur de se connecter au serveur. Il est identifié par le couple (nom de comte ; domaine), par son identifiant interne (attribut I à la racine) ou par un numéro de clef. An account allows a user to connect to the server. It is identified by the couple (count name; domain), by its internal identifier (attribute I at the root) or by a key number.
<Coπιpte D="l" I="id du compte" V="id de version"> (optionnel) <Utilisateur> <Mom> nom d'utilisa teur </Nor > <Preno > prénom </Prenom> <Civilite> civilité </Civilite> <Sexe> M ou 'F </Sexe> <Portrait><Coπιpte D = "l" I = "account id" V = "version id"> (optional) <User><Mom> user name </ Nor><Preno> first name </Firstname><Civility> civility </Civilite><Sexe> M or ' F </Sexe><Portrait>
<Fichier I="id du fichier" S≈" taille en ocfcets"X/Fichier> -r </Portrait><File I = "id of file" S≈ "size in ocfcets" X / File> -r </Portrait>
</ϋtilisateur> <Acces></ >user> <Access>
<Do aine I≈"id du domaine"> nom du domaine </Domaine> (optionnel) <Norn> nom du compte (unique sur le domaine) </Nom> (optionnel) <Cle C=" type" 1=" iden tifiant unique de cle"x/Cle><Do aine I≈ "domain id"> domain name </Domain> (optional) <Norn> account name (unique on the domain) </Nom> (optional) <Cle C = "type" 1 = " unique key identifier "x / Cle>
. . . (répéti tion éventuelle de la balise <Cle>) (optionnel, non accessible en lecture) <MotDePasse> mot de passe brouillé </MotDePasse> 10 </Acces>. . . (possible repetition of the <Cle> tag) (optional, not accessible in reading) <MotDePasse> scrambled password </MotDePasse> 10 </Acces>
<Par m><By m>
<Actif> OUI ou NON (défaut) </Actif><Actif> YES or NO (default) </Actif>
<Profil I="id du profil"> nom du profil </Profil><Profile I = "profile id"> profile name </Profile>
(optionnel si non actif) <Exρiration(optional if not active) <Exρiration
T=" da te-heure JJ/m/AAAA :l-!M: SS (horloge serveur) "> </Eκpiration>T = "da te-heure JJ / m / AAAA: l-! M: SS (server clock)"> </ Eκpiration>
(optionnel) <Eraail> adresse e-mail </Eraail> </Param> 15 (lecture seule) <Trace>(optional) <Eraail> email address </Eraail> </Param> 15 (read-only) <Trace>
<Creation T≈" da te-heure JJ/ΛtV/AAAA H :MM: SS .(horloge serveur) "><Creation T≈ "da te-heure JJ / ΛtV / AAAA H: MM: SS. (Server clock)">
<Compte I≈" id du cor.ιpte"> prénom + nom d' utilisa te r </Compte> </Creation> <Eκpiration><Account I≈ "cor.ιpte id"> first name + username r </Account> </Creation> <Eκpiration>
<Corr.ρte I=" id du compte"> prénom + nom d' utilisa teur </Corαpte> </Eκpiration><Corr.ρte I = "account id"> first name + user name </ Corαpte> </ Eκpiration>
<Req ete T="da te-Λeure JJ/MM/AAAA HH:tW: SS (horloge clien t) " ηp. I≈" iden tifiant a t tribué par le client à la requête"><Req ete T = "da te-Λeure JJ / MM / AAAA HH: tW: SS (customer clock t)" ηp. I≈ "identifier was assigned by the client to the request">
^υ <Action> action </Action>^ υ <Action> action </Action>
</Requete> <Service T=" da te -heure JJ/m/AAAA HH:t_. : SS (horloge serveur) "></Requete> <Service T = "da te -hour JJ / m / AAAA HH: t_.: SS (server clock)">
(en cas d' erreur) <Erreur I≈" id de l ' erreur"></Erreύr> </Service> </Trace> </Compte>(in case of error) <Error I≈ "error id"> </ Erreύr> </Service> </Trace> </Compte>
25 La valeur de la balise < mot de passe > correspond à f(P), c'est- à- dire à une fonction de brouillage appliquée au mot de passe. La longueur de cette valeur peut être comprise entre 10 et 25 caractères. Ce champ n'est pas renvoyé par le serveur. Il est créé par le logiciel client pour modifier le mot de passe du compte.25 The value of the <password> tag corresponds to f (P), that is to say to a scrambling function applied to the password. The length of this value can be between 10 and 25 characters. This field is not returned by the server. It is created by client software to change the account password.
30 Tous les champs du bloc <Compte/trace > sont générés par le serveur et ne peuvent être modifiés. Les balises <requête> et <service> rappellent certains paramètres du dernier accès au serveur avec le compte considéré. Cette information peut s' avérer utile pour gérer une reprise après rupture de liaison au cours d' une requête. La requête d'identification du compte n'est volontairement pas tracée. En écriture, le domaine et le profil peuvent être désignés par leur nom ou l' attribut <I>. Tout utilisateur d'un compte est autorisé à visualiser son propre dossier <compte > et à modifier son mot de passe. La notion de clef a été introduite afin de permettre des identifications rapides de comptes à partir d'un identifiant unique et dans' certains cas une authentification de l' utilisateur. Une clef est caractérisée par un type, un identifiant unique pour un type donné (numéro de série, numéro du porteur, ... ), et, éventuellement, un protocole cryptographique d' authentification. Une clef est décrite avec la synthaxe suivante :30 All the fields in the <Account / trace> block are generated by the server and cannot be modified. The tags <request> and <service> recall certain parameters of the last access to the server with the account considered. This information can be useful for managing a recovery after a connection break during a request. The request account identification is not intentionally traced. In writing, the domain and the profile can be designated by their name or the attribute <I>. Any user of an account is authorized to view his own <account> folder and to change his password. The concept of key has been introduced to allow rapid identification of accounts from a single login and in 'some cases authentication of the user. A key is characterized by a type, a unique identifier for a given type (serial number, carrier number, ...), and, optionally, a cryptographic authentication protocol. A key is described with the following syntax:
<clef C= « type » 1= « identifiant unique de clef » >< /clef> La présence d'une clef au niveau d'un compte (balise <Compte/param/clef >) n'impose pas l'utilisation de cette clef pour l' accès au compte. C' est dans la description du profil de compte que l'imposition de ce type de contrainte est défini.<key C = "type" 1 = "unique key identifier"> </ key> The presence of a key at the level of an account (<Account / param / key> tag) does not require the use of this key for access to the account. It is in the description of the account profile that the imposition of this type of constraint is defined.
Le profil d'utilisateur permet d' associer un certain nombre de droits, tels que l' accès aux documents, l' administration de comptes, etc et de contraintes telle que l' authentification à chaque compte. Le profil d' utilisateur peut étire définit comme suit :The user profile makes it possible to associate a certain number of rights, such as access to documents, administration of accounts, etc. and constraints such as authentication to each account. The user profile can be defined as follows:
<Profil D="2" I≈"id du profil" V="id da version"> <Nom> nom du profil (nom unique) </Nom><Profile D = "2" I≈ "profile id" V = "id da version"> <Name> profile name (unique name) </Name>
<Authentification><Authentication>
<MotDePasse> OUI (défaut; ou NOM </MotDePasse> <Cle C="type" (optionnel) ï=""x/Cle> </Authentification><Password> YES (default; or NAME </Password> <Key C = "type" (optional) ï = "" x / Key> </Authentication>
<Compte><Account>
<Domaine> OUI (défaut) ou NOM </Domaine><Domain> YES (default) or NAME </Domain>
<Liste> OUI ou MON ('défaut; </Liste><List> YES or MY ('default; </List>
<Authentification> OUI ou NOM (défaut) </Authentification><Authentication> YES or NAME (default) </Authentication>
<Profil I="id du profil"> nom du profil </Profil><Profile I = "profile id"> profile name </Profile>
. . . . (répétition éventuelle de la balise <Profil>) </Compte> <Doc D≈"id de πιé a-document"> (lecture seule) <Mom> nom du me a -document </Nom> < iste> OUI ou NON (défaut) </Liste>. . . . (possible repetition of the <Profile> tag) </Compte> <Doc D≈ "id de πιé a-document"> ( read-only) <Mom> name of me a -document </Nom><iste> YES or NO (default) </List>
<Authentification> OUI ou NOM (défaut) </Authentification> < ecture> AUCUN (défaut) ou PERSONNEL ou TOUS </Lecture> <Ecriture> AUCUN (défaut) ou PERSONNEL ou TOUS </Ecriture> ^ <Creation> OUI ou NON (défaut) </Creation><Authentication> YES or NAME (default) </Authentication> <reading> NONE (default) or PERSONAL or ALL </Reading> <Write> NONE (default) or PERSONAL or ALL </Write> ^ <Creation> YES or NO (default) </Creation>
<Suppression> OUI ou NON (défaut) </Suppression> <Archivage> OUI ou NON (défaut) </Archivage> <BlocChernin><Suppression> YES or NO (default) </Suppression> <Archive> YES or NO (default) </Archivage> <BlocChernin>
<Chemin A="Λ (défaut) ou W"> chemin accessible dans le document </Chemin> . . . . (répétition de « Chemin ») </BlocCheπιin> </Doc><Path A = "Λ ( default ) or W"> path accessible in the document </Chemin>. . . . (repetition of "Chemin") </ BlocCheπιin></Doc>
10 . . . . (répétition de « Doc »)10. . . . (repetition of "Doc")
</Profil></ Profile>
Soit à titre d'exempleOr as an example
'•^ - <Profil B="0" D="2" I="B" V="l"> <Nom B="l">Patient</Nom> '• ^ - <Profile B = "0" D = "2" I = "B" V = "l"><Name B = "l"> Patient </Name>
<Authentification' B="2"><Authentication ' B = "2">
<Mot'DePasse B="3"x/MotDePasse> </Authentification><Mot'DePasse B = "3" x / MotDePasse> </Authentication>
<Doc B="10" D="10"> 20 <Nom B="ll">Dossier patient</Hom><Doc B = "10" D = "10"> 20 <Name B = "ll"> Patient record </Hom>
< ecture B="12">PERS0NNEL</Lecture> <Ecriture B="13">N0N</Ecriture> <Creation B="14">NON</Creation> <Supρression B="15">N0M</Suppression> <Archivage B≈"16">NON</Archivage> <Bi'ôcCheπιin B="17"><reading B = "12"> PERSONAL </Leading><Writing B = "13"> N0N </Write><Creation B = "14"> NO </Creation><Supρression B = "15"> N0M </ Delete><Archiving B≈ "16"> NO </Archiving><Bi' ôcCheπιin B = "17">
<Che in B="18">Patient/A τιinistratif</Chémin> <Chemin B="19">Patient/Gensral</Chernin> 5 </BlocCherain><Che in B = "18"> Patient / A τιinistrative </ Chémin> <Path B = "19"> Patient / Gensral </Chernin> 5 </BlocCherain>
</Doc></ Doc>
<Doc B="20".D="11"><Doc B = "20" .D = "11">
<Nom B="21">Dossier professionnel</Nora> <Lecture B="22">PERSONNE </Lecture> <Ecriture B="23">NON</Ecriture> <Creation B="24">NON</Creation> <Suppression B="25">NO </Suppression><Name B = "21"> Professional file </Nora> <Reading B = "22"> PERSON </Reading> <Writing B = "23"> NO </Write> <Creation B = "24"> NO < / Creation> <Deletion B = "25"> NO </Suppression>
30 <Archivage B≈"26">MON</Arc ivaςe> <BlocC'nemin B="27">30 <Archiving B≈ "26"> MON </ Arc ivaςe> <BlocC'nemin B = "27">
<Cherain B="28">FrofessionneK/C'nerain><Cherain B = "28"> FrofessionneK / C'nerain>
</BlocCherήin> </Doc></ BlocCherήin> </Doc>
</Profil> Plus particulièrement, le bloc <Profil /Authentification> définit les paramètres obligatoires pour l' authentification des comptes possédant ce profil. Ainsi, une valeur <oui > pour la balise <mot de passe> indique, par exemple, la nécessité de présenter un mot de passe non vide pour l' accès au compte. Pour la balise <clef>, le type doit correspondre à une clef d' authentification. En l' absence de l' attribut <I> n' importe quelle clef du type indiqué ouvre l' accès au compte. Mais cette clef ne permet pas, à elle seule, d' identifier le compte car il faut préciser un nom de compte et un nom de domaine. Si l' attribut <I> est présent (avec une valeur vide) cela signifie qu'un numéro de clef précis est requis au niveau du compte. Dans ce cas, la clef permet à la fois l'identification et l' authentification du compte.</ Profile> More specifically, the <Profile / Authentication> block defines the mandatory parameters for the authentication of accounts with this profile. Thus, a value <yes> for the <password> tag indicates, for example, the need to present a non-empty password for access to the account. For the <clef> tag, the type must correspond to an authentication key. In the absence of the attribute <I> any key of the indicated type opens access to the account. But this key does not, by itself, identify the account because it is necessary to specify an account name and a domain name. If the attribute <I> is present (with an empty value) this means that a precise key number is required at the account level. In this case, the key allows both identification and authentication of the account.
Le bloc <Profil/Compte> décrit les possibilités d' administration de comptes liées au profil. Dans le bloc <Profil/Compte/domaine> la valeur <OUI> restreint les droits d' administration au domaine d' appartenance du compte.The <Profile / Account> block describes the account administration possibilities linked to the profile. In the <Profile / Account / domain> block, the value <YES> restricts the administration rights to the domain in which the account belongs.
Le bloc <Profil/Compte/Liste> conditionne l' accès à la liste des comptes. Le bloc <Profil/Compte/Authentification> permet d' imposer une authentification des utilisateurs des comptes administrés. Les profils administrables sont précisés au blocThe <Profile / Account / List> block conditions access to the list of accounts. The <Profile / Account / Authentication> block makes it possible to impose an authentication of the users of the administered accounts. Manageable profiles are specified in the block
<Profil/Compte/Profil>. Un profil avec une valeur <OUI> pour la balise « Domaine » ne peut administrer un profil avec une valeur <NON> à ce niveau.<Profile / Account / Profile>. A profile with a value of <YES> for the tag "Domain" cannot administer a profile with a value of <NO> at this level.
Le bloc <Prof il/Doc > permet d' interdire l' accès à ce type de document en l' absence d' une balise <Doc > correspondant à un type de document. Le bloc <Profil/Doc/Liste> précise si la liste des documents est accessible à l'utilisateur.The <Prof il / Doc> block allows you to prohibit access to this type of document in the absence of a <Doc> tag corresponding to a type of document. The <Profile / Doc / List> block specifies whether the list of documents is accessible to the user.
Le bloc <Profil/Doc/Authentification> indique en cas de valeurThe <Profile / Doc / Authentication> block indicates in the event of a value
<OUI> que l' accès au document n' est possible que si un compte a été associé au document (attribut <C> au niveau de la racine du document ).<YES> that access to the document is only possible if an account has been associated with the document (attribute <C> at the root level of the document).
Il convient d'indiquer dans la requête les données d'identification et d' authentificatron requises pour ce compte.The identification and authentication data required for this account must be indicated in the request.
Les blocs <Profil/Doc/Lecture > et <Profil/Doc/Ecriture> permettent de définir les accès. En cas de valeur <AUCUN>, aucun accès n'est autorisé, en cas de valeur "<PERSONNEL>", l'accès est autorisé aux parties accessibles des dossiers personnels tel que défini par les droits d'accès définis dans les documents. En cas de valeur <TOUS>, l'accès aux parties accessibles de tous les documents est autorisé. En l'absence de balise <BlocChemin> ou <Chemin>, tous les chemins sont accessibles en lecture et en écriture, c'est à dire en modification. Les chemins avec A="W" sont accessibles en lecture et en écriture. Les autres le sont uniquement en lecture. S'il y a des chemins A="R" sans aucun chemin A= "W", aucune modification n'est autorisée. Tout type de document XML hébergé par le serveur doit être décrit au préalable par un document qualifié de « méta-document ». Cette exigence est liée à la nécessité de pouvoir gérer efficacement des listes de documents. Un méta-document décrit en fait les éléments des documents que l'on désire voir figurer dans les listes et sur la base desquelles on effectue les sélections. La structure d'un méta-document est illustrée ci-dessous.The <Profile / Doc / Read> and <Profile / Doc / Write> blocks are used to define the accesses. In case of value <NONE>, no access is not authorized, in the case of a "<PERSONAL>" value, access is authorized to accessible parts of personal files as defined by the access rights defined in the documents. If <TOUS> is set, access to the accessible parts of all documents is authorized. If there is no <BlocPath> or <Path> tag, all the paths are accessible in read and write, that is to say in modification. The paths with A = "W" are accessible in read and write. The others are only read. If there are paths A = "R" without any path A = "W", no modification is authorized. Any type of XML document hosted by the server must be described beforehand by a document called a "meta-document". This requirement is linked to the need to be able to manage lists of documents effectively. A meta-document describes in fact the elements of the documents that one wishes to appear in the lists and on the basis of which one makes the selections. The structure of a meta-document is illustrated below.
<Meta D="0" I="id du méta-documen " V≈"id de version"> <Nom> nom du méta-document (nom unique) </Mo > < iste> <Elem><Meta D = "0" I = "meta-document id" V≈ "version id"> <Name> meta-document name (unique name) </ Mo> <ist> <Elem>
<Desc> (optionnel) description de l'élément </Desc><Desc> (optional) description of the element </Desc>
<Doc> chemin (sans la racine) de l'élé ent dans le document </Doc><Doc> path (without the root) of the element in the document </Doc>
< iste> chemin de l'élément dans la liste de documents </Liste><iste> path of the element in the document list </Liste>
<Taille><Size>
<Usuelle> (optionnel) taille (nb de caract.) usuelle de l'élément </Usuelle> <Maximale> taille maximale de l'élément </Maximale> </Taille> </Elem><Usuelle> (optional) usual size (number of characters) of the element </Usuelle> <Maximal> maximum size of the element </Maximal> </Size> </Elem>
. . . . (répétition de « Elem »). . . . (repetition of "Elem")
</Liste> Professionnel D="ll" I="13" B="14" V="E"> </Meta> < Administratif B="13"> <NomB="l" >Y1</Nom> </ L i ste> Professional D = "ll" I = "13" B = "14" V = "E"></Meta><Administrative B = "13"><NomB = "l"> Y 1 < / name>
<Prenom B="2"> X1</Prenom> <Civilite B="3">M</Civilite> <Sexe B="4">M</Sexe> <Portrait B="5"> <Fichier B="6" I="J.jpg" S="2932"x/Fichier><First name B = "2"> X 1 </Firstname><Civility B = "3"> M </Civilite><Sex B = "4"> M </Sexe><Portrait B = "5"><File B = "6" I = "J.jpg" S = "2932" x / File>
</Portrait> </Administratif></ Portrait> </ Administrative>
</Professionnel></ Professional>
<Liste D=" l l "> <Doc I=" l "><List D = "l l"> <Doc I = "l">
<Nom>Y2</Nom> <Prenom>X2<Prenom> <Sexe>F</Sexe> </Doc> <Doc I=" 13"><Name> Y 2 </Name><Firstname> X 2 <Firstname><Sexe> F </Sexe></Doc><Doc I = "13">
<Nom>Y[</Nom> <Prenom>X1</Prenom> <Sexe>M</Sexe> </Doc> <Doc I=" 14"> ^ <Nom>Y3 </Nom> <Prenom>X3</Prenom><Name> Y [</Name><Firstname> X 1 </Firstname><Sexe> M </Sexe></Doc><Doc I = "14"> ^ <Name> Y 3 </Name><First name > X 3 </Prenom>
<Sexe>M</Sexe> </Doc> </Liste><Sexe> M </Sexe> </Doc> </Liste>
Si le chemin d' accès à l'élément dans le document est vide, le nom de la balise racine apparaît dans la liste. La taille usuelle des éléments de même que le champ de description ne sont pas utilisés par le serveur. Ces informations, optionnelles, sont simplement destinées à faciliter le formatage de liste de documents quelconques par les postes clients. Si la taille maximale est dépassée, l'information est tronquée dans la liste mais pas dans le document. Il est possible de lister des valeurs d' attribut ou de placer des valeurs d' attribut dans la liste. Il suffit d' indiquer le nom de l' attribut et la suite du chemin, avec la syntaxe suivante : Chemin/® nom de l'Attribut Une liste peut inclure plusieurs balises <Ref>. Les accès aux éléments des listes dans les documents ne tiennent pas compte des éventuels droits d' accès spécifiés dans ces documents.If the path to the item in the document is empty, the name of the root tag appears in the list. The usual size of the elements as well as the description field are not used by the server. This optional information is simply intended to facilitate the formatting of any list of documents by client workstations. If the maximum size is exceeded, the information is truncated in the list but not in the document. It is possible to list attribute values or to place attribute values in the list. It suffices to indicate the name of the attribute and the rest of the path, with the following syntax: Path / ® name of the Attribute A list can include several <Ref> tags. Access to the elements of the lists in the documents does not take account of any access rights specified in these documents.
Les utilisateurs possèdent une grande latitude pour structurer leur document XML. Seuls quelques attributs et balises sont interprétés par le serveur. Au niveau de la racine, l'utilisateur doit toujours préciser le type de document dont il s' agit, c' est-à-dire indiquer, avec l' attribut « D » l'identifiant du méta-document correspondant. Les attributs « I » et «N » sont quant à eux générés par le serveur. Il convient de les rappeler au serveur lors d' une modification ultérieure du document. Le compteur de version permet au serveur de gérer les concurrences d' accès. L' attribut « C » permet éventuellement d' associer le document à un compte. Pour l' utilisateur de ce compte, il s' agira d' un dossier personnel auquel il pourra avoir un accès privilégié. Chaque balise d'un document est automatiquement marquée par le serveur par un identifiant unique, sous la forme d'un attribut « B » qui permet ensuite au logiciel client de désigner efficacement une balise quelconque du document pour réaliser une modification. On a par exemple : <balise B= "id de Balise">. . . </balise> L'attribut "A " permet à l' utilisateur de spécifier les droits d' accès sur une partie du document. Les utilisateurs autorisés à accéder à cette balise peuvent être décrits par leur compte, leur profil ou leur domaine, plus précisément par leur compte pour un utilisateur précis, par leur profil pour des utilisateurs ayant un profil déterminé et particulier et par un domaine pour tous les utilisateurs d'un domaine. On peut spécifier toute une liste d'utilisateurs. On peut avoir par exemple :Users have great latitude in structuring their XML document. Only a few attributes and tags are interpreted by the server. At the root level, the user must always specify the type of document in question, that is to say indicate, with the attribute "D" the identifier of the corresponding meta-document. The attributes "I" and "N" are generated by the server. They should be reminded to the server when the document is subsequently modified. The version counter allows the server to manage access concurrency. The attribute "C" optionally allows the document to be associated with an account. For the user of this account, it will be a personal folder to which he may have privileged access. Each tag in a document is automatically marked by the server with a unique identifier, in the form of an attribute "B" which then allows the client software to effectively designate any tag in the document to make a modification. For example, we have: <tag B = "tag ID">. . . </balise> The "A" attribute allows the user to specify the access rights on a part of the document. The users authorized to access this tag can be described by their account, their profile or their domain, more precisely by their account for a specific user, by their profile for users with a specific and specific profile and by a domain for all users of a domain. You can specify a whole list of users. We can have for example:
A= " R : c 9A" Lecture : compte « 9 A »A = "R: c 9A" Reading: account "9 A"
A="R : cR52+p4E/W : c67 " Lecture : compte « R52 » ou profil « 4E »A = "R: cR52 + p4E / W: c67" Reading: "R52" account or "4E" profile
Lecture et écriture : compte « 67 » A=" R : d2+p9A" Lecture : domaine « 2 » ou profil « 9A »Reading and writing: account "67" A = "R: d2 + p9A" Reading: domain "2" or profile "9A"
Les restrictions d'accès se combinent en parcourant les chemins dans le document à partir de racine.Access restrictions are combined by traversing paths in the document from root.
Les restrictions d' accès se combinent en parcourant les chemins dans le document à partir de la racine.Access restrictions are combined by traversing paths in the document from the root.
Le principe de l' utilisation de la balise <Ref> a déjà été décrit ci- lessus. Un utilisateur d' un domaine donné ne peut créer ou modifier de référence sur un autre domaine. Par contre, l' effacement est autorisé pour Le principe de l'utilisation de la balise <Ref> a déjà été décrit ci- dessus. Un utilisateur d' un domaine donné ne peut créer ou modifier de référence sur un autre domaine. Par contre, l'effacement est autorisé pour éviter des situations d'interblocage. La balise <Ref> constitue une feuille 5 dans l' arborescence XML.The principle of using the <Ref> tag has already been described below. A user of a given domain cannot create or modify a reference on another domain. However, deletion is authorized for The principle of using the <Ref> tag has already been described above. A user of a given domain cannot create or modify a reference on another domain. On the other hand, erasure is authorized to avoid deadlock situations. The <Ref> tag constitutes a sheet 5 in the XML tree.
La balise <Fichier> permet de faire référence à un fichier externe au document géré en bloc par le serveur. La balise fichier utilise des attributs et "I "et" S" générés par le serveur, voir ci-dessous. La balise <fichier> ne contient généralement pas de valeur. 10 Les balises des chemins déclarés dans le méta-document doivent être respectées si l' on désire voir apparaître leur valeur dans la liste des documents.The <File> tag is used to refer to a file external to the document managed as a whole by the server. The file tag uses attributes and "I" and "S" generated by the server, see below. The <file> tag usually does not contain a value. 10 The path tags declared in the meta-document must be respected if you want their value to appear in the list of documents.
Lors du dialogue entre le client et le serveur, le format général d'une requête est le suivant : 15During the dialogue between the client and the server, the general format of a request is as follows: 15
<Requete V=" version de serveur pour laquelle le logiciel client a été créé" T="da te-neure de la requête JJ/MM/AAAA H :MM:SS (horloge client) " I=" (optionnel) iden tifiant (unique ou pas) a t tribué par le clien t" StyleSheet≈" (optionnel) URL d' une feuille de style" StyleErr=" (optionnel) UP.L d' une feuille de style en ces d'erreur" StyleProcess≈" (optionnel) OUI ou NON (défaut) "> <Co pte I="id du compte" K=" (optionnel) clé de valida tion du mot de passe"> ryn. </Cθmptβ> U <Action> LIRE ou LIRE FICHIER ou LISTER ou MODIFIER OU CREER ou<Request V = "server version for which the client software was created" T = "in the duration of the request DD / MM / YYYY H: MM: SS (client clock)" I = "(optional) iden tifier (unique or not) was tributed by the client "StyleSheet≈" (optional) URL of a style sheet "StyleErr =" (optional) UP.L of a style sheet with these errors "StyleProcess≈ "(optional) YES or NO (default)"><Account I = "account id" K = "(optional) password validation key"> ryn. </ Cθmptβ> U <Action> READ or READ FILE or LIST or MODIFY OR CREATE or
ARCHIVER ou SUPPRIMER ou AUTHENTIFIER </Action> <Param>ARCHIVE or DELETE or AUTHENTICATE </Action> <Param>
. . . { champs spécifiques à chaque action) </Param> </Requete> . . . (éventuellement : données rela tives aux fichiers). . . {fields specific to each action) </Param> </Requete>. . . (possibly: data relating to files)
2 La réponse du serveur suit la trame ci-dessous (sauf si un fichier a été demandé) :2 The server response follows the frame below (unless a file has been requested):
<Service V=" ersion du serveur"<Service V = "server version"
K=" (si authen tifica tion du compce par une clé) défi aléa toire" T=" a te-heure du trai temen t JJ/teV/AAAA HH:K- SS (horlcçe serveur) "> . . . (données λï-.'L) <Info>K = "(if the account is authenticated by a key) random challenge" T = "at the time of processing DD / teV / YYYY HH: K- SS (server clock)">. . . (data λï -. 'L) <Info>
<Requete I=" identifian t a ttribué par le client à la rsσuête"X/P.equete><Request I = "ident t t tributed by the client to the search" X / P.equete>
3030
</Info> </Service> En cas d'erreur, le message indique au minimum un code d'erreur :</Info></Service> In the event of an error, the message indicates at least one error code:
<Service V="..." T="..."><Service V = "..." T = "...">
<Erreur I="id de l ' erreur"> _ <Desc> description de l ' erreur </Desc><Error I = "error id"> _ <Desc> description of the error </Desc>
^ </Erreur>^ </Err>
<Info><Info>
<Requete I=" identifian t a t tribué par le clien t à la reσuête"x/Reαuete> </Info> </Service><Request I = "identifian t was awarded by the customer to the head" x / Reαuete> </Info> </Service>
L'attribut de version « N » exige du client qu'il indique pour 0 quelle version du serveur il a été conçu. Cela permet au serveur de rejeter des requêtes obsolètes, en invitant l'utilisateur à réaliser une mise à jour de ses moyens informatiques.The version attribute “N” requires the client to indicate for 0 which version of the server it was designed. This allows the server to reject obsolete requests, by inviting the user to update its IT resources.
Si un identificateur est attribué à la requête par le client, sa valeur sera rappelée dans la réponse du serveur sous l' attribut « I ». Les 5 attributs « StyleSheet », « StyleErr » et « StyleProcess » sont utiles pour effectuer une transformation des documents XML à l' aide de feuilles de style XSL, à l'URL « StyleSheet » si le traitement se passe correctement et, à l'URL « StyleError » en cas d'erreur. Si « StyleProcess » est égal à « NON » et qu'une URL de feuille de style est spécifiée, ladite URL est 0 recopiée en tête des données XML renvoyées :If an identifier is assigned to the request by the client, its value will be recalled in the server response under the attribute "I". The 5 attributes "StyleSheet", "StyleErr" and "StyleProcess" are useful for transforming XML documents using XSL style sheets, at the URL "StyleSheet" if the processing is successful and, when 'StyleError' URL in case of error. If "StyleProcess" is equal to "NO" and a style sheet URL is specified, said URL is 0 copied at the head of the returned XML data:
< ? xml-stylesheet type="text/xsl" href= "URL indiquée dans la requête " ?><? xml-stylesheet type = "text / xsl" href = "URL specified in the request"?>
Si « StyleProcess » est égal à «OUI », le serveur réalise lui-même 5 la transformation du résultat XML de la requête avec les feuilles de style spécifiées (qui, dans ce cas, doivent être locales au serveur). L' attribut de date « T » n' est pas vérifié par le serveur. Si l'on ne dispose pas aisément de cette information, par exemple sur un téléphone mobile, en WML script, il suffit d'initialiser l' attribut à une valeur 0 quelconque. L' attribut « Requête/Compte/K » correspond à un code calculé dépendant du mot de passe de l' utilisateur. Il peut prendre différentes formes selon les capacités de calcul du poste client. Il s' agit d' un mécanisme de précaution pour dissuader les velléités d' accès non autorisé. Un compte peut être désigné de plusieurs manières, par son identifiant unique par le nom du compte et le nom de domaine ou encore par un identifiant unique de clef.If "StyleProcess" is equal to "YES", the server itself performs the transformation of the XML result of the request with the specified style sheets (which, in this case, must be local to the server). The date attribute "T" is not checked by the server. If this information is not readily available, for example on a mobile phone, in WML script, it suffices to initialize the attribute at any value 0. The attribute "Request / Account / K" corresponds to a calculated code dependent on the password of the user. It can take different forms depending on the computing capacities of the client workstation. It is a precautionary mechanism to deter the desire for unauthorized access. An account can be designated in several ways, by its unique identifier by the name of the account and the domain name or even by a unique key identifier.
La première requête adressée au serveur par un utilisateur est en général celle qui permet d' obtenir la description du compte de l'utilisateur ce qui est intéressant pour utiliser directement l'identifiant du compte dans les requêtes ultérieures et pour vérifier d'emblée l'exactitude des paramètres d' accès. La requête et la réponse du serveur peuvent prendre la forme suivanteThe first request sent to the server by a user is generally that which allows the description of the user's account to be obtained, which is advantageous for directly using the account identifier in subsequent requests and for immediately checking the accuracy of access parameters. The server request and response can take the following form
<Requete V<Request V
<C ! et d'authentification du compte)
Figure imgf000025_0001
<C ! and account authentication )
Figure imgf000025_0001
</Co pte> <Action>LIRE</Action></ Co pte> <Action> READ </Action>
</Requete></ Request>
<Service V="..." T="..."><Service V = "..." T = "...">
<Compte D=" l " I-"id du compte" V=" d de version B- ... ><Account D = "l" I- "id of account" V = "d of version B- ...>
<Utilisateur B="..."><User B = "...">
<Nom B="..."> nom d' utilisa teur </Nom> <Prenom B="..."> prénom </Prenom><Last name B = "..."> user name </Name> <First name B = "..."> first name </Firstname>
</Corapte> </Service></Corapte> </Service>
La requête de liste permet d' obtenir la liste des documents d'un type donné. Il est possible de filtrer cette liste en indiquant des valeurs pour les éléments à lister. Un filtre est constitué par les mêmes chemins que ceux indiqués pour la liste dans le méta-document. Une valeur de filtre terminée par « * » désigne une suite de caractères quelconque. Une requête de liste de documents et la réponse du serveur peuvent se présenter sous la forme suivante : <Requete V=".„" T="...">The list query is used to obtain the list of documents of a given type. It is possible to filter this list by indicating values for the elements to be listed. A filter consists of the same paths as those indicated for the list in the meta-document. A filter value ending with "*" indicates any sequence of characters. A request for a document list and the response from the server can take the following form: <Request V = ".„ "T =" ... ">
<Compte I="id du compte" K="...'!x/Compte><Account I = "account id" K = "... ' ! X / Account>
<Action> ISTER</Action><Action> ISTER </Action>
<Param><Settings>
<Doc D="id du méta-document" I="filtre sur 1 ' id du documen t"><Doc D = "id of meta-document" I = "filter on document id">
. . . (filtre sur les éléments listés) </Doc> </Param> </Requete>. . . (filter on the listed items) </Doc> </Param> </Requete>
<Service V≈"..." T="..."><Service V≈ "..." T = "...">
< iste D="id du meta -document" ><iste D = "meta-document id">
<Doc I="id du document"><Doc I = "document id">
. . . (éléments à lister pour ce documen t) </Doc>. . . (items to list for this document) </Doc>
. . . (répéti tion de « Doc »). . . (repetition of "Doc")
</Liste> </Service> En réponse à une requête de. lecture d'un document, le fichier envoie les données binaires du fichier sauf en cas d' erreur ou il envoie un message d'erreur XML.</Liste> </Service> In response to a request from. reading a document, the file sends the binary data of the file except in case of error or it sends an XML error message.
La suppression ou l' archivage d'un document entraîne la suppression de l' archivage des fichiers associés à ce document. Si l'opération de suppression ou d' archivage s'est bien passée, la réponse du serveur est réduite au minimum. La requête de suppression ou d' archivage et la réponse du serveur peuvent se présenter1 comme su-it :Deleting or archiving a document deletes the archiving of files associated with this document. If the delete or archive operation went well, the server response is minimized. The request for deletion or archiving and the response from the server can appear 1 as follows:
<Requete V="..." T="..."> <Compte I="id du compte" ="..."X/Compte><Request V = "..." T = "..."> <Account I = "account id" = "..." X / Account>
<Action> SUPPRIMER ou ARCHIVER </Action> <Param><Action> DELETE or ARCHIVE </Action> <Param>
<Doc D="id du méta -documen " I≈"id du documεnt"X/Doc><Doc D = "id of the meta-document" I≈ "id of the document" X / Doc>
</Pararn> </Reαuete></Pararn> </ Reαuete>
<Service V= Il _ll II * </Service><Service V = Il _ll II * </Service>
Pour créer un document, il faut en envoyer le contenu XML au serveur, avec le contenu des éventuels fichiers joints. En réponse, le serveur renvoie la totalité du document XML, complété par les attributs « I » et « N » à la racine et les attributs « B » au niveau de chaque balise. La requête de création et la réponse du serveur peuvent se présenter comme suit :To create a document, you must send the XML content to the server, with the content of any attached files. In response, the server returns the entire XML document, supplemented by the attributes "I" and "N" at the root and the attributes "B" at the level of each tag. The creation request and the server response can be presented as follows:
<Requete V="..." T="..." I="..."><Request V = "..." T = "..." I = "...">
<Corapte I="id du compte" K="..."x/Compte><Corapte I = "account id" K = "..." x / Account>
<Action>CREER</Action><Action> CREATE </ Action>
<Param><Settings>
< balise racine D="id du méta -documen t"><root tag D = "meta-document id t">
. . . (contenu du documen t). . . (content of the document)
</ balise racine > </Parara> . <:/Requete>J</ root tag> </Parara>. <: / Request> J
Les données relatives au fichier sont ajoutées à la suite de la requête de création, en utilisant une séquence de caractères quelconque comme séparateur, par exemple. On retrouve autant de blocs de données que de balises « Fichier » dans le document XML. De plus, le ième bloc est supposé correspondre à la ième balise « fichier ». Chacune de ces balises doit posséder un attribut « I » qui indique au serveur l'extension ( à trois lettres ) à donner au fichier. Dans la réponse du serveur, l ' attribut « I » est complété par un nom pour constituer un identificateur unique de fichier. De plus, la taille du fichier transmis est indiquée dans un attribut « S » :The data relating to the file is added following the creation request, using any sequence of characters as a separator, for example. There are as many data blocks as “File” tags in the XML document. In addition, the i th block is assumed to correspond to the i th “file” tag. Each of these tags must have an "I" attribute that tells the server the extension (three letters) to give to the file. In the server response, the "I" attribute is supplemented by a name to constitute a unique file identifier. In addition, the size of the transmitted file is indicated in an "S" attribute:
<Fichier I="nom. extension" S="taille en octets"x/Fichier> Si le logiciel client conserve une copie locale des fichiers, par exemple pour permettre un travail sans connexion au serveur, il lui est nécessaire de renommer ces fichiers avec les nouveaux noms attribués par le serveur. Pour faciliter cette opération, le client peut indiquer, dans le requête de création, les noms de fichiers utilisés localement. Dans sa réponse, le serveur fournit alors également une liste de renommage, qui donne directement la correspondance entre les anciens noms, ceux du client, et les nouveaux noms, ceux attribués par le serveur. Le format de cette liste peut être le suivant :<File I = "name. Extension" S = "size in bytes" x / File> If the client software keeps a local copy of the files, for example to allow work without connection to the server, it is necessary to rename these files with the new names assigned by the server. To facilitate this operation, the client can indicate, in the creation request, the file names used locally. In its response, the server then also provides a renaming list, which directly gives the correspondence between the old names, those of the client, and the new names, those assigned by the server. The format of this list can be as follows:
<Renom>C1.E1 :S Eι | etc </Renom> avec Cx et suivants les noms donnés par le client,<Name> C 1 .E 1 : S Eι | etc </Renom> with C x and following the names given by the client,
! et suivants les noms donnés par le serveur, et! and following the names given by the server, and
Et et suivants les noms d'extensions.E t and following the names of extensions.
La modification d'un document s' effectue en envoyant au serveur la séquence des ordres élémentaires de modification à réaliser. Si les fichiers sont modifiés ou créés, il convient également d' en envoyer le contenu au serveur. Le principe est le même que pour la création de documents. Les données sont classées à la suite de la requête, dans l'ordre défini par les balises «Fichier » de la partie XML. A la place du contenu du document on envoie une liste d' ordres élémentaires de modifications à réaliser. En l' absence d'erreur, le serveur répond en renvoyant le contenu du document XML modifié. On retrouve également la liste de renommage des fichiers, dont le principe est conservé. On prévoit également que la réponse du serveur contienne une liste de fichiers modifiée qui contient les noms des fichiers qui ont été créés ou modifiés entre la version de document indiquée par le serveur (Requête/doc/Arobase N) et celle du document renvoyé par le serveur (Service/balise/racine/@ N). L'information est intéressante dans le cas d'un client qui permet le travail en local, puisqu' il connaît ainsi quels sont les fichiers à réactualiser. La liste peut faire abstraction de la dernière modification, effectuée par le client lui-même. Il n'y a pas de liste de fichier effacés dans la mesure où le client peut facilement la constituer lui-même, notamment par comparaison des balises « Fichier » avant et après modification du document. Les opérations élémentaires de modification peuvent être prévues au nombre de quatre : l'effacement d'une balise existante notée D, la modification du sous arbre d'une balise ou de la valeur s'il s' agit d' une feuille et modification éventuelle des attributs, notée M, la création d'un nouveau sous arbre noté C, la modification des attributs de la balise et éventuellement des droits d' accès notée A. Un ordre élémentaire de modification comprendra généralement l' identificateur de la balise et de façon optionnelle le nom de la balise ce qui est une information redondante mais qui peut s' avérer utile. Les opérations de modifications s'effectuent de la façon suivante : EffacementThe modification of a document is carried out by sending the server the sequence of elementary modification orders to be carried out. If the files are modified or created, they should also be sent to the server. The principle is the same as for the creation of documents. The data are classified following the request, in the order defined by the "File" tags in the XML part. Instead of the content of the document, a list of elementary orders of modifications to be sent is sent. If there is no error, the server responds by returning the content of the modified XML document. We also find the file renaming list, the principle of which is preserved. It is also expected that the server response will contain a modified file list which contains the names of the files that have been created or modified between the document version indicated by the server (Request / doc / Arobase N) and that of the document returned by the server (Service / tag / root / @ N). The information is interesting in the case of a client who allows local work, since he thus knows which files are to be updated. The list can ignore the last modification, made by the customer himself. There is no list of files deleted since the customer can easily create it himself, in particular by comparing the “File” tags before and after modification of the document. There are four basic elementary modification operations: erasing an existing tag denoted D, modifying the subtree of a tag or the value if it is a sheet and possible modification attributes, denoted M, creation of a new subtree denoted C, modification of the attributes of the tag and possibly access rights denoted A. An elementary modification order will generally include the identifier of the tag and so optional the name of the tag which is redundant information but which can be useful. The modification operations are carried out as follows: Erasure
< D B= "identificateur de la balise à effacer" > </D><D B = "tag identifier to delete"> </D>
Modification de baliseTag modification
<M B= "identificateur de la balise à modifier" (optionnel) nom d'attrib t- 'valeur" nom d'attribut≈' 'valeur" ... > nouveau sous-arbre (sans identificateurs de balises) ou valeur s 'il s 'agit d'une feuille<MB = "identifier of the tag to be modified" (optional) attribute name t- 'value "attribute name≈' 'value" ...> new subtree (without tag identifiers) or value s' it is a leaf
</M></ M>
CréationCreation
<C B= "identificateur de la balise père" > nouveau sous-arbre (sans identificateurs de balises) ou valeur s'il s'agit d'une feuille </C><C B = "identifier of the father tag"> new sub-tree (without tag identifiers) or value if it is a sheet </C>
Modification d'attributsEditing attributes
<A B= "identificateur de la balise à modifier" nom d'attribut- ' valeur" nom d'attribut="valeur" ... > </A><A B= "tag identifier to modify" attribute name- 'value" attribute name="value" ...> </A>
Dans un mode de réalisation de l' invention, il conviendra d'indiquer la totalité des attributs pour leur modification. En effet, pour la balise désignée, la nouvelle liste des attributs peut être intégralement recopiée dans le document, à la place de l' ancienne. Le tableau suivant donne un exemple d'un document avant modification, d'une requête de modification et de la réponse du serveur avec le document après modification. Document avant modifications :In one embodiment of the invention, it will be necessary to indicate all the attributes for their modification. Indeed, for the designated tag, the new list of attributes can be fully copied into the document, in place of the old one. The following table gives an example of a document before modification, a modification request and the server response with the document after modification. Document before modifications:
<Patient D≈"10" B="ll" v≈"0" I="35"> <Administratif A="R:c65/W:c65" B="13"> <Prenom B="18">Albert</Prenom> <Mom B="19">DUBOIS</Mom> <Civilite B≈"1A">M.</Civilite> <Sexe B="1B">M</Seκe><Patient D≈ "10" B = "ll" v≈ "0" I = "35"> <Administrative A = "R: c65 / W: c65" B = "13"> <First name B = "18"> Albert </Prenom> <Mom B = "19"> DUBOIS </Mom> <Civility B≈ "1A"> M. </Civilite> <Gender B = "1B"> M </ Seκe>
<Profession B="lC">Electricien</Profession> <Portrait B="1D"><Profession B = "lC"> Electrician </Profession> <Portrait B = "1D">
<Fichier I="14.jpg" B="1E" S="4477"x/Fichier> </Portrait> </Administra if> <General B="1F"> <BlocPiece B="1G"> <Piece B="1H"><File I = "14.jpg" B = "1E" S = "4477" x / File> </Portrait> </ Administra if> <General B = "1F"> <BlocPiece B = "1G"> <Piece B = "1H">
<Fichier I="15.txt" S="19" B="lI"X/Fichier> <Date B="lJ">19/ιo/2000</Dâte> </Piece> <Piece B="1K"><File I = "15.txt" S = "19" B = "lI" X / File> <Date B = "lJ"> 19 / ιo / 2000 </ Dâte> </Piece> <Piece B = "1K ">
<Fichier I≈-lβ.jpg" S="49601" B="1L"X/Fichier> <Date B="1M">20/I0/2000</Date> </Piece> <Piece B="1N"><File I≈-lβ.jpg "S =" 49601 "B =" 1L "X / File> <Date B =" 1M "> 20 / I0 / 2000 </Date> </Piece> <Piece B =" 1N ">
<Fichier I≈"17.rtf" S="1007" B="10"X/Fichier> <Date B="lP">20/10/2000</Date> </Piece> </Bloc?iece> </General> </Patient><File I≈ "17.rtf" S = "1007" B = "10" X / File> <Date B = "lP"> 20/10/2000 </Date> </Piece> </ Bloc? Iece> </General> </Patient>
Requête de modifications :Request for modifications:
<P.equete I="8" V="1.0" T="20/10/2000 17:24:51"><P.equete I = "8" V = "1.0" T = "10/20/2000 5:24:51 PM">
<Compte I="65" K="40K14bho4PSMï 3BjIDcJ"x/Compte><Account I = "65" K = "40K14bho4PSMï 3BjIDcJ" x / Account>
<Action>MODIFIER</Action><Action> EDIT </ Action>
<?ara ><? ara>
<Doc D="10" I="35" V="0"> <D B="1E"X/D> <A B="13" A=" :c65"X/A> <H B="lC">Electrotechnicien</M> <M B="10" I="17.rtf" ></M> <C B="1G"> <Piece><Doc D = "10" I = "35" V = "0"> <DB = "1E" X / D> <AB = "13" A = ": c65" X / A> <HB = "lC" > Electrical engineer </M> <MB = "10" I = "17.rtf"> </M> <CB = "1G"> <Piece>
<Fichier I="_5. jpg"X/Fichier> <Date>20/10/2000</Date> % *<Desc>R.MN tete</Desc> </Piece> </C> </Doc><File I = "_ 5. Jpg" X / File><Date> 20/10/2000 </Date> % * <Desc> R.MN tete </Desc></Piece></C></Doc>
</Para > </Requete> — «nextpart» y0i>àqsd3éunhacàçθlzrc31azn . . . (données binaires du fichier « 17.rtf ») — «nextpart»</ Para></Requete> - "nextpart"y0i> àqsd3éunhacàçθlzrc31azn. . . (binary data from the file “17.rtf” ) - “nextpart”
8)àSéeçàbQdYEdAER£§μ23ZAst . . . (données binaires du fichier « _5.JP9 »)8) àSéeçàbQdYEdAER £ §μ23ZAst. . . (binary data from the file "_5.JP9")
— «nextpart» — Réponse avec document après modifications :- "nextpart" - Response with document after modifications:
<Service V="1.0" T="20/10/2000 17 : 25 : 01"> <Patient D="10" B="ll" V≈"2" I="35"> administratif A="W: c65" B="13 "> <Prenom B="18">Albert</Prenom> <Nom B="19">DUB0IS</Nom><Service V = "1.0" T = "20/10/2000 17: 25: 01"> <Patient D = "10" B = "ll" V≈ "2" I = "35"> administrative A = "W : c65 "B =" 13 "> <First name B =" 18 "> Albert </Prenom> <Name B =" 19 "> DUB0IS </Nom>
<Civilite B="1A">M . </Civilite> <Sexe B="1B">M</Sexe><Civility B = "1A"> M. </Civilite> <Gender B = "1B"> M </Sexe>
<Profession B="lC">Electrotechnicien</Profession> <Portrait B="lD"X/Portrait> </Adrπ.inistratif> <General B="1F"> <BlocPiece B="1G"> <Piece B="1H"> <Fichier I="15. txt" S=="232" B="ll"x/Fichier><Profession B = "lC"> Electrical engineer </Profession> <Portrait B = "lD" X / Portrait> </Adrπ.inistratif> <General B = "1F"> <BlocPiece B = "1G"> <Piece B = "1H"> <File I = "15. Txt" S == "232" B = "ll" x / File>
<Date B="U">20/10/2000</Date> </Piece> <Piece B="1K"><Date B = "U"> 20/10/2000 </Date> </Piece> <Piece B = "1K">
<Fichier I="16. jpg" S="49601" B≈"1L"X/Fichier> <Date B="lM">20/10/2000</Date> </Fiece> <Piece B="1M"><File I = "16. Jpg" S = "49601" B≈ "1L" X / File> <Date B = "lM"> 20/10/2000 </Date> </Fiece> <Piece B = "1M ">
<Fichier I="17 . rtf" S="2934 " B="10"X/Fichier> <Date B="lP">20/10/2000</Date> </Piece> <Piece B="1U"><File I = "17. Rtf" S = "2934" B = "10" X / File> <Date B = "lP"> 10/20/2000 </Date> </Piece> <Piece B = "1U ">
<Fichier I="18. jpg" S="4293 " B="lV"X/Fichier> <Date B="lW">20/10/2000</Date> <Desc B="1X">RMN tete</Desc> </Piece> </BlocPiece> <Sang B="1S"><File I = "18. Jpg" S = "4293" B = "lV" X / File> <Date B = "lW"> 20/10/2000 </Date> <Desc B = "1X"> RMN head </Desc> </Piece> </BlocPiece> <Blood B = "1S">
<Groupe B="lT">0</Groupe> </Sang> </Ger.eral> </Pati ent> <Info><Group B = "lT"> 0 </Groupe> </Sang> </Ger.eral> </ Pati ent> <Info>
<Renoτn>_5. jpg : 18 . jpg</Renorn> <Modif>15. txt</Modif> <Requete I="8 "x/F.equete> </Info> -<Renoτn> _5. jpg: 18. jpg </Renorn> <Modif> 15. txt </Modif> <Request I = "8" x / F.equete> </Info> -
</Service></ Service>
On notera qu'entre la première lecture du document par l'utilisateur et l'envoi de !a requête de modification, le document a été modifié par un autre utilisateur (et, en particulier, le fichier « 15.txt » indiqué dans la liste de modifications « Service/info/Modif»). Ceci explique que la version passe de la valeur « 0 » (« Requete/Param/Doc/@V ») à la valeur « 2 » (« Service/Patient/@V »). Une erreur est générée par le serveur si un utilisateur essaie de modifier la valeur d' une balise, alors que la valeur initiale de cette balise n' est déj à plus valide, suite à une modification effectuée entre temps sur le serveur par un autre utilisateur. Autrement dit, il faut que la valeur de balise que voit l' utilisateur corresponde bien à celle sur le serveur pour que la modification soit autorisée. En reprenant le tableau précédent, si dans la requête, on avait également tenté de modifier le fichier « 15.txt » avec l' ordre : <M B = « II » I = « 15.txt » ></M>.It should be noted that between the first reading of the document by the user and the sending of the modification request, the document was modified by another user (and, in particular, the file "15.txt" indicated in the list of modifications "Service / info / Modif"). This explains that the version changes from the value "0"("Request / Param / Doc / @ V") to the value "2"("Service / Patient / @ V"). An error is generated by the server if a user tries to modify the value of a tag, while the initial value of this tag is no longer valid, following a modification made in the meantime on the server by another user . In other words, the tag value that the user sees must match that on the server for the modification to be authorized. Using the previous table, if in the request, we also tried to modify the file "15.txt" with the order: <MB = "II" I = "15.txt"></M>.
Le serveur aurait renvoyé un message d' erreur indiquant une concurrence d' accès :The server would have returned an error message indicating concurrency:
<Service V="1.0" T="20/10/2000 17 : 25: 01"> <Erreur I="9000"><Service V = "1.0" T = "10/20/2000 5:25:01 PM"> <Error I = "9000">
<Desc>Document modifie entre temps par un autre utilisateur</Dεsc> <Oriçine B="1I " N="Fichier"x/Origine> </Erreur> <Info> ' <Requete I="8 "x/P.equete><Desc> Document modified in the meantime by another user </ Dεsc> <Oriçine B = "1I" N = "File" x / Origin> </Erreur> <Info> '<Request I = "8" x / P. equete>
</Info> </Service></Info> </Service>
La balise à l'origine de l'erreur est précisée dans le message d'erreur sous la forme :The tag causing the error is specified in the error message in the form:
<Origine E="id de la balise" N="nom de la Jbalise"x/Origine><Origin E = "tag id" N = "name of the tag" x / Origin>
Le système comprend également un mécanisme d' authentification du compte à l' aide de clefs. On entend ici, de manière générale, un mécanisme d' authentification à l' aide de clefs asymétriques, basées sur la résolution de défis : certificat, cartes à puce ... L' utilisateur dispose des informations suivantes : un identifiant unique également appelé identifiant de clefs notées Kid, une clef publique Kpub, une clef privée Kpriv et des données d' accréditation Daccrd.The system also includes an account authentication mechanism using keys. We mean here, in general, an authentication mechanism using asymmetric keys, based on solving challenges: certificate, smart cards ... The user has the following information: a unique identifier also called an identifier of keys marked Kid, a public key Kpub, a private key Kpriv and Daccrd accreditation data.
Lors d' une première requête particulière, l' utilisateur envoie au serveur les valeurs de l' identifiant de clef, de la clef publique et des données d' accréditation. La redondance contenue dans ces données permet au serveur d' en vérifier la validité. Le serveur génère une séquence aléatoire notée D qu' il renvoie en retour au client. Le triplet de valeur identifiant de clef, clef publique et séquence aléatoire est mémorisé par le serveur;During a first specific request, the user sends the values of the key identifier, the public key and the accreditation data to the server. The redundancy contained in this data allows the server to check its validity. The server generates a random sequence denoted D which it sends back to the client. The triplet of value identifier of key, public key and random sequence is memorized by the server;
Chaque réponse du serveur à une requête du client contient une nouvelle valeur de séquence aléatoire. L' utilisateur crypte cette valeur avec sa clef privée et en renvoie le résultat dans la requête suivante pour que celle-ci soit acceptée. Avec la valeur de clef publique mémorisée, le serveur peut décrypter le résultat et vérifier qu' il retrouve bien la valeur de la séquence aléatoire, également mémorisée, voir le tableau ci- dessous :Each server response to a client request contains a new random sequence value. The user encrypts this value with his private key and returns the result in the following request for it to be accepted. With the value of the public key stored, the server can decrypt the result and verify that it has found the value of the random sequence, also stored, see the table below:
Figure imgf000033_0001
La première requête de l'utilisateur est construite comme suit :
Figure imgf000033_0001
The first user request is constructed as follows:
<Requete V="..." T=>"..."><Request V = "..." T => "...">
<Compte K="clé de valida tion du mot de passe"><Account K = "password validation key">
<Cle C=" type" I="id de cle (soi t KId avec les nota tions précéden tes) "></Cl </Corapte><Cle C = "type" I = "id de cle (so KId with the previous notations)"> </ Cl </Corapte>
<Action>AUTHENTIFIER</Action> <Param><Action> AUTHENTICATE </Action> <Param>
. . . (clef publique et données d' accrédi ta tion) </Param> </Requete>. . . (public key and accreditation data) </Param> </Requete>
10 Si ces données sont jugées valides, le serveur renvoie le premier défi sous la foπne d'un attribut « K » (la valeur du défi est exprimée en base 64), ainsi que l'identifiant du compte :10 If this data is deemed valid, the server returns the first challenge under the form of an attribute "K" (the value of the challenge is expressed in base 64), as well as the account identifier:
<Service v=".„" T≈"..." K="valeur du défi en base 64"><Service v = ".„ "T≈" ... "K =" value of the challenge in base 64 ">
<Compte I="..."X/Compte> </Service><Account I = "..." X / Account> </Service>
1515
Pour les requêtes suivantes, le client indique à chaque fois sa réponse (en base 64) au défi de la requête précédente dans un attribut K au niveau de la balise « Requete/Compte/Cle » :For the following requests, the client indicates each time its response (in base 64) to the challenge of the previous request in a K attribute at the level of the “Request / Account / Key” tag:
<Requete V="..." T="..."><Request V = "..." T = "...">
<Co-ιpte I≈"..." K="clé de validation du moi de passe"><Co-ιpte I≈ "..." K = "validation key for the password">
<Cle C="type" I="id de cle" K≈" réponse au défi en base 64"></C_ -> </Cc:apte> on <Action> . . . </Action><Key C = "type" I = "key id" K≈ "response to the challenge in base 64"> </ C_ -> </ Cc: apt> on <Action>. . . </ Action>
<Param><Settings>
</Pararn> </Requete></Pararn> </Requete>
25 Dans le cas d'une réponse au format XML, le défi est à nouveau indiqué au niveau de la racine : service V-y T="..." ^nouveau défi pour la requête suivante^ 25 In the case of a response in XML, the challenge is again indicated at the root: Service Vy T = "..." ^ new challenge for the next request ^
. . (contenu XML de la réponse) </Service> . . ( response XML content ) </Service>
0 XMTS lι 7 d'U rCt ^ flchie,rμes données Wπaires du fichier sont précédées d'un en-têt Snnée du chier ∞W0**! "^* cet en-têtepuis l'éliminer pour ne conserver que le0 XMT S l ι 7 of U r Ct ^ flchie, μ r es Wπaires of data f i le are preceded by an in-Tet Snnée the le ∞W ** 0! "^ * this header and then delete it to keep only the
<Servιce V="..." τ="." K≈"nouveau défi pour la requête suivante"><Service V = "..." τ = ". "K≈" new challenge for the following request ">
</Service>J données binaires du fichier Si l'identification et l'authentification du compte se déroulent correctement, le serveur renvoie, toujours un nouveau défi, même en cas d'erreur sur le traitement demandé (exemple ci-après).</Service> J binary data from the file If the identification and authentication of the account are conducted properly, the server returns, always a new challenge, even in case of error on the requested treatment (example below).
ExempleExample
<Service V-'l . O" T=*'08/12/2000 13 : 54 : 56" K="Jif2hZcVrR3SlN3Edhk5MfGttVg="><Service V -'l. O "T = * '08 / 12/2000 13: 54: 56" K = "Jif2hZcVrR3SlN3Edhk5MfGttVg =">
<Erreur I=',8111,'><Error I = ' , 8111 , '>
<Desc>Privilège insuffisant</Desc><Desc> Insufficient privilege </Desc>
</Erreur> </Service></Err>> </Service>
Si l'erreur concerne l'identification ou l'authentification du compte, le serveur ne génère pas de nouveau défi et il convient de reprendre le protocole d'authentification à son début .If the error concerns the identification or authentication of the account, the server does not generate a new challenge and the authentication protocol should be resumed at its beginning.
Exemple :Example:
<Service V="1.0" T="08/12/2000 13:50:41"> <Erreur I="9999"><Service V = "1.0" T = "08/12/2000 13:50:41"> <Error I = "9999">
<Desc>Accès refusé</Desc> </Erreur><Desc> Access denied </Desc> </Err>
</Service></ Service>
Comme il a été indiqué plus haut, il est possible d' associer un compte à un document et d'imposer, au niveau du profil, de présenter les paramètres d' accès à ce compte pour pouvoir obtenir un accès au document. Dans ce cas, pour toutes les requêtes relatives à un document de ce type, les paramètres du compte sont indiquées dans le bloc <Param> de la requête. L'identification du propriétaire du document peut servir à l'identification du document dans la mesure où il n' est possible de mettre en relation qu'un seul compte et qu'un seul document. On dispose ainsi en définitive de trois possibilités pour désigner un document : l'identifiant du document du type I = "Id du document", l'identifiant du compte du propriétaire du document du type C= "Id du compte du propriétaire", et les paramètres du compte du propriétaire du document. Si les deux comptes de l' utilisateur et du propriétaire du document font intervenir une clef d' authentification, la valeur de la séquence aléatoire est la même pour les deux comptes et correspond à la valeur renvoyée lors de l' authentification du compte de l'utilisateur. Pour la gestion des droits d' accès- pour une balise isolée, on applique deux règles : en l' absence de restriction de droit de lecture, le droit est considéré comme acquis, en l' absence de restriction de droit en écriture, le droit est acquis pour les utilisateurs autorisés en lecture. L' algorithme d' évaluation des droits d' accès au niveau d'une balise tel qu' exécuté par le serveur peut être, de façon simplifiée, le suivant :As indicated above, it is possible to associate an account with a document and to impose, at the level of the profile, to present the parameters of access to this account in order to be able to gain access to the document. In this case, for all requests relating to a document of this type, the account parameters are indicated in the <Param> block of the request. The identification of the owner of the document can be used to identify the document insofar as it is only possible to link a single account and a single document. There are thus ultimately three possibilities for designating a document: the identifier of the document of type I = "Id of the document", the identifier of the account of the owner of the document of the type C = "Id of the account of the owner", and the document owner account settings. If the two accounts of the user and the owner of the document use an authentication key, the value of the random sequence is the same for the two accounts and corresponds to the value returned during the authentication of the account of the. user. For the management of access rights - for an isolated tag, two rules are applied: in the absence of restriction of read right, the right is taken for granted, in the absence of restriction of write right, the right is acquired for users authorized to read. The algorithm for evaluating access rights at the beacon level as executed by the server can be, in a simplified manner, as follows:
Fonction AccesBal ( Oper : "R" ou "W" ; B : Balise ; Util : Utilisateur ) : booléenAccesBal function (Oper: "R" or "W"; B: Beacon; User: User): boo l éen
' - Lire l' attribut des droits d' accès de la balise B, soit : A = " R : ListeUtilR / W : ListeUtil "'- Read the attribute of access rights for tag B, ie: A = "R: ListUtilR / W: ListUtil"
(s' il n' y a pas d' attribut A, les listes sont supposées vides)(if there is no attribute A, the lists are assumed to be empty)
- Si Oper = "R" alors- If Oper = "R" then
Si ListeUtilR est videIf ListUtilR is empty
Alors AccesBal = VraiThen AccesBal = True
Sinon AccesBal = ( Util ε ListeUtilR )Otherwise AccesBal = (Use ε ListUtilR)
- Si Oper = "W" alors.- If Oper = "W" then.
Si ListeUtilW est videIf ListUtilW is empty
Alors AccesBal = AccesBal ("R", B, Util)Then AccesBal = AccesBal ("R", B, Util)
Sinon AccesBal = ( Util e ListeUtilW )Otherwise AccesBal = (Use ListUtilW)
On prévoit également que le serveur comprenne les. deux fonctions suivantes de gestion des accès supérieur et inférieur à partir d'une balise donnée. Ces fonctions permettent de gérer l'imbrication des balises.The server is also expected to understand them. following two functions for managing upper and lower access from a given tag. These functions allow you to manage the nesting of tags.
Fonction AccesSup ( Oper : "R" ou "W" ; B : Ealise ; Util : Utilisateur ) : booléenAccesSup function (Oper: "R" or "W"; B: Ealise; Util: User): boolean
S'il existe une balise B' parente de B (à un niveau quelconque) telle que AccesBal (Oper, B* , Util) ≈ Faux AlorsIf there is a tag B 'parent of B (at any level) such as AccesBal (Oper, B *, Util) ≈ False Then
AccesSup = Faux SinonAccesSup = False Otherwise
AccesSup = VraiAccesSup = True
Fonction Acceslnf ( Oper : "R" ou "W" ; B : Balise ; Util : Utilisateur ) : booléen S'il existe une balise B' fille de B (à un niveau quelconque) telle queAcceslnf function (Oper: "R" or "W"; B: Tag; User: User): boolean If there is a tag B 'daughter of B (at any level) such as
AccesBal (Oper, B' , Util) = Faux AlorsAccesBal (Oper, B ', Util) = False Then
. Acceslnf ≈ Faux Sinon. Acceslnf ≈ False Otherwise
Acceslnf = Vrai Une balise n'est visible pour un utilisateur que si ladite balise, ainsi que toutes les balises parentes, donnent un droit en lecture à cet utilisateur. L' opération de filtrage en lecture peut se traduire par la procédure suivante :Acceslnf = True A tag is only visible to a user if the tag, as well as all of the parent tags, give the user read rights. The read filtering operation can result in the following procedure:
Procédure Filtrage ( Doc ': document ; Util : Utilisateur )Filtering procedure (Doc ' : document; User: User)
Effacer toutes les balises B de Doc telles que : (AccesBal ("R", B, Util) = Faux) ou (AccesSup ("R", B, Util) = Faux)Clear all B tags from Doc such as: (AccesBal ("R", B, Util) = False) or (AccesSup ("R", B, Util) = False)
Pour effectuer des modifications élémentaires, par exemple pour effacer (opération D) ou modifier une balise (opération M), il faut disposer du droit en écriture pour la balise concernée, pour les balises parentes et pour le balises filles. Pour modifier les attributs d'une balise (opération A) ou ajouter une balise fille (opération C), il faut disposer du droit en écriture pour la balise concernée et pour les balises parentes.To make elementary modifications, for example to delete (operation D) or modify a tag (operation M), you must have write permission for the tag concerned, for the parent tags and for the daughter tags. To modify the attributes of a tag (operation A) or add a daughter tag (operation C), you must have write permission for the tag concerned and for the parent tags.
Ainsi l'opération de l'un des quatre types décrit ci-dessus et notée « Oper » demandée par un utilisateur « Util » et relative à une balise « B » n' est autorisée que si la fonction suivante implémentée dans le serveur renvoie la valeur vrai :Thus the operation of one of the four types described above and noted "Oper" requested by a user "Util" and relating to a tag "B" is only authorized if the following function implemented in the server returns the true value:
Fonction AccesOperAccesOper function
(Oper : "D", "M", "C" ou "A" ; B : balise ; Util : Utilisateur ) : booléen(Oper: "D", "M", "C" or "A"; B: tag; User: User): boolean
Si Oper = "D" ou Oper ≈ "M" alorsIf Oper = "D" or Oper ≈ "M" then
AccesOper = AccesBal ("W", B, Util) et AccesSup ("W", B, Util) et Acceslnf ("W", B, Util)AccesOper = AccesBal ("W", B, Util) and AccesSup ("W", B, Util) and Acceslnf ("W", B, Util)
Figure imgf000037_0001
alors
Figure imgf000037_0001
so
AccesOper = AccesBal ("W", B, Util) et AccesSup ("W", B, Util)AccesOper = AccesBal ("W", B, Util) and AccesSup ("W", B, Util)
L' invention s' applique avantageusement dans le domaine médical plus précisément dans le domaine du partage de dossiers médicaux de patients entre professionnels de la santé. L' utilisation du format XML et l'importance accordée à une gestion rigoureuse des droits d' accès sont particulièrement avantageuses. L' invention s' applique aussi bien à des systèmes informatiques à serveur central qu' à des systèmes répartis avec un serveur principal et une pluralité de serveurs secondaires. On prévoit que tous les utilisateurs quelque soit leur logiciel accèdent aux mêmes documents sur le serveur. Le dossier du patient constitue le document principal de cette application de l'invention. Deux documents d'importance moindre intitulés dossier professionnel et dossier établissement peuvent contenir des informations sommaires relatives aux professionnels de la santé et aux établissements de soins. Ces dossiers secondaires permettent d'éviter la répétition d'informations dans chaque dossier patient avec les difficultés de mise à jour que cela impliquerait. Quelque soit le logiciel client, la procédure d'accès à l'information susceptible d' être délivrée par le serveur reste sensiblement la même. L'utilisateur est d' abord invité à s'identifier puis accède ensuite à la liste des patients, filtrés selon des critères tels que nom, prénom, sexe, date de naissance... Cette liste lui permet de sélectionner le dossier patient qui l'intéresse en particulier. Un tel dossier peut ensuite contenir des liens vers d' autres dossiers de type professionnel ou établissement. Des balises <professionnel> et <établissement> peuvent être prévues mais dont la gestion relève exclusivement de l'utilisateur et non du serveur de façon qu' une . grande liberté soit laissée à l'utilisateur pour structurer les données.The invention advantageously applies in the medical field, more precisely in the field of sharing medical records of patients between health professionals. The use of XML format and the importance given to rigorous management of access rights are particularly advantageous. The invention applies both to central server computer systems and to distributed systems with a main server and a plurality of secondary servers. It is expected that all users regardless of their software will access the same documents on the server. The patient record constitutes the main document for this application of the invention. Two documents of lesser importance, entitled professional file and establishment file, may contain summary information relating to health professionals and healthcare establishments. These secondary files make it possible to avoid the repetition of information in each patient file with the difficulties of updating that this would imply. Whatever the client software, the procedure for accessing information likely to be delivered by the server remains essentially the same. The user is first invited to identify himself and then accesses the list of patients, filtered according to criteria such as name, first name, sex, date of birth ... This list allows him to select the patient file which is of particular interest. Such a file may then contain links to other professional or establishment type files. <professional> and <establishment> tags can be provided but whose management is exclusively the responsibility of the user and not of the server. great freedom is left to the user to structure the data.
Sur la figure 4, est illustrée l' organisation retenue pour les documents. Les documents intitulés "compte", "profil" et "domaine" ont une forme imposée tandis que l' utilisateur bénéficie d'une grande latitude pour les autres documents, par exemple les documents "patient", "professionnel" , "établissement" .In FIG. 4, the organization chosen for the documents is illustrated. The documents entitled "account", "profile" and "domain" have an imposed form while the user benefits from a great latitude for the other documents, for example the documents "patient", "professional", "establishment".
On entend par poste client dit « Lourd » un poste client équipé d'une application nécessitant une étape d'installation sur le poste. Ce type de poste client offre de nombreuses possibilités de traitement tel que le travail - en mode non connecté suite à une recopie locale des documents, une interface homme machine plus riche qui facilite les interactions parfois complexes pour modifier les dossiers (spécifications des droits d' accès) éditions de tableaux ...) administrer les comptes et les profils, etc. Même en cas de téléchargement du logiciel, le volume a télécharger reste tout à fait raisonnable de l' ordre de quelques mégaoctets. De plus, les mises à jour sont moins volumineuses. Un poste client accédant au serveur à travers un navigateur HTML est dit « Léger » et bénéficie de moins de possibilités de traitements. Toutefois, aucune installation ni mise à jour n'est nécessaire. Il suffit d'indiquer l'URL de la page d'accueil dans le navigateur. Le poste client est ouvert à tous les systèmes et ses interfaces sont familières aux utilisateurs d'Internet. De manière générale, un poste client « Léger » est bien adapté à la consultation rapide d' un - dossier à partir d'un poste quelconque.“Heavy” client workstation is understood to mean a client workstation equipped with an application requiring an installation step on the workstation. This type of client workstation offers many processing possibilities such as work - in offline mode following a local copy of documents, a richer man-machine interface which facilitates sometimes complex interactions to modify files (specifications access rights) editions of tables ...) administer accounts and profiles, etc. Even if the software is downloaded, the download volume remains quite reasonable in the order of a few megabytes. In addition, the updates are less bulky. A client workstation accessing the server through an HTML browser is said to be "Light" and benefits from fewer processing possibilities. However, no installation or update is required. Just enter the home page URL in the browser. The client workstation is open to all systems and its interfaces are familiar to Internet users. In general, a "Light" client workstation is well suited to quickly consulting a file from any workstation.
Dans le cas d'un client « Léger » sous protocole WML, l'objectif est essentiellement de pouvoir visualiser rapidement quelques éléments importants des dossiers. Toutefois, rien n' empêche de prévoir des fonctionnalités plus, étendues comme la modification de données y compris à partir d'un téléphone mobile.In the case of a “Light” client using WML protocol, the objective is essentially to be able to quickly view some important elements of the files. However, nothing prevents the provision of more extensive functionality such as modification of data including from a mobile phone.
Sur la figure 5 a été représenté l'enchaînement des interfaces ou écrans qui a été prévu pour la consultation d'un dossier patient à partir d' un organiseur ou d' un téléphone mobile. L'invention permet donc de partager des documents, en particulier des documents XML, tout en gérant efficacement la concurrence d' accès et les droits d' accès à un niveau quelconque de l'arborescence. On permet ainsi à des utilisateurs de travailler simultanément sur des parties différentes d'un même document. FIG. 5 shows the sequence of interfaces or screens which has been provided for consulting a patient file from an organizer or from a mobile phone. The invention therefore makes it possible to share documents, in particular XML documents, while effectively managing concurrency and access rights at any level of the tree structure. This allows users to work simultaneously on different parts of the same document.

Claims

REVENDICATIONS
1. Système informatique apte à la gestion de documents, caractérisé par le fait qu'il comprend au moins un serveur (1) , au 5 moins un poste-client (7) apte à échanger des données avec ledit serveur, au moins un document stocké par le serveur et susceptible d' être envoyé par le serveur à un poste client déterminé, et un moyen de désignation absolue du document, de façon que l' accès audit document soit sûr. lp1. Computer system capable of managing documents, characterized in that it comprises at least one server (1), at least one client workstation (7) capable of exchanging data with said server, at least one document stored by the server and capable of being sent by the server to a determined client station, and a means of absolute designation of the document, so that access to said document is secure. lp
2. Système selon la revendication 1, caractérisé par le fait qu'il comprend un moyen de désignation absolue de balises ou parties du document, chaque balise de document étant associée à une étiquette, une étiquette étant associée à une seule balise de document.2. System according to claim 1, characterized in that it comprises means for the absolute designation of tags or parts of the document, each document tag being associated with a label, a label being associated with a single document tag.
3. Système selon la revendication 1 ou 2, caractérisé par le fait 15 qu' il comprend un moyen pour générer une requête de document ou de partie d'un document.3. System according to claim 1 or 2, characterized in that it comprises means for generating a request for a document or part of a document.
4. Système selon la revendication 3, caractérisé par le fait que les requêtes sont indépendantes les unes des autres.4. System according to claim 3, characterized in that the requests are independent of each other.
5. Système selon l'une quelconque des revendications 0 précédentes, caractérisé par le fait que les documents sont de format5. System according to any one of the preceding claims 0, characterized in that the documents are of format
XML.XML.
6. Système selon l'une quelconque des revendications précédentes, caractérisé par le fait qu'il comprend un réseau de communication entre le serveur et le poste-client. 56. System according to any one of the preceding claims, characterized in that it comprises a communication network between the server and the client station. 5
7. Système selon l'une quelconque des revendications précédentes, caractérisé par le fait qu' au moins une étiquette est attribuée à au moins un document.7. System according to any one of the preceding claims, characterized in that at least one label is assigned to at least one document.
8. Système selon la revendication 7, caractérisé par le fait qu' au moins une balise est identifiée de façon unique par une8. System according to claim 7, characterized in that at least one tag is uniquely identified by a
30 étiquette.30 label.
9. Serveur informatique (1) apte à la gestion de documents, comprenant un moyen pour échanger des données avec au moins un poste-client, un moyen pour stocker au moins un document, un moyen pour envoyer un document à un poste client déterminé, caractérisé par le fait qu'il comprend un moyen de désignation absolue du document, de façon que l' accès audit document soit sûr.9. Computer server (1) capable of managing documents, comprising means for exchanging data with at least one client station, means for storing at least one document, means for sending a document to a specific client station, characterized in that it includes a means for absolute designation of the document, so that access to said document is secure.
10. Serveur selon la revendication 9, caractérisé par le fait qu' il comprend un moyen pour attribuer une étiquette unique à chaque balise ou partie de document.10. Server according to claim 9, characterized in that it comprises means for assigning a unique label to each tag or part of document.
11. Programme d'ordinateur comprenant des moyens de code programme pour faire fonctionner le serveur selon la revendication 9 ou 10, lorsque ledit programme fonctionne sur un ordinateur. 11. A computer program comprising program code means for operating the server according to claim 9 or 10, when said program is running on a computer.
12. Procédé de gestion de documents, dans lequel on échange des données entre au moins un serveur et au moins un poste-client, le serveur stockant au moins un document et l'envoyant à un poste client déterminé, le document étant désigné de façon absolue de façon que l' accès audit document soit sûr. 12. Document management method, in which data is exchanged between at least one server and at least one client station, the server storing at least one document and sending it to a determined client station, the document being designated so absolute so that access to said document is secure.
13. Procédé selon la revendication précédente, dans lequel un document est mis simultanément à la disposition de plusieurs poste- clients.13. Method according to the preceding claim, in which a document is made available simultaneously to several post-clients.
14. Procédé selon la revendication 12 ou 13, dans lequel un document est divisé en balises ou parties, chaque balise étant associée à une étiquette, une étiquette étant associée à une seule balise de document.14. The method of claim 12 or 13, wherein a document is divided into tags or parts, each tag being associated with a label, a label being associated with a single document tag.
15. Programme d'ordinateur comprenant des moyens de code programme pour mettre en œuvre les étapes du procédé selon l' une quelconque des revendications 2 à 14, lorsque ledit programme fonctionne sur un ordinateur. 15. Computer program comprising program code means for implementing the steps of the method according to any one of claims 2 to 14, when said program is running on a computer.
PCT/FR2002/002907 2001-08-22 2002-08-20 Computer system and document management method WO2003019414A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0110983A FR2828951B1 (en) 2001-08-22 2001-08-22 COMPUTER SYSTEM AND DOCUMENT MANAGEMENT METHOD
FR01/10983 2001-08-22

Publications (1)

Publication Number Publication Date
WO2003019414A1 true WO2003019414A1 (en) 2003-03-06

Family

ID=8866648

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2002/002907 WO2003019414A1 (en) 2001-08-22 2002-08-20 Computer system and document management method

Country Status (2)

Country Link
FR (1) FR2828951B1 (en)
WO (1) WO2003019414A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2395300A (en) * 2002-11-07 2004-05-19 Chasseral Ltd Providing access to component parts of a document
CN113761584A (en) * 2021-11-09 2021-12-07 深圳市知酷信息技术有限公司 Archive information management system based on Internet platform

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
DELL ZHANG ET AL: "An object oriented data model for Web and its algebra", TECHNOLOGY OF OBJECT-ORIENTED LANGUAGES AND SYSTEMS, NANJING, CN, IEEE COMPUT. SOC., 22 September 1999 (1999-09-22) - 25 September 1999 (1999-09-25), LOS ALAMITOS, CA, US, pages 83 - 88, XP010354369, ISBN: 0-7695-0393-4 *
DEUTSCH A ET AL: "A query language for XML", COMPUTER NETWORKS, ELSVIER SCIENCE PUBLISHERS B.V., vol. 31, no. 11-16, 17 May 1999 (1999-05-17), AMSTERDAM, NL, pages 1155 - 1169, XP004304546, ISSN: 1389-1286 *
FLORESCU D ET AL: "Integrating keyword search into XML query processing", COMPUTER NETWORKS, ELSEVIER SCIENCE PUBLISHERS B.V., vol. 33, no. 1-6, June 2000 (2000-06-01), AMSTERDAM, NL, pages 119 - 135, XP004304763, ISSN: 1389-1286 *
LIECHTI O ET AL: "Structured graph format: XML metadata for describing Web site structure", COMPUTER NETWORKS AND ISDN SYSTEMS, NORTH HOLLAND PUBLISHING, vol. 30, no. 1-7, 1 April 1998 (1998-04-01), AMSTERDAM, NL, pages 11 - 21, XP004121444, ISSN: 0169-7552 *
XAVIER E: "XML based security for e-commerce applications", EIGHTH ANNUAL IEEE INTERNATIONAL CONFERENCE AND WORKSHOP ON THE ENGINEERING OF COMPUTER BASED SYSTEMS, IEEE COMPUT. SOC., 17 April 2001 (2001-04-17) - 20 April 2001 (2001-04-20), Los Alamitos, CA, US, pages 10 - 17, XP002200682, ISBN: 0-7695-1086-8 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2395300A (en) * 2002-11-07 2004-05-19 Chasseral Ltd Providing access to component parts of a document
CN113761584A (en) * 2021-11-09 2021-12-07 深圳市知酷信息技术有限公司 Archive information management system based on Internet platform

Also Published As

Publication number Publication date
FR2828951B1 (en) 2004-01-23
FR2828951A1 (en) 2003-02-28

Similar Documents

Publication Publication Date Title
US11308032B2 (en) Suggesting content items to be accessed by a user
US11074396B2 (en) Animating edits to documents
US10817476B2 (en) Interoperability between content management system and collaborative content system
US9864877B1 (en) Online repository for personal information and access of information stored therein
US9349021B1 (en) Restricting use of a digital item stored in a client computer by sending an instruction from a server computer via a network
US8347088B2 (en) Security systems and methods for use with structured and unstructured data
US10585570B2 (en) Author sharing and recipient creation of copied collaborative content items
US20070061487A1 (en) Systems and methods for use of structured and unstructured distributed data
US20130104251A1 (en) Security systems and methods for use with structured and unstructured data
EP1851649A2 (en) Systems and methods for use of structured and unstructured distributed data
US11860836B2 (en) Object management system for efficient content item management
US9870422B2 (en) Natural language search
US10586066B2 (en) Interoperability between content management system and collaborative content system
US12050591B2 (en) Verifying data consistency using verifiers in a content management system for a distributed key-value database
WO2003019414A1 (en) Computer system and document management method
FR3092683A1 (en) Computer systems and assistance procedures for filling in online forms
US20240275730A1 (en) Rate limiter state caching
Aloia et al. Design of the Joint Resource Registry
WO2001088778A1 (en) System and method for distributing digital data concerning commercial exchanges

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BY BZ CA CH CN CO CR CU CZ DE DM DZ EC EE ES FI GB GD GE GH HR HU ID IL IN IS JP KE KG KP KR LC LK LR LS LT LU LV MA MD MG MN MW MX MZ NO NZ OM PH PL PT RU SD SE SG SI SK SL TJ TM TN TR TZ UA UG US UZ VN YU ZA ZM

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ UG ZM ZW AM AZ BY KG KZ RU TJ TM AT BE BG CH CY CZ DK EE ES FI FR GB GR IE IT LU MC PT SE SK TR BF BJ CF CG CI GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP