none
如何获取微软审批工作流的下一个经办人信息? RRS feed

  • 问题

  • 现在用移动设备能把微软自带的工作流完成了,但是下一个经办人的工作流不会自动启动,所以需要把下一个经办人找出来,然后将工作流转给他。

    怎么找?使用CAML还是什么?用CAML的话怎么写?

    请指教!


    lixw
    2011年5月30日 1:19

答案

  • 谢谢啊,我还是不太会用SPWorkflowTaskProperties,我从workflow的tasks里把所有属性全取出来也没几个,应该是方法错误。

    不过还好,我从workflow.Modifications[i].ContextData的最后一条数据中发现了我想要的,

    格式如下:

    <my:NewReviewers>
      <my:Person xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD">
        <my:DisplayName>李光伟</my:DisplayName>
        <my:AccountId>XLHOLDINGS\ligw</my:AccountId>
        <my:AccountType>User</my:AccountType>
      </my:Person>
      <my:Person xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD">
        <my:DisplayName>崔丽颖</my:DisplayName>
        <my:AccountId>XLHOLDINGS\cuily</my:AccountId>
        <my:AccountType>User</my:AccountType>
      </my:Person>
    </my:NewReviewers>
    <my:DueDate></my:DueDate>
    <my:Description>pp</my:Description>
    <my:Duration xsi:nil="true"></my:Duration>
    <my:DurType>0</my:DurType>
    <my:GroupTasks>false</my:GroupTasks>
    <my:ShowDuration>1</my:ShowDuration>


    lixw
    2011年6月3日 6:51

全部回复

  • 补充下问题,可能很多人没怎么用过微软自带的审批工作流。

    审批工作流可以设置“并行”和“串行”两种方法,设置为“串行”的工作流在发起时,可以选择多个经办人A、B、C……,工作流启动后A会收到工作流任务,A办理完后,不需要再次选择经办人,系统会自动将任务转给B,B才会收到,同样,B办理完后,C会自动收到此任务,以此类推,所有经办人办理完后,工作流状态修改为完成,A就会收到工作完成的邮件通知。

    我现在想用移动设备完成这个工作流程,现在A任务能用手机完成,但是系统不会自动将任务转给B,所以我需要找到B,然后将任务转给B。

    希望大家能多帮忙,所有代码完成后,我会将代码文件全部上传共享。


    lixw
    2011年5月31日 0:31
  • 你好,

    你代码中怎么传入审批人的数据的。一般在程序启动工作流时需要传入AssocaitionData,与workflow相关的需要输入的数据都会通过这个对象传入workflow。

    这样你要获取就可以直接通过workflowProperties.AssociationData来获取。

    有关例子你可以参考下面文档。

    http://www.tonytestasworld.com/post/Howto-Start-a-Sharepoint-Workflow-Programmatically.aspx

    http://ketulpatel.wordpress.com/2008/06/27/programmatically-setting-up-approval-workflow-in-moss/


    Microsoft Online Community Support
    2011年5月31日 3:31
  • 当前审批人很好弄,

          SPWeb mWeb = SPContext.Current.Web;
          SPList mTaskList = mWeb.Lists[new Guid(taskListName)];
          string queryString = "<Where><And><Eq><FieldRef Name='AssignedTo' /><Value Type='User'>" + mWeb.CurrentUser.Name + "</Value></Eq>" +
            "<Neq><FieldRef Name='PercentComplete' /><Value Type='Number'>1</Value></Neq></And></Where>" +
            "<OrderBy><FieldRef Name='StartDate' Ascending='False' /></OrderBy>";
          SPQuery myQuery = new SPQuery();
          myQuery.Query = queryString;
          SPListItemCollection myTasks = mTaskList.GetItems(myQuery);
          foreach (SPListItem mTaskItem in myTasks)
          {
            myApproveTask.Items.Add(new MobileListItem(mTaskItem.Title, mTaskItem.UniqueId.ToString())); 
          }
          mWeb.Close();
    
    

    事先声明:这代码不是我写的啊。

    但是下一个人是谁,这个一点思路都没有。


    lixw
    2011年5月31日 9:45
  • 你好,

    你可以按照我上面的链接,把所有人员名字通过AssociationData属性传入workflow,然后以后获取的时候直接去获取AssociationData就可以了 。


    Microsoft Online Community Support
    2011年6月1日 5:40
  • 现在的问题就是“所有人员的名字”不知道。

    我是想在微软审批工作流的基础上开发一个能通过手机签发的程序,原有Web页面的功能、操作不变,只需要新建几个手机使用的aspx页面完成手机签发的功能。

    现在“所有人员的名字”是通过审批工作流的Web页面传进去的,我只需要读取出来就行,但是AssociationData好像必须先赋值,过会再取这些值。

    我测试了,“审批任务”列表的WorkflowAssociations的count是0,也就是说默认没有AssociationData。

    我还在尝试,并查找其他的一些办法。

    希望您能再给我些建议!

    谢谢!!!


    lixw
    2011年6月1日 8:29
  • 你好,

    你是否自定义task form了?一般来说所有的数据都来值SPWorkflowTaskProperties。

    关于如何访问工作流任务表单的数据,你可以参考下面文档。÷

    http://msdn.microsoft.com/zh-cn/library/ms520166.aspx

     


    Microsoft Online Community Support
    2011年6月1日 9:55
  • 我正在试图从microsoft.office.workflow.tasks.dll里直接调用微软自带的函数完成所有的操作。说实话,看不太懂啊。


    lixw
    2011年6月2日 3:39
  • 惭愧,又来麻烦您了。问题还是没有搞定,我用SPWorkflowTask.GetWorkflowData(this.m_task)获取了所有与工作流有关的数据,但却没有我想要的下一步经办人的信息,如下:

    <z:row xmlns:z='#RowsetSchema' ows_ContentTypeId='0x01080100C9C9515DE4E24001905074F980F9316000FA4231EE030EBF4AA27536A08A868E57' ows_Title='请审批 rrr' ows_Priority='(2) 中' ows_Status='未启动' ows_AssignedTo='15;#李鑫伟' ows_Body='ok' ows_StartDate='2011-06-01 15:38:55' ows_WorkflowLink='http://moss/DocLib1/rrr.xml, rrr' ows_WorkflowName='测试审批流程' ows_TaskType='1' ows_FormURN='urn:schemas-microsoft-com:office:infopath:workflow:ReviewRouting-Review:$Subst:LCID;' ows_EmailBody='&lt;HTML&gt;
      &lt;HEAD&gt;
        &lt;STYLE&gt;
    TABLE.mail
    {
        border-collapse:collapse; width:100%;
        font: 9pt 宋体;
    }

    TD.header { background:#F8F8F9; border:1px solid #E8EAEC;              padding: 12pt 10px 20px 10px; font: 16pt 宋体}
    TD.body { border-top:1px solid #E8EAEC; border-bottom:1px solid #E8EAEC; padding: 12pt 10px 24pt 10px; }
    TD.footer { border-top:1px solid #E8EAEC; border-bottom:1px solid #9CA3AD; padding: 4pt 10px 4pt 10px; }
    A { color:#003399; text-decoration:none; }
    A:visited { color:#aa00aa; }.bodytext
    {
        font: 9pt 宋体;
        color: #000000;
    }

        &lt;/STYLE&gt;
      &lt;/HEAD&gt;
      &lt;BODY class=bodytext&gt;
        &lt;TABLE class=mail cellspacing=0 dir=ltr&gt;
          &lt;TR class=header&gt;
            &lt;TD class=header&gt;任务由 李光伟 在 2011/6/1 分配。&lt;br&gt;&lt;/TD&gt;
          &lt;/TR&gt;
          &lt;TR class=body&gt;
            &lt;TD class=body&gt;ok&lt;/TD&gt;
          &lt;/TR&gt;
          &lt;TR class=footer&gt;&lt;TD class=footer&gt;若要完成此任务:&lt;br&gt;&lt;ol&gt;&lt;li&gt;审阅 &lt;a href=&quot;http://moss/_layouts/FormServer.aspx?XmlLocation=http://moss/DocLib1/rrr.xml&quot;&gt;rrr.xml&lt;/a&gt;。&lt;/li&gt;&lt;li&gt;执行此任务所需的特定活动。&lt;/li&gt;&lt;li&gt;&lt;!--[if gte mso 12]&gt;使用"编辑此任务"&lt;b&gt;&lt;/b&gt;按钮,将任务标记为已完成。 (如果您无法更新该任务,可能是您没有适当的访问权限。请单击&lt;a href=&quot;http://moss/Lists/Approval Tasks/DispForm.aspx?ID=7&quot;&gt;此处&lt;/a&gt;请求访问权限。)&lt;![endif]--&gt;&lt;![if !(gte mso 12)]&gt;&lt;a href=&quot;http://moss/Lists/Approval Tasks/DispForm.aspx?ID=7&quot;&gt;编辑此任务&lt;/a&gt;,将该任务标记为已完成。&lt;![endif]&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/TD&gt;&lt;/TR&gt;

        &lt;/TABLE&gt;
       
      &lt;/BODY&gt;
    &lt;/HTML&gt;' ows_HasCustomEmailBody='0' ows_SendEmailNotification='1' ows_Completed='0' ows_WorkflowListId='{3E8D0D33-B555-49B7-84B7-11E255917406}' ows_WorkflowItemId='26' ows_AllowChangeRequests='True' ows_AllowDelegation='True' ows_BodyText='ok' ows_ContentType='Office SharePoint Server 工作流任务' ows__ModerationStatus='0' ows_ID='7' ows_Modified='2011-06-01 15:38:55' ows_Created='2011-06-01 15:38:55' ows_Author='21;#李光伟' ows_Editor='1073741823;#系统帐户' ows_owshiddenversion='1' ows_WorkflowVersion='1' ows__UIVersion='512' ows__UIVersionString='1.0' ows_Attachments='0' ows_LinkTitleNoMenu='请审批 rrr' ows_LinkTitle='请审批 rrr' ows_SelectTitle='7' ows_Order='700.000000000000' ows_GUID='{15AFD4C0-B869-4435-A045-5107E7451449}' ows_WorkflowInstanceID='{18B25933-9F62-4EBB-BCC4-4E3D6E873B91}' ows_FileRef='7;#Lists/Approval Tasks/7_.000' ows_FileDirRef='7;#Lists/Approval Tasks' ows_Last_x0020_Modified='7;#2011-06-01 15:38:55' ows_Created_x0020_Date='7;#2011-06-01 15:38:55' ows_FSObjType='7;#0' ows_PermMask='0x400001f07eff1bff' ows_FileLeafRef='7;#7_.000' ows_UniqueId='7;#{B81ECA7F-CA57-4BC7-92DB-526F142620ED}' ows_ProgId='7;#' ows_ScopeId='7;#{0F1DC06C-F4B2-40B5-B2EB-BE64328B0CDA}' ows__EditMenuTableStart='7_.000' ows__EditMenuTableEnd='7' ows_LinkFilenameNoMenu='7_.000' ows_LinkFilename='7_.000' ows_ServerUrl='/Lists/Approval Tasks/7_.000' ows_EncodedAbsUrl='http://moss/Lists/Approval%20Tasks/7_.000' ows_BaseName='7_' ows_MetaInfo='7;#vti_encoding:SR|utf8-nl
    WorkflowCreationPath:SW|bd9ee07b-237a-47f5-b53d-bb29444c7d3f;
    ' ows__Level='1' ows__IsCurrentVersion='1' ows_TaskListId='83d49921-5caf-46ae-b593-4017b0a7c1e5' ows_EditFormURL='_layouts/WrkTaskIP.aspx' />


    lixw
    2011年6月3日 2:57
  • 你好,

    你的意思是说下一个审批者是在task form中输入的对吧,如果是这样的话建议你参考我上面的链接采用SPWorkflowTaskProperties试试。

    http://msdn.microsoft.com/zh-cn/library/ms520166.aspx


    Microsoft Online Community Support
    2011年6月3日 3:30
  • 谢谢啊,我还是不太会用SPWorkflowTaskProperties,我从workflow的tasks里把所有属性全取出来也没几个,应该是方法错误。

    不过还好,我从workflow.Modifications[i].ContextData的最后一条数据中发现了我想要的,

    格式如下:

    <my:NewReviewers>
      <my:Person xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD">
        <my:DisplayName>李光伟</my:DisplayName>
        <my:AccountId>XLHOLDINGS\ligw</my:AccountId>
        <my:AccountType>User</my:AccountType>
      </my:Person>
      <my:Person xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD">
        <my:DisplayName>崔丽颖</my:DisplayName>
        <my:AccountId>XLHOLDINGS\cuily</my:AccountId>
        <my:AccountType>User</my:AccountType>
      </my:Person>
    </my:NewReviewers>
    <my:DueDate></my:DueDate>
    <my:Description>pp</my:Description>
    <my:Duration xsi:nil="true"></my:Duration>
    <my:DurType>0</my:DurType>
    <my:GroupTasks>false</my:GroupTasks>
    <my:ShowDuration>1</my:ShowDuration>


    lixw
    2011年6月3日 6:51