いいね!数

0

閲覧数
614

Xpagesで開発しているDBがあります。

文書を削除するボタンをフォーム上につけ、以下の設定をしました。

:シンプルアクションの文書の削除

次に開くページの名前:前のページ

 

ACLで削除のオプションにチェックがついているユーザーで削除ボタンをクリックしても

「アクセス権のあるユーザーでログインしてください」と出てしまって削除できません。

ACLの削除のオプション以外で見るべきところはあるでしょうか?

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:2016/12/20 9:41:28

回答・コメント

いいね!数

0

削除対象の文書はそのユーザーに編集権限のあるフォーム文書でしょうか?
フォームを開けているのであれば読者権限はあると思うので、作成者権限がないのかなと思いました。

回答日時:2016/12/20 10:00:38

いいね!数

0

ykawaさん、ご回答を頂きありがとうございます。

該当ユーザーは「管理者」権限を持っているユーザーなのです。

なぜ削除できないのでしょうか・・・?

いまひとつアイディアが浮かびません。

何か試してみることはありますでしょうか。

回答日時:2016/12/20 10:29:32

いいね!数

0

Notesクライアントからは削除できるのでしょうか?

管理者と言っても、文書削除のフラグは付いていたり付いていなかったりします。そのユーザーがグループのメンバーとして複数登録されていて削除権限の不整合が発生しているかもしれません。

XPages の問題かを切り分けるため Notes クライアントから文書の削除を試してみてください。

 

回答日時:2016/12/20 10:36:07

いいね!数

0

katomanさん、回答ありがとうございます。

Notesクライアントからは削除ができます。

該当ユーザーはACLにユーザー名でエントリーされていて、「管理者」で

「削除」のオプションがついています。

回答日時:2016/12/20 10:59:46

いいね!数

0

では、おそらく次のふたつが怪しいと思います。

  1. インターネットアクセスでの最大権限に削除権限がない(ACLの詳細タブ、Webユーザーによるアクセスの上限)
  2. 処理中に対象の文書がロックされている

 

サーバー IBM_TECHNIAL_SUPPORT フォルダーにある XPages に関するエラーも参照してみてください。何かヒントがあるはずです。 

回答日時:2016/12/20 11:34:19

いいね!数

0

katomanさん、

参考になるご意見ありがとうございます。

サーバーの IBM_TECHNIAL_SUPPORT フォルダーにある XPages に関するエラーを見たところ、

以下の文言がありました。

Document locking is enabled.You must lock the document before deleting

文書がロックされているようなのですが、どこでロックを解除すれば良いのでしょうか?

クライアント上でビュー上の文書を右クリック-「ロックの解除」とやりましたが、結果は変わりませんでした。

また、ロックがかかってしまう理由は何かあるのでしょうか?

ロックについてあまりよくわかっていません。初心者的な質問で申し訳ないです。

 

回答日時:2016/12/20 13:15:59

いいね!数

1

> サーバーの IBM_TECHNIAL_SUPPORT フォルダーにある XPages に関するエラーを見たところ、
> 以下の文言がありました。
> Document locking is enabled.You must lock the document before deleting

このメッセージは「文書ロックされているから削除できません」ではなく、
「削除するためにまずロックをかけてください」という意味のようですよ。

"You must lock the document before deleting."というメッセージが表示されて文書が削除できない - zaq123edcの日記
http://zaq123edc.hateblo.jp/entry/2014/01/15/102022

回答日時:2016/12/20 13:53:00

いいね!数

1

データベースプロパティに「文書のロックを許可」にチェックが入っているため、そのようなふるまいになっているのではと推測します。

そのデータベース内で文書にロックを掛けて処理するような他ロジックがあれば、 ykawa さんのように XPages でもロックを掛けて削除する。

もし万が一そのデータベースで文書をロックすることなんかないというのであれば、このデータベースプロパティのチェックを外してあげれば動作すると思います。

回答日時:2016/12/20 14:13:15

いいね!数

0

追記です。

DBのプロパティの「文書のロックを許可」にチェックが入っています。

 

回答日時:2016/12/20 14:15:19

いいね!数

0

katomanさん、

すみません。回答が前後してしまいました。

「文書のロックを許可」にチェックが入っていると通常のやり方では

Xpages上で削除できないということでしょうか?見当違いなことを

言っていたらすみません。

以下の式を「文書を削除」の前に追記したところ、削除ができました。

var doc:NotesDocument = currentDocument.getDocument();
doc.lock();

このコードを追記することで問題が起こるようなことはあるでしょうか?

回答日時:2016/12/20 14:18:39

いいね!数

0

yakawaさん、

回答を見逃していました。

このメッセージは「文書ロックされているから削除できません」ではなく、
「削除するためにまずロックをかけてください」という意味のようですよ。

あぁ、よく読んだらそうでした。。

では、先ほどのコードを書くことでも良さそうですね。

回答日時:2016/12/20 14:20:38

いいね!数

0

ルールはシンプルです。もしデータベースプロパティ「文書のロックを許可」にチェックが入っていれば、XPages で文書を削除するときにはロックしてから削除しなさい、それだけです。文書の削除する前ロックして何か問題が起こるとは想定できませんが。

var doc:NotesDocument = currentDocument.getDocument();
doc.lock();

もし他のコード(クライアントアプリ)でロックする可能性(編集など)があるのであれば、削除ロジックを流す前に、該当の文書が現在他の人がロックしているかを問えばいいだけです。

回答日時:2016/12/20 15:11:03

いいね!数

0

へー、削除前にlockが必要、なんてオプションがあるんですね。知らなかった。

私がXPagesアプリ作るときには、あえて文書は削除せず、アプリ上で削除操作したら、削除マーク用フィールドに適当な文字列を書き込んで、保存するようにしてます。後はビューの選択式で削除マークのついてる文書は表示しないようにして、見かけ上、文章が削除されたようにしてます。後は時々、削除マーク付きの文書を管理用Notesクライアントで掃除してます。

削除って今回のようにトラブル起こしやすいし、一般ユーザーに削除権限与えるとガバッと誤って消したりしてロクなことにならないという経験則があります。見かけの削除ならリカバリも簡単ですしね。

ただ、直接URL指定で開かれると、削除マーク付き文書も表示されちゃいますけどね。

こういうやり方もありますよ、という紹介でした。

/Yac

 

 

回答日時:2016/12/20 21:20:26

いいね!数

0

yac4423さん、ご意見ありがとうございました。

今回はいろいろと勉強になりました。

解決策がわかって良かったです。

ありがとうございました。

回答日時:2016/12/21 11:00:30