12

顧客の 1 人に YAWF (Yet Another Workflow Framework) をセットアップしました。コンポーネントのバージョン履歴を除いて、必要なとおりに機能する単純なワークフロー プロセスがあります。

バージョン履歴では、コンポーネントを作成または更新したユーザーの名前の代わりに、「Tridion Content Manager System NT Author」のみが表示されます。

これは、YAWF の実行に使用される MTS ユーザー アカウントであると思われます。ただし、ユーザー名をバージョン履歴に表示する必要があります。

YAWF の設定が間違っているのではないでしょうか?

他の誰かがこの問題を抱えていましたか、またはそれを解決する方法を知りましたか?

Tridion 2011 を使用しています (まだ SP1 ではありません)。

4

4 に答える 4

4

それは、ワークフローの最後のステップを実行したアカウントですか?

あなたはそれが YAWF であるとかなり確信しているようですが、それなしで試してみましたか?

于 2012-07-12T14:10:13.120 に答える
3

一般に、チェックインはすべてのアクティビティが終了した後にのみ行われるため、1 つのバージョンでさまざまな人が作業している可能性があります。

アクティビティの実行者を繰り返し処理し、終了メッセージにコメントを含めることで、この問題を回避できます。

別のオプションとして、作成者になりすますこともできます。

Set oTDSE = CreateObject("TDS.TDSE") 
oTDSE.Impersonate("[Author]") 
oTDSE.Initialize() 

' use TDSE 

Set oTDSE = Nothing
于 2012-07-21T13:34:22.370 に答える
0

これは古い質問だと思いますが、最近、コア サービスの観点から同じ問題と戦ったので、私がたどったルートを共有したいと思いました (これを本番環境に展開する前に、誰かがどこで間違っていたのか指摘してくれるかもしれません)。

コア サービスでいくつかの異なるアプローチを試みた後、最終的な手動アクティビティをワークフローに追加し、カスタム ロジックを前の自動アクティビティに追加することにしました。自動アクティビティのコア サービス ロジックでは、現在の自動アクティビティを終了し (最終的な手動アクティビティ インスタンスを返します)、元の作成者になりすまして、最終アクティビティ インスタンスを (作成者として) 開始し、その最終アクティビティ インスタンスを終了します (再び、著者)。

私は SessionAwareCoreServiceClient を使用しており、Content Manager マシン自体で実行しています。Tridion Content Manager 構成ユーティリティの Impersonation Users に「NT AUTHORITY\SYSTEM」を追加する必要がありました (Impersonate を使用するとセキュリティに影響する可能性があるため、環境に適していることを確認してください)。

なりすましユーザー

コードは次のようになります (ただし、現在のアクティビティ インスタンスの取得、最初の手動アクティビティからの元の作成者の取得などは省略し、コンテキストを提供するために using SessionAwareCoreServiceClient を追加しました)。

using (SessionAwareCoreServiceClient client = new SessionAwareCoreServiceClient())
{
    ActivityFinishData activityFinish = new ActivityFinishData()
    {
        Message = message,
        NextAssignee = new LinkToTrusteeData() { IdRef = authorUser.IdRef }
    };

    // Finish current automatic activity
    ActivityInstanceData finalActivity = client.FinishActivity(activityInstance.Id, activityFinish, new ReadOptions());

    // Impersonate original author
    client.Impersonate(authorUser.Title);

    // Start final (manual) activity as author - if you don't start it, then non-Administrators can't finish them.
    client.StartActivity(finalActivity.Id, null);
    // Finish final (manual) activity as author
    client.FinishActivity(finalActivity.Id, activityFinish, null);
}

うまくいけば、私はあまりにも愚かなことをしていません。おそらく、この回答は、他のさまざまな質問/ブログ/参考文献からまとめて、試行錯誤を少し実行しなければならなかった私のような誰かを助けるでしょう(ワークフローで退屈になる可能性があります) )。

于 2013-06-05T05:56:39.783 に答える