{"id":900,"date":"2023-06-30T13:17:52","date_gmt":"2023-06-30T13:17:52","guid":{"rendered":"https:\/\/doc.bim.fm\/index.php\/docs\/multi-api\/verrouiller-le-fichier-2\/"},"modified":"2023-06-30T13:20:56","modified_gmt":"2023-06-30T13:20:56","slug":"verrouiller-le-fichier-2","status":"publish","type":"docs","link":"https:\/\/doc.bim.fm\/index.php\/docs\/api-2\/verrouiller-le-fichier-2\/","title":{"rendered":"Verrouiller le fichier"},"content":{"rendered":"\n<p>Pour \u00e9viter que plusieurs utilisateurs ne modifient le m\u00eame fichier en m\u00eame temps, l&#8217;utilisateur doit extraire ou verrouiller un fichier avant de le mettre \u00e0 jour. (Les op\u00e9rations d&#8217;extraction et d&#8217;entr\u00e9e sont respectivement \u00e9quivalentes au verrouillage et au d\u00e9verrouillage).<\/p>\n\n\n\n<p><br>L&#8217;extraction d&#8217;un fichier conf\u00e8re des droits de mise \u00e0 jour exclusifs \u00e0 l&#8217;utilisateur qui a extrait l&#8217;\u00e9l\u00e9ment. Lorsqu&#8217;un utilisateur extrait un fichier, il d\u00e9tient un verrou d&#8217;\u00e9criture permanent sur ce fichier.<\/p>\n\n\n\n<p><br>Nous disposons de trois types de verrou :<\/p>\n\n\n\n<p><\/p>\n\n\n\n<ul><li><strong>Verrouillage permanent<\/strong><\/li><\/ul>\n\n\n\n<p>Un verrou persistant est persistant et li\u00e9 \u00e0 un nom d&#8217;utilisateur, et non \u00e0 une session connect\u00e9e. Un verrou persistant reste en vigueur jusqu&#8217;\u00e0 ce qu&#8217;un utilisateur disposant du privil\u00e8ge SuperCheckIn d\u00e9verrouille votre article. En outre, le m\u00eame utilisateur est autoris\u00e9 \u00e0 effectuer des modifications dans n&#8217;importe quelle session authentifi\u00e9e. Si vous vous connectez \u00e0 plusieurs sessions en utilisant le m\u00eame nom d&#8217;utilisateur, chaque session est autoris\u00e9e \u00e0 mettre \u00e0 jour le verrou en \u00e9criture.<\/p>\n\n\n\n<ul><li><strong>Verrouillage transitoire<\/strong><\/li><\/ul>\n\n\n\n<p>Le verrou transitoire est volatil (il expire au bout de 30 minutes \u00e0 moins d&#8217;\u00eatre actualis\u00e9 &#8211; voir RefreshLock), un verrou transitoire, comme un verrou persistant, emp\u00eache toute personne qui n&#8217;a pas d&#8217;identifiant de verrou valide d&#8217;apporter des modifications \u00e0 un fichier.<\/p>\n\n\n\n<ul><li><strong>Et verrou en lecture seule<\/strong><\/li><\/ul>\n\n\n\n<p>La lecture seule est un verrou sp\u00e9cial qui emp\u00eache quiconque de modifier un fichier.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Vous trouverez ci-dessous les actions possibles en fonction du type de serrure.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td><strong>Action<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Verrouillage: Permanent ou transitoire<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Lecture seule<\/strong><\/td><\/tr><tr><td>T\u00e9l\u00e9charger une nouvelle version<\/td><td class=\"has-text-align-center\" data-align=\"center\">Oui si propri\u00e9taire<\/td><td class=\"has-text-align-center\" data-align=\"center\">Non<\/td><\/tr><tr><td>Renommer un fichier<\/td><td class=\"has-text-align-center\" data-align=\"center\">Non<\/td><td class=\"has-text-align-center\" data-align=\"center\">Non<\/td><\/tr><tr><td>D\u00e9placer un fichier<\/td><td class=\"has-text-align-center\" data-align=\"center\">Oui<\/td><td class=\"has-text-align-center\" data-align=\"center\">Oui<\/td><\/tr><tr><td>Supprimer un fichier<\/td><td class=\"has-text-align-center\" data-align=\"center\">Non<\/td><td class=\"has-text-align-center\" data-align=\"center\">Non<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" src=\"https:\/\/doc.bim.fm\/wp-content\/uploads\/2021\/10\/LockSeq.png\" alt=\"\" class=\"wp-image-575\" width=\"292\" height=\"342\"\/><figcaption>Typical checkout\/checkin sequence<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" src=\"https:\/\/doc.bim.fm\/wp-content\/uploads\/2021\/11\/TypicalLockSeqError.png\" alt=\"\" class=\"wp-image-601\" width=\"430\" height=\"440\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<h2>V\u00e9rouiller<\/h2>\n\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column\"><\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-top has-luminous-vivid-orange-color has-text-color\">\n<div class=\"wp-block-buttons\">\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link\" href=\"https:\/\/localhost:8445\/apidoc\/index.html#\/Project\/Project_CheckOut\" target=\"_blank\" rel=\"noreferrer noopener\">API reference<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>L&#8217;op\u00e9ration de verrouillage verrouille un fichier afin qu&#8217;il puisse \u00eatre modifi\u00e9 par l&#8217;instance d&#8217;application cliente qui a demand\u00e9 le verrouillage. Lorsqu&#8217;il est verrouill\u00e9, un fichier ne doit pas \u00eatre accessible en \u00e9criture par d&#8217;autres applications.<\/p>\n\n\n\n<p>Param\u00e8tres :<\/p>\n\n\n\n<ul><li>projectId (cha\u00eene) Une cha\u00eene repr\u00e9sentant l&#8217;identifiant unique du projet, en utilisant 32 caract\u00e8res hexad\u00e9cimaux.<\/li><li>inodeId (string) Une cha\u00eene repr\u00e9sentant l&#8217;identifiant unique du fichier, en utilisant 32 caract\u00e8res hexad\u00e9cimaux.<\/li><\/ul>\n\n\n\n<p><strong>R\u00e9ponse<\/strong><\/p>\n\n\n\n<p>Si le fichier est actuellement d\u00e9verrouill\u00e9, le serveur doit verrouiller le fichier et renvoyer un code d&#8217;\u00e9tat HTTP 200 OK.<\/p>\n\n\n\n<p>Si le fichier est actuellement verrouill\u00e9, le serveur renvoie un statut HTTP 401 Non autoris\u00e9 avec un code d&#8217;erreur 22.<\/p>\n\n\n\n<p>Dans tous les autres cas, le serveur doit renvoyer une r\u00e9ponse &#8220;conflit de verrouillage&#8221; (500).<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<h2>D\u00e9verrouiller<\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column\"><\/div>\n\n\n\n<div class=\"wp-block-column\">\n<div class=\"wp-block-buttons\">\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link has-luminous-vivid-orange-color has-text-color\" href=\"https:\/\/localhost:8445\/apidoc\/index.html#\/Project\/Project_CheckIn\" target=\"_blank\" rel=\"noreferrer noopener\">API reference<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>L&#8217;op\u00e9ration de d\u00e9verrouillage lib\u00e8re le verrou d&#8217;un fichier.<\/p>\n\n\n\n<p>Les clients font g\u00e9n\u00e9ralement une demande de verrouillage pour verrouiller un fichier avant d&#8217;appeler cette op\u00e9ration. Le client transmet l&#8217;ID de l&#8217;Inode pr\u00e9c\u00e9demment verrouill\u00e9 dans la demande de verrouillage.<\/p>\n\n\n\n<p>Param\u00e8tres :<\/p>\n\n\n\n<ul><li>projectId (cha\u00eene) Une cha\u00eene qui repr\u00e9sente l&#8217;identifiant unique du projet, en utilisant 32 caract\u00e8res hexad\u00e9cimaux.<\/li><li>inodeId (cha\u00eene) Une cha\u00eene repr\u00e9sentant l&#8217;identifiant unique du fichier, en utilisant 32 caract\u00e8res hexad\u00e9cimaux.<\/li><\/ul>\n\n\n\n<p>R\u00e9ponse :<br>Si le fichier est actuellement verrouill\u00e9 par l&#8217;utilisateur demandeur, le serveur doit d\u00e9verrouiller le fichier et renvoyer un code d&#8217;\u00e9tat HTTP 200.<br>Si le fichier est verrouill\u00e9 par un autre utilisateur, le serveur renvoie un statut HTTP 401 Un authorized avec un code d&#8217;erreur 22.<br>Dans tous les autres cas, le serveur doit renvoyer une r\u00e9ponse &#8220;conflit de verrouillage&#8221; (statut HTTP 500).<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<h2>Voler le verrouillage<\/h2>\n<\/div>\n\n\n\n<div class=\"wp-block-column\"><\/div>\n\n\n\n<div class=\"wp-block-column\">\n<div class=\"wp-block-buttons\">\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link has-luminous-vivid-orange-color has-text-color\">API reference<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>L&#8217;op\u00e9ration de vol du verrouillage force le d\u00e9verrouillage d&#8217;un fichier et le reverrouille pour l&#8217;utilisateur connect\u00e9. Cette op\u00e9ration ne peut \u00eatre demand\u00e9e que sur un verrou PERSISTANT.<\/p>\n\n\n\n<p><strong>Param\u00e8tres:<\/strong><\/p>\n\n\n\n<ul><li>projectId (cha\u00eene) Une cha\u00eene qui repr\u00e9sente l&#8217;identifiant unique du projet, en utilisant 32 caract\u00e8res hexad\u00e9cimaux.<\/li><li>inodeId (cha\u00eene) Une cha\u00eene repr\u00e9sentant l&#8217;identifiant unique du fichier, en utilisant 32 caract\u00e8res hexad\u00e9cimaux.<\/li><\/ul>\n\n\n\n<p>R\u00e9ponse:<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2>Exemple API C#<\/h2>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:10px\"><code>\/\/ Login to the server\nBimfmApi bimfmapi = new BimfmApi();\nbimfmapi.mHttpRqs.BimFmUrl = \"https:\/\/dev.edifycad.com\/api\";\nTokens myToken = bimfmapi.token(\n    new Login() {\n        username = id,\n        password = password,\n        grant_type = \"password\"\n    }).Result;\n\n...\n\n\/\/ Lock a file\ntry\n{\n    ResponseApi&lt;ProjectInodeLockDto&gt; lock = <strong>bimfmapi.project.Checkout(projectId, inodeId);<\/strong>\n    if (folders.Status != 200)\n    {\n         switch (folders.ErrorCode)\n         {\n              case ERROR_CODE.FILE_ALREADY_LOCK:\n                   logger.Error(\"File already lock by another user.\");\n                   break;\n              case ERROR_CODE.LOCK_CONFLICT:\n                   logger.Error(\"File can be lock.\");\n\n                   break;\n              default:\n                    logger.Error(\"Un-managed exception.\");\n              }\n          }\n\n     }\n}\ncatch (Exception ex)\n{\n     ...\n}\n\n\n...\n\n\/\/ Upload a new version\nbimfmapi.project.UploadNewVersionRequest(\"myfile.qsp\", filecontent, projectId, folderId, inodeId);\n\n...\n\n\/\/ Unlock file\ntry\n{\n    ResponseApi&lt;ProjectInodeLockDto&gt; lock = <strong>bimfmapi.project.Checkin(projectId, inodeId)<\/strong>;\n    if (folders.Status != 200)\n    {\n         switch (folders.ErrorCode)\n         {\n              case ERROR_CODE.FILE_NOT_LOCK:\n                   logger.Error(\"File not lock. Please checkout file before checkin.\");\n                   break;\n              case ERROR_CODE.LOCK_CONFLICT:\n                   logger.Error(\"File can be lock.\");\n                   break;\n              default:\n                    logger.Error(\"Un-managed exception.\");\n              }\n          }\n\n     }\n}\ncatch (Exception ex)\n{\n     ...\n}\n\n<\/code><\/pre>\n\n\n\n<p> <\/p>\n","protected":false},"featured_media":0,"parent":788,"menu_order":1,"comment_status":"open","ping_status":"closed","template":"","doc_tag":[],"_links":{"self":[{"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/docs\/900"}],"collection":[{"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/comments?post=900"}],"version-history":[{"count":1,"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/docs\/900\/revisions"}],"predecessor-version":[{"id":914,"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/docs\/900\/revisions\/914"}],"up":[{"embeddable":true,"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/docs\/788"}],"prev":[{"title":"Authentification","link":"https:\/\/doc.bim.fm\/index.php\/docs\/api-2\/authentification-2\/","href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/docs\/899"}],"wp:attachment":[{"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/media?parent=900"}],"wp:term":[{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/doc.bim.fm\/index.php\/wp-json\/wp\/v2\/doc_tag?post=900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}