Запустите рабочий процесс с помощью настраиваемой кнопки / действия над элементом списка в SharePoint 2010 (все с Visual Studio 2010) - PullRequest
2 голосов
/ 22 декабря 2011

Прошу прощения, что задаю двойной вопрос, но я запутался в том, что не нашел решения - или отсутствует понимание ответов.

Моя проблема похожа на описанную:

У меня есть несколько собственных лент с кнопками. И мне нравится запускать рабочий процесс, если я нажму на разработанную кнопку.

Хорошо, подробнее о настройках:

Это общий список, значит, мой elemets.xml выглядит так:

<CustomAction
  Id="MyCustomRibbonTab"
  Location="CommandUI.Ribbon.ListView"
  RegistrationId="100"
  RegistrationType="List">
  <CommandUIExtension>
    <CommandUIDefintions>
      <CommandUIDefinition
        Location="Ribbon.Tabs._children">
        <Tab Id="Ribbon.CustomTab" Sequence="501">
        ... (Scaling)
          <Groups Id="Ribbon.CustomTab.Groups">
            <Group 
              Id="Ribbon.CustomTab.GroupOne" 
              Sequence="52">
              <Controls Id="Ribbon.CustomTab.GroupOne.Controls">
                <Button
                  Id="Ribbon.CustomTab.GroupOne.ButtonOne"
                  Command="CustomTab.ButtonOneCommand"
                  Sequence="11">
              </Controls>
            </Group>
          </Groups>
        </Tab>
      </CommandUIDefinition>
    </CommandUIDefinitions>
    <CommandUIHandlers>
      <CommandUIHandler
        Command="CustomTab.ButtonOneCommand"
        CommandAction="javascript:alert('how start workflow here?');" />
        />
    </CommandUIHandlers>
  </CommandUIExtension>
  <!-- what about starting workflow here? How? -->
</CustomAction>

Надеюсь, понятно, что означает моя XML-почта. Хорошо, это работает нормально, если я добавлю CommandAction = "javascript: alert ('должны запустить рабочий процесс');" , Я имею в виду, это предупреждение появляется, и я могу щелкнуть хорошо, ничего больше.

Теперь у меня в том же проекте разработан мой рабочий процесс. Есть два типа, один с формой инициации в asp, другой без, оба работают на выбранном элементе. Я могу запустить их, используя стандартную ленту «Рабочие процессы», а затем щелкнуть их. Пока все хорошо.

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

Я очень новичок в SharePoint. Поэтому, пожалуйста, включите в свой ответ такие вещи, как «Добавить новый ... Пустой файл элемента / JavaScript» или что-то еще, чтобы получить то, что я предполагаю.

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

Большое спасибо,

danbruc

Примечание: да, я просто надеюсь, что даже мой Elements.xml в порядке. Я взял все из сети. Так что, если у вас есть предложения по редизайну, я открыт. Просто слепой, видя решение. Кроме того, я могу поместить эту вкладку в ContextualTab ListView, но тогда даже javascript не работает.

1 Ответ

6 голосов
/ 22 декабря 2011

Читали ли вы документацию по Настройка и расширение ленты сервера SharePoint 2010 ?

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

<CommandUIHandler Command="WebPartContextualTabs.OnPostback"
CommandAction="javascript:__doPostBack('StartMyWorkflowPostBack','');" />

Теперь, что ввести StartMyWorkflowPostBack, чтобы начать рабочий процесс? Для этого есть несколько ресурсов, и вы найдете множество других с помощью Google:

Позвольте мне объяснить вкратце: вы не сказали нам, какой рабочий процесс. Рабочий процесс на основе списка или рабочий процесс на сайте, методы запуска отличаются для них. Взяв рабочий процесс списка в качестве примера, вам нужно просто запустить рабочий процесс следующим образом:

SPWorkflowProperties.Site.WorkflowManager.StartWorkflow(listItem, associationTemplate, initData);

Но, как вы можете видеть, вам понадобится много вещей для этого: SPListItem, SPWorkflowAssociationTemplate, а также некоторые данные инициации.

...