如果不用QuickFlow提供的控件来开发工作流页面,如何启动流程,提交任务呢?
2012-03-17 23:27
288 查看
有两种方式:
a)直接用SharePoint的对象模型来操作。这样做会有些复杂性。
跟Workflow有关的方法有:SPSite.WorkflowManager.StartWorkflow, SPWorkflow.AlterTask,详细见SharePoint SDK.
b)用QuickFlow提供的API操作: WorkflowContext.Current.
用WorkflowContext必须在特定的上下文下运行,包括列表的新建页面,任务的提交页面。
常用WorkflowContext方法如下:
WorkflowTask一般通过WorkflowContext.Current.Task或者WorkflowContext.FromListItem获取
常用WorkflowTask方法如下:
示例:
在列表的Newform页面启动工作流:
WorkflowContext.Current.StartWorkflow(“My Workflow”)
无论是启动工作流还是提交任务前,都可以传递工作流变量
WorkflowContext.Current.UpdateWorkflowVariable(“vabiableName”,value)
在一个普通的aspx页面启动流程(非NewForm页面):
var wflist = SPContext.Current.Web.Lists[“List1”];
WorkflowContext wfCtx = WorkflowContext.CreateContext(wflist);
wfCtx.DataFields["Title"] = proj.ProjectName; //设置列表项字段
wfCtx.DataFields["ReferenceNo"] = proj.ReferenceNo;
wfCtx.DataFields[ProjectID_FieldName] = proj.ID;
wfCtx.UpdateWorkflowVariable("sendToPCController", true);//设置工作流变量
wfCtx.UpdateWorkflowVariable("PCController", new NameCollection(pcController));
wfCtx.UpdateWorkflowVariable("PM", new NameCollection(proj.ProductManager));
wfCtx.StartWorkflow(Config.WorkflowName);
在任务页面获取任务动作:
TaskActionCollection actons = WorkflowContext.Current.Task.Actions;
在任务页面完成任务:
WorkflowContext.Current.CommitTask(“Approved”); //Approved is a taskAction
a)直接用SharePoint的对象模型来操作。这样做会有些复杂性。
跟Workflow有关的方法有:SPSite.WorkflowManager.StartWorkflow, SPWorkflow.AlterTask,详细见SharePoint SDK.
b)用QuickFlow提供的API操作: WorkflowContext.Current.
用WorkflowContext必须在特定的上下文下运行,包括列表的新建页面,任务的提交页面。
常用WorkflowContext方法如下:
WorkflowContext.Current | 获取到当前的工作流上下文 |
WorkflowContext.CreateContext(SPList dataList) | 基于某个列表创建一个上下文, 这样创建的context,自动工作流的时候,会自动在列表中新建一个列表项 |
.DataFields[] | 获取或设置列表字段值。 |
.UpdateWorkflowVariable(string name, object value) | 工作流启动前或任务提交前更新工作流变量 |
.StartWorkflow(string wfName) | 启动工作流 |
.CommitTask( string outcome ) | 完成任务,指定任务的结果(通过,拒绝) |
.ReAssignTask(string to) | 转发任务 |
WorkflowContext.Current.Task | 获取当前的WorkflowTask(只能获取到上次的数据) |
WorkflowContext.Current.TaskFields["field name"] | 获取当前的任务字段属性,可以获取到最新数据 |
常用WorkflowTask方法如下:
WorkflowContext.FromListItem | |
.Actions | 获取到任务的动作集合(TaskActions) |
bool CanCommit() | 当前用户是否可以提交工作流(只有网站集管理员或者任务操作人才能提交任务) |
CommitTask(string outcome) | 提交任务 |
在列表的Newform页面启动工作流:
WorkflowContext.Current.StartWorkflow(“My Workflow”)
无论是启动工作流还是提交任务前,都可以传递工作流变量
WorkflowContext.Current.UpdateWorkflowVariable(“vabiableName”,value)
在一个普通的aspx页面启动流程(非NewForm页面):
var wflist = SPContext.Current.Web.Lists[“List1”];
WorkflowContext wfCtx = WorkflowContext.CreateContext(wflist);
wfCtx.DataFields["Title"] = proj.ProjectName; //设置列表项字段
wfCtx.DataFields["ReferenceNo"] = proj.ReferenceNo;
wfCtx.DataFields[ProjectID_FieldName] = proj.ID;
wfCtx.UpdateWorkflowVariable("sendToPCController", true);//设置工作流变量
wfCtx.UpdateWorkflowVariable("PCController", new NameCollection(pcController));
wfCtx.UpdateWorkflowVariable("PM", new NameCollection(proj.ProductManager));
wfCtx.StartWorkflow(Config.WorkflowName);
在任务页面获取任务动作:
TaskActionCollection actons = WorkflowContext.Current.Task.Actions;
在任务页面完成任务:
WorkflowContext.Current.CommitTask(“Approved”); //Approved is a taskAction
相关文章推荐
- 如何解决流程开发中SheetRadioButtonList页面取值问题
- React-Native 如何将图片作为页面的背景以及控件的嵌套实现启动应用
- 分类网站中这种模式如下 如果不使用Datalist 将如何编制 使用怎样的控件操作 希望哪位大虾 提供相关代码
- mapreduce的任务切片规划机制、job提交流程、Mapreduce中的分区Partitioner与流量汇总程序开发
- [SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(三):工作流开发
- 求助 android开发中 如果两个控件的id相同 会怎样?如何使用findviewbyid ()寻找到?
- Predix UI 控件库如何运用到产品开发流程中?
- 按钮只能一次提交:ajax页面中调用ascx控件,如何设置ascx中按钮为false
- React-Native 如何将图片作为页面的背景以及控件的嵌套实现启动应用
- [SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(三):工作流开发
- Skyline软件二次开发初级——1如何在web页面中添加控件和加载三维地图数据
- 如何阻止ASP.NET的按钮控件提交页面
- [SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(二):关联设置与启动设置
- 如何阻止ASP.NET的按钮控件提交页面
- 用户控件包含一个搜索功能,但是在调用页面中按回车时无法直接提交这个表单,只有鼠标点击才提交,如何解决?
- 如何快速引用ascx控件而不用到处页面注册ascx
- web工作流管理系统开发之十二 同一张表单在流程多节点中流转的权限控件
- 工作流(3)--activit 5.14 开发测试(绘制流程、发布流程、启动实例、流程运转)
- Liferay7 BPM门户开发之47: 集成Activiti待办已办任务清单和流程启动
- 基于标签方式的工作流启动及任务执行开发说明