Возникла необходимость кастомизировать журнал рабочего процесса, так как стандартный довольно убог. Как всегда, у 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"])); }
Теперь можно получить всю информацию по рабочему процессу и заданиям в рамках него, после чего вывести как вам будет угодно.