参照KB的视频,了解了流程表单与流程的关联。详细资料地址。
下面具体说一下操作过程的API和Aspx表单与infopath表单的区别.
表单是基于业务流程的规则创建的
aspx表单与infopath表单不一样. infopath提供了所见即所得的页面做ui页面, aspx表单是用自定义页面做ui页面,
aspx表单抽象层次比较低,所以你容易理解表单数据如何流向工作流,
数据流向是从表单流向宿主页面(IniWrkflIP.aspx)中,调用sharepoint的方法StartWorkflow ------------ site.WorkflowManager.StartWorkflow(SPListItem item,SPWorkflowAssociation wf,String EventData),该表单必须是Infopath表单.
SPListItem item 是启动流程的Item,
SPWorkflowAssociation wf是新建流程实例的关联类.(流程的模板)
String EventData是流程的初始化表单数据.
用aspx表单你必须先创建一个aspx的UI,在aspx页面中写代码调用工作流的方法和注册到其他页面中.
Aspx表单是标准的aspx页面.
如果你熟悉该技术,那么可以添加控件来收集非工作流页面的流程数据.你可以在页面中实现你需要的操作和验证. 在aspx页面中写代码调用工作流的方法和注册到其他页面中唯一的一件事情是指定具体的工作流,用户点击提交按钮,需要调用下来的方法:
在关联表单中调用:SPWorkflowAssociation.CreateListAssociation(SPWorkflowTemplate WorkflowTemplate,String WorkflowAssociationName,SPList taskList,SPList historyList).然后把关联表单的数据添加到流程的列表中.调用List.AddWorkflowAssociation(SPWorkflowAssociation workflowAssociation).
在初始化表单中调用:SPWorkflowManager.StartWorkflow (SPListItem item,SPWorkflowAssociation association,
string eventData).
在任务表单中调用:SPWorkflowTask.AlterTask(SPListItem task,Hashtable htData, bool fSynchronous)
在修改表单中调用:SPWorkflowManager.ModifyWorkflow (SPWorkflow workflow,SPWorkflowModification modification,string contextData)
用户通过参数调用这些方法来收集数据,或者用其他的SharePoint对象模型和页面的参数来收集这些信息。
然后你就可以在任何需要该流程的地方调用该流程,例如重定向或者是更改页面时。