WF4 Активность не имеет Id - PullRequest
0 голосов
/ 20 октября 2011

Мне было интересно, как получить Id для простой деятельности.Например:

        Sequence s = new Sequence();
        string id = s.Id;

Идентификатор всегда равен нулю, и, поскольку он имеет частный установщик, я не могу установить это значение.
При каких обстоятельствах это значение будет заполнено идентификатором и кем?

Большое спасибо за ваши ответы.

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Идентификатор устанавливается при использовании WorkflowDesigner или во время выполнения. Но даже тогда может быть сложно работать, потому что он может принимать различную форму в WorkflowDesigner в зависимости от того, как вы загружаете рабочий процесс.

0 голосов
/ 30 ноября 2015

Вы можете использовать WorkflowInspectionServices для отображения действий из корневого действия. При использовании WorkflowInspectionServices идентификаторы устанавливаются.

С такой рекурсивной функцией:

void WriteActivities(Activity p_activity, int p_offset)
{
    Console.WriteLine("{2}Activity : {0}, {3} ({1})", p_activity.Id, p_activity.GetType().Name, new String('-', p_offset), p_activity.DisplayName);
    IEnumerable<Activity> l_activities = WorkflowInspectionServices.GetActivities(p_activity);

    foreach (Activity l_childActivity in l_activities)
    {
        WriteActivities(l_childActivity, p_offset + 1);
    }
}
...