Категория: SysAdm
8299
01111111111

При разработке Workflow в Visual Studio встала задача кастомизации Task формы, таким образом назрело решение - создать новую форму в InfoPath и привязать эту форму к текущему рабочему процессу.

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

Создание формы

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

У меня получилась такая форма:

myform

Настройка формы

formprops

formprops2

Публикация формы

publish

publish2

publish5

Добавление формы в проект

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

addmodule

existingitem

Конфигурация - Feature1.Template.xml

<feature id="e8df4fe3-9e06-40aa-bf6c-08c387be9adc" scope="Site" receiverassembly="Microsoft.Office.Workflow.Feature, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" receiverclass="Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver">
  <properties>
    <property key="GloballyAvailable" value="true">
   </property>
  <elementmanifests>
    <elementmanifest location="Workflow1\Elements.xml">
    <elementmanifest location="Forms\Elements.xml">
 <elementfile location="Forms\TeamTask.xsn">
    </elementfile>
</elementmanifest>
</elementmanifest></elementmanifests></properties></feature>

Конфигурация - Elements.xml (Workflow)

<elements>
  <workflow name="ReportWF - Workflow1" description="My SharePoint Workflow" id="19cebc4d-d68c-4204-8646-b9325c3a4afd" codebesideclass="ReportWF.Workflow1.Workflow1" codebesideassembly="$assemblyname$" tasklistcontenttypeid="0x01080100C9C9515DE4E24001905074F980F93160" modificationurl="_layouts/ModWrkflIP.aspx">
    <categories>
    <metadata>
      <associationcategories>List</associationcategories>
      <task0_formurn>urn:schemas-microsoft-com:office:infopath:TeamTask:-myXSD-2010-11-23T09-53-29
      <statuspageurl>_layouts/WrkStat.aspx</statuspageurl>
    </metadata>
  </categories>
</workflow>
</elements>

Где Task0_FormURN - ID созданной формы.

Конфигурация - Elements.xml (Forms)

<elements>
  <module name="Forms" url="FormServerTemplates" rootwebonly="TRUE">
  <file path="Forms\TeamTask.xsn" url="Forms/TeamTask.xsn" type="GhostableInLibrary">
</file>
</module>
</elements>

После запуска рабочего процесса и инициализации задачи:

testtask

Детали данной задачи уже можно просмотреть в новой форме:

pubform