0

私は現在、他社が始めたプロジェクトに取り組んでいます。彼らはいくつかのCMISコネクタを作成し、現在Alfresco内にドキュメントを保存するために使用されています。そのコネクタ/コンポーネントのソースがありません。クライアントとプロバイダーの間で事態は悪化し、私たちが持っているコードを入手するのは困難な戦いでした。

実は、ファイルはすでにチェックアウトされており、現在ロックされているため、ドキュメントの更新が失敗することがあります。屋外サーバー内にユーザーがいないことを考えると(すべてWebサービスを介して実行されます)、ある時点でサイレントクラッシュが発生し、ドキュメントが無期限にチェックアウトされたままになると考えられます。問題は私たちが管理しているアプリにあると思います。問題の原因はAlfrescoである可能性があります。

ドキュメントの更新に失敗していることがわかった関数(チェックアウトしたままにする関数ではなく、ドキュメントが原因で失敗する関数)は次のとおりです。

cmisHelper.checkIn(cmisHelper.checkOut(cr.getId()), "Update", null, docBytes, mimeType);

cr.getId()ドキュメントIDがあります。明らかな理由でチェックアウトが失敗します。

別のセッションでチェックアウトされた可能性のあるドキュメントをチェックインする方法はありますか?そのカスタムメイドのcmisHelperクラスには、ロック解除に関連するものは何もないようです。ご想像のとおり、ドキュメントは実際には欠落しています。

私が考えた他の何かは、「期限切れの」チェックアウトを自動的にチェックインする屋外のsoemオプションでした。しかし、私はそのようなオプションを見つけていません。

ありがとう

4

1 に答える 1

2

作業コピーのタイムアウトはありません。チェックアウトされたドキュメントは、ユーザーがそのままにしておく限り、その状態のままになります。最初に、有効期限が切れている作業コピーを特定する方法が必要です。おそらく、チェックアウトタイムアウトの概念を自分で導入する必要があります。

たとえば、Alfrescoチェックアウトで変換される操作は1時間で完了する必要があることをユーザーに通知するとします。次に、次のようなスクリプトを実行できるすべてのhorを実行するようにcronジョブを構成できます。

var nodes = search.query("ASPECT:\"cm:workingcopy\" AND @cm\:created:\$\{luceneDateRange(today, \"-P1H\")\}");
for each (n in nodes) {
  n.remove();
}
于 2012-05-13T00:08:36.453 に答える