123 Views
December 02, 25
スライド概要
Notes/Dominoであれば、一時削除(ソフト削除)が簡単に実装できます。
操作に不慣れなユーザー部門が不注意でデータを消してしまうことはよくあります。
削除権を外すと問合せが増えて面倒という場合に、一時削除(ソフト削除)は有効です。
一時的削除(ソフト削除)を使おう ソフト削除って他のローコードツールでも簡単に作れるの? 2025/11/28 Tetsuji Hayashi 1
お客様の要望 切り取り機能を使うと文書が消えるので抑制したい • ユーザー部門が操作して消してしまう • ユーザーはExcelなどに貼り付けて、自分の目的を達成しているので、削除したことに気づかない(やり逃げ) • バックアップDBからコピーすると、文書IDが変わるので、メールからのリンクが切れる • 業務的にメールからのリンクがトリガーなので、それはそれで面倒 • ACLで削除権を外すと、ユーザーで文書の削除ができないので、いちいち削除依頼が来て負担が増える • マスター以外の全てのDBを対象にしたい 2
仕様理解(深掘り) • 切り取りは、削除+クリップボードコピーの機能 • 右クリックメニューからも、キーボードのCtrl+Xでも操作可能 • ユーザーが右クリックメニューから操作を行っているのであれば、右クリックメニューだけ抑制すれば良い • ビューに貼付のイベントはあるが、切り取りのイベントは存在しない • この案はボツ • 文書削除前はイベント(QueryDocumentDelete)で捕まえることができる • この場合、ロールでメッセージを出して、禁止するユーザーと、そうでないユーザーを判定する実装が必要 • 切り取りで削除前イベントが発報するのは、クリップボードコピー前?コピー後? • ビューに関係なく発報するのでフォームを判定してロジックを組む必要がある 3
実装検討 • 標準テンプレートのメールやノートブックのような右クリックメニューが出せないか? • キーボードによるCtrl+Xには対応できない コピーと貼付があるが 切り取りがない できそうだけどかなりLotusScriptのライブラリを解読する必要あり 4
切り取りの抑制→ソフト削除にたどり着かんやろ! • ノートブック(標準テンプレート)の設計を解析し、ビューの右クリックをカスタマイズできないかを調査し ていた • データベースクリプトのQueryDocumentDeleteイベントに何やらコードが入っている Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant) On Error Goto ErrorTrap Dim ws As New notesuiworkspace Dim uiview As NotesUIView Dim uidoc As NotesUIDocument Dim collection As NotesDocumentCollection Dim doc As NotesDocument Dim strViewName As String Dim e As Variant Dim SoftDelEnabled As Integer Set uiview = ws.currentview If Not(uiview Is Nothing) Then strViewName=uiview.ViewAlias Set collection = source.documents End If 'is softdeletes enabled... SoftDelEnabled = False e = Evaluate( "@IsSoftDeleteEnabled") If Isarray(e) Then If e(0) = 1 Then SoftDelEnabled = True End If End If ソフト削除って何でし たっけ? ソフト削除でユーザーに戻して貰えば良いんじゃね? 5
一時削除(ソフト削除)の実装 6
一時的削除を使うには? 1. データベースのプロパティで「一時的削除を許可」にチェックをつける 2. 文書を完全に削除「○時間後」を設定する アプリケーション(データ ベース)単位に指定可能 3. ビューを作成し「($SoftDeletions)」という名前を付け、ビューの種類に「共有(削除した文書も含む)」を 選択する ごみ箱と言う名前で表示 される 7
一時的削除を使うには? 4. アクションボタンを追加し「ゴミ箱から戻す」という名前を付け、@式で「@UndeleteDocument」を書 き込む 5. アクションボタンを追加し「完全に削除」という名前を付け、@式で「 @HardDeleteDocument 」を書き 込む 6. (応用)複数同時削除にしたい場合は、エージェントを作成し、アクションボタンから呼び出す 8
一時的削除の動作 • 切り取りは抑制できないが、一般部門が間違って切り取り、削除した場合、復活できる • 実際に削除されるのはupdallタスクなので、毎日updallが実行される環境では完全削除まで最大24時間のズ レがある • ソフト削除状態の文書は、NotesDatabase.AllDocumentsには含まれない • 既存コードには影響しない 9