0

以下の作成者コードに戻ると、コアサービスベースのワークフローでは機能しません。

エラーは発生しません。助言がありますか?

public void BackToAuthor(string workitemid)
{
  var client = new CoreServiceSession();
  var csClient = client.GetClient();
  var readoption = new ReadOptions();

  var workitem = (WorkItemData)csClient.Read(workitemid, readoption);
  var processInstance = (ProcessInstanceData)csClient.Read(
                                             workitem.Process.IdRef, readoption);
  var ieActivities = processInstance.Activities;

  if (ieActivities != null)
  {
    var targetactivity = (ActivityInstanceData)csClient.Read(
                                  processInstance.Activities[0].Id, readoption);
    var finishData = new ActivityFinishData();
    finishData.Message = "Finished automatically";
    finishData.NextAssignee = new LinkToTrusteeData { 
        IdRef = processInstance.Activities[0].Performers[0].IdRef, 
        Title = processInstance.Activities[0].Performers[0].Title };
      csClient.FinishActivity(targetactivity.Id, finishData, readoption);
      logdetails("Finished the activity");
      csClient.Close();
  }
}
4

3 に答える 3

3

オーナー(最初のアクティビティの「全員」)ではなく、パフォーマーにアクティビティを返送する必要があると思います。次のコード行を変更する必要があるかもしれません...

finishData.NextAssignee = new LinkToTrusteeData { 
        IdRef = processInstance.Activities[0].Performer.IdRef, 
        Title = processInstance.Activities[0].Performer.Title };
于 2012-07-17T14:59:47.290 に答える
1

ActivityInstanceData.ActivityStateprocessInstance.Activities[0])プロパティを確認できますか?すでに終了すると、前述の例外が発生します。その場合、アクティビティを再開する必要があります。ICoreService2011.RestartActivity(activityInstanceId, readBackOptions)

では、プロセス定義はどのように見えますか?プロセス定義の最初のアクティビティの後に、BackToAuthorが自動アクティビティから呼び出されますか?

于 2012-07-17T16:24:47.677 に答える
1

まず、デバッガーでコードを実行し、IDが期待どおりであることを確認することをお勧めします。たとえば、プロセスインスタンスは正しいですか、さまざまなアクティビティと実行者は期待していますか?

于 2012-07-18T12:53:46.050 に答える