【问题标题】:Start a workflow from a custom button/action on a list item in SharePoint 2010 (all with Visual Studio 2010)从 SharePoint 2010 中列表项上的自定义按钮/操作启动工作流(全部使用 Visual Studio 2010)
【发布时间】:2011-12-22 20:24:58
【问题描述】:

我很抱歉问了一个双重问题,但我找不到解决方案 - 或者对答案的理解缺失。

我的问题是这样描述的:

我有一些自制的带有按钮的自定义功能区。如果我点击设计的按钮,我喜欢启动一个工作流程。

好的,关于设置的更多信息:

这是一个通用列表,意思是,我的 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-Post 是什么意思很清楚。好的,如果我把 CommandAction="javascript:alert('should start a workflow');" .我的意思是,弹出这个警报,我可以点击确定,没有别的。

现在我在同一个项目中设计了我的工作流程。有两种类型,一种在asp中具有启动形式,另一种没有,都对选定的项目进行操作。我可以在使用标准功能区“工作流程”时启动它们,然后单击它们。到目前为止一切都很好。

但我想通过单击我的按钮来启动每个工作流程,而不是像现在这样单击更多。到目前为止,感谢您对我的帮助。

我是 SharePoint 的新手。因此,请在您的答案中包含诸如“添加新的...空元素/ JavaScript 文件”之类的内容或任何必要的内容来获得我的假设。

如果您对我的工作流程设计有更多疑问,我会尽快回答。

非常感谢,

丹布鲁克

注意:是的,我只是希望我的 Elements.xml 也可以。我都是从网上拿的。所以如果你有重新设计的建议,我很开放。只是盲目地看到解决方案。 另外,我可以把这个 Tab 放到 ListView 的 ContextualTab 里面,但是连 javascript 也不能​​用了。

【问题讨论】:

    标签: sharepoint workflow code-behind custom-action


    【解决方案1】:

    您是否阅读了Customizing and Extending the SharePoint 2010 Server Ribbon 上的文档?

    它非常简洁,向您展示了有关您的问题的要点: 您需要进行回发以通过服务器端代码启动工作流:

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

    现在输入StartMyWorkflowPostBack 以启动您的工作流程?这方面有多种资源,您可以通过 Google 找到更多资源:

    让我简单解释一下:你没有告诉我们什么样的工作流程。基于列表的工作流或站点工作流,它们的启动方法不同。以列表工作流为例,您只需像这样启动工作流:

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

    但正如您所见,您需要很多东西:SPListItemSPWorkflowAssociationTemplate 以及一些初始数据。

    【讨论】:

    • 亲爱的moontear,非常感谢您的快速答复。我将查看您的链接,它们听起来非常有用。看起来我无法向谷歌提出正确的问题。因为我发现了大量的工作流程演练,还有大量的自定义操作,但没有一个组合在一起。参考您的问题:a)所有工作流程都针对特定列表 b)有些有启动表格,有些没有谢谢,我会在了解您的链接后发布
    • 您尝试做的事情并不容易,但可以实现。了解 MSDN 上针对您的自定义操作的 Postback 示例,只需在后面的代码中调用 StartWorkflow - 基本上就是这个过程:-)
    • ATM 我能够从另一个启动工作流,而所有工作流都由我部署。这很好,供以后使用。回传的东西将是下一个,但现在我不在办公室,祝你周末愉快,度过愉快的时光。 (不是每个人都属于圣诞节)。
    • 我实际上发现你可以通过 JS 对象模型直接启动一个工作流:msdn.microsoft.com/en-us/library/ee550060.aspx 非常有趣并且不会涉及后面的代码:-)
    • 您好,moontear,非常感谢您的研究工作。很抱歉最近几天没有再看。但是祝你新年快乐。下次我会尝试你的建议并提供反馈。
    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多