积极答复者
如何获取微软审批工作流的下一个经办人信息?

问题
答案
-
谢谢啊,我还是不太会用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- 已标记为答案 KeFang Chen 2011年6月3日 9:41
全部回复
-
补充下问题,可能很多人没怎么用过微软自带的审批工作流。
审批工作流可以设置“并行”和“串行”两种方法,设置为“串行”的工作流在发起时,可以选择多个经办人A、B、C……,工作流启动后A会收到工作流任务,A办理完后,不需要再次选择经办人,系统会自动将任务转给B,B才会收到,同样,B办理完后,C会自动收到此任务,以此类推,所有经办人办理完后,工作流状态修改为完成,A就会收到工作完成的邮件通知。
我现在想用移动设备完成这个工作流程,现在A任务能用手机完成,但是系统不会自动将任务转给B,所以我需要找到B,然后将任务转给B。
希望大家能多帮忙,所有代码完成后,我会将代码文件全部上传共享。
lixw -
你好,
你代码中怎么传入审批人的数据的。一般在程序启动工作流时需要传入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 -
当前审批人很好弄,
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 -
现在的问题就是“所有人员的名字”不知道。
我是想在微软审批工作流的基础上开发一个能通过手机签发的程序,原有Web页面的功能、操作不变,只需要新建几个手机使用的aspx页面完成手机签发的功能。
现在“所有人员的名字”是通过审批工作流的Web页面传进去的,我只需要读取出来就行,但是AssociationData好像必须先赋值,过会再取这些值。
我测试了,“审批任务”列表的WorkflowAssociations的count是0,也就是说默认没有AssociationData。
我还在尝试,并查找其他的一些办法。
希望您能再给我些建议!
谢谢!!!
lixw -
你好,
你是否自定义task form了?一般来说所有的数据都来值SPWorkflowTaskProperties。
关于如何访问工作流任务表单的数据,你可以参考下面文档。÷
http://msdn.microsoft.com/zh-cn/library/ms520166.aspx
Microsoft Online Community Support -
惭愧,又来麻烦您了。问题还是没有搞定,我用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='<HTML>
<HEAD>
<STYLE>
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;
}</STYLE>
</HEAD>
<BODY class=bodytext>
<TABLE class=mail cellspacing=0 dir=ltr>
<TR class=header>
<TD class=header>任务由 李光伟 在 2011/6/1 分配。<br></TD>
</TR>
<TR class=body>
<TD class=body>ok</TD>
</TR>
<TR class=footer><TD class=footer>若要完成此任务:<br><ol><li>审阅 <a href="http://moss/_layouts/FormServer.aspx?XmlLocation=http://moss/DocLib1/rrr.xml">rrr.xml</a>。</li><li>执行此任务所需的特定活动。</li><li><!--[if gte mso 12]>使用"编辑此任务"<b></b>按钮,将任务标记为已完成。 (如果您无法更新该任务,可能是您没有适当的访问权限。请单击<a href="http://moss/Lists/Approval Tasks/DispForm.aspx?ID=7">此处</a>请求访问权限。)<![endif]--><![if !(gte mso 12)]><a href="http://moss/Lists/Approval Tasks/DispForm.aspx?ID=7">编辑此任务</a>,将该任务标记为已完成。<![endif]></li></ol></TD></TR></TABLE>
</BODY>
</HTML>' 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 -
你好,
你的意思是说下一个审批者是在task form中输入的对吧,如果是这样的话建议你参考我上面的链接采用SPWorkflowTaskProperties试试。
http://msdn.microsoft.com/zh-cn/library/ms520166.aspx
Microsoft Online Community Support -
谢谢啊,我还是不太会用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- 已标记为答案 KeFang Chen 2011年6月3日 9:41