Кастомизация журнала рабочего процесса

Возникла необходимость кастомизировать журнал рабочего процесса, так как стандартный довольно убог. Как всегда, у MS всё не как у людей.

Изменить вид журнала рабочего процесса

Стандартный журнал лежит в _layouts/WrkStat.aspx.. Во-первых, его править довольно неудобно. А во-вторых, при внесении изменений в этот файл журнал всех рабочих процессов будет так выглядеть. А необходима кастомизация журнала одного конкретного Workflow. Что же делать?

Естественно, единственное, что приходит на ум — это создать самому другой журнал. По аналогии с тем, как добавляется форма ассоциации и инициации для рабочего процесса, можно добавить к проекту с р.п. Application Page, который мы будем использовать вместо стандартного журнала. Теперь надо как-то указать рабочему процессу, чтобы он использовал нашу страницу, а не стандартную. Для этого в Elements.xml, судя по MSDN и советам от профии, необходимо добавить строку:

<MetaData>
...
  <StatusPageUrl>_layouts/myWrkStatus.aspx</StatusPageUrl>
...
</MetaData>

«Добавили, и наконец-то р.п. вместо стандартного журнала начинает наш использовать» — хотел бы я сказать, но не всё так просто. Честно говоря, много времени провозился над этим, не мог понять, что не так то. Как оказалось, такой метод является устаревшим. Правда нигде в MSDN об этом ни слова. Вместо записи, что дал выше необходимо:

<Workflow
   StatusUrl="_layouts/myWrkFlow/myWrkStatus.aspx"
>

Теперь будет использоваться наша страница. Для получения нужных параметров юзаем код ниже:

Guid _paramSPListGuid;       // GUID списка, с которым заатачились
Guid _workflowInstanceGuid;  // Айдишник р.п.
 private void getWorkflowParameters()
{
  this._paramSPListGuid = new Guid(Convert.ToString(Request.Params["List"]));    
   this._workflowInstanceGuid = new Guid(Convert.ToString(Request.Params["WorkflowInstanceID"]));
}

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