「管理者」ユーザーによって実行されるコードを作成しようとしています。このコードは、ドキュメントを別のユーザー (「ジョン」など) にチェックアウトします。ただし、チェックアウトしたドキュメントを共有で表示すると、常にドキュメントがユーザー「admin」にチェックアウトされていると表示されます。このコードを Alfresco 4.0.c で実行しています
これが私が実行しているコードです
Boolean rtn = AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Boolean>() {
@Override
public Boolean doWork() throws Exception {
// executes the following code as user who had the document previously checked out
CheckOutCheckInService checkOutCheckInService = serviceRegistry.getCheckOutCheckInService();
//this line is debug code to check who the current user is according to the AuthenticationService
//AuthenticationService authService = serviceRegistry.getAuthenticationService();
//if (log.isDebugEnabled()) log.debug("Current UserName in AuthenticationService is '" + authService.getCurrentUserName() + "'.");
NodeRef checkedOutCopy = checkOutCheckInService.checkout(nodeRef);
ContentWriter writer = fileFolderService.getWriter(checkedOutCopy);
writer.putContent(workingCopyContentAndMetadata.getContentFile());
if (log.isDebugEnabled()) log.debug("Have uploaded working copy document as user '" + String.valueOf(workingCopyOwner) + "'.");
return true;
}
}, String.valueOf(workingCopyOwner));
Alfresco ソース コードを見ると、checkOutcheckInService は AuthenticationService getCurrentUserName() メソッドからドキュメントをチェックアウトするためのユーザー名を取得します。ただし、AuthenticationUtil.runAs コードは AuthenticationService のユーザーを変更しないようです。
ここで何か間違ったことをしていますか、どうすればこれを正しく行うことができますか?
前もって感謝します。