




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微软工作流解决方案17微软工作流解决方案技术手册天翼博雅科技发展有限公司2007年12月微软解决方案-工作流Sharepoint Server 2007 工作流概述内置工作流介绍Microsoft Office SharePoint Server 2007 引入了工作流的概念为企业提供了功能强大的协同办公平台。在 Microsoft SharePoint 产品和技术环境中,工作流的定义为:根据与业务流程相关联的操作和任务的顺序所进行的文档或项目的自动转移。利用工作流,组织可以通过将业务逻辑(业务逻辑主要是指能够指定和控制对文档或项目执行的操作的一组说明。)附加到 SharePoint 列表或库中的文档或项目中来统一管理组织内的常见业务流程。通过管理和跟踪常见业务流程(如项目审批或文档审阅)中涉及的人工任务,工作流可以减少协调这些流程所需的成本和时间。例如,在 Office SharePoint Server 2007 网站中,您可以将工作流添加到文档库中,从而使文档能够传送给一组人员进行审批。当文档作者针对该库中的文档启动该工作流时,该工作流会创建文档审批任务,并将其分配给工作流参与者,然后将带有任务说明和指向待审批文档的链接的电子邮件通知发送给这些参与者。在工作流执行过程中,工作流所有者(在此种情况下指文档作者)或工作流参与者可以检查“工作流状态”页以查看哪些参与者已完成其工作流任务。当工作流参与者完成其工作流任务后,工作流随即结束,并自动通知工作流所有者工作流已完成。Microsoft SharePoint产品中,工作流不仅支持现有人工工作流程,而且还扩展了人员协作和使用文档、列表和库的方式。网站用户可以通过使用能够从 SharePoint 列表或库中的文档或项目进行访问的自定义表单来启动和参与工作流。另外,Office SharePoint Server 2007 中的工作流功能与 2007 Microsoft Office System 无缝集成。在Microsoft SharePoin中已经包含了一些常用的工作流,如:审批、收集反馈、收集签名、处理审批、三态、中文电子审批等等,用户可以直接使用这些工作流满足常见业务需求。除此之外,用户还可以自己开发并部署自定义工作流,那么这些工作流可以与上述预定义工作流共同使用,也可以替代这些预定义工作流。可以采用两种方法为 Office SharePoint Server 2007 创建自定义工作流:专业软件开发人员可以通过使用 Visual Studio 2005 Extensions for Windows Workflow Foundation 创建工作流 这些工作流包含自定义代码和工作流活动。专业开发人员创建自定义工作流之后,服务器管理员即可在多个网站上部署这些工作流。 Web 设计人员可以通过使用 Web 设计程序(如 Microsoft Office SharePoint Designer 2007)设计无代码工作流,以用于特定列表或库 这些工作流是从可用工作流活动列表中创建的,创建工作流的 Web 设计人员可以将这些工作流直接部署到将使用它们的列表或库。 解决方案介绍概述Microsoft Workflow Management Solution 工作流管理解决方案,基于Windows Workflow Foundation架构,扩展了 SharePoint Server 工作流功能,通过集中化的流程管理界面,图形化的流程模板定义和流程状态监控,为用户提供了一个灵活易用的工作流管理解决方案。架构MWMS工作流解决方案基于 Windows Workflow Foundation 之上,开发了一个灵活通用的工作流引擎。图形化的工作流模板定制界面,将用户自定义模板以XML格式保存于数据库中,通用的工作流引擎,通过读取不同的模板来实现灵活的流程。同时,工作流引擎会将工作流执行情况保存于数据库中的工作流历史日志中,图形化的工作流状态监控功能使用这些历史记录并结合SharePoint Server 提供的工作流历史记录列表中的内容,为用户提供直观的图形化的工作流监控功能。用户SharePoint Server SQL Server 2005XMLMWMS 引擎流程配置工具工作界面流程监控工具图1、MWMS架构示意图MWMS工作流管理解决方案: 以MWMS工作流引擎为核心,通过XML流程配置提供灵活的流程。1. 解决方案通过一个灵活的引擎实现了无需修改程序,只需创建、修改XML格式的流程配置信息即可更改流程,简化管理员工作,提升工作效率。2. 解决方案能够适应,多级串行、单级并行,多级并行,多级串并行等流程。3. 支持流程回退,即审批不再只是通过和拒绝两种状态,允许工作流回到初始位置,或某一级的初始位置重新开始。4. 流程中支持条件分支。5. 支持自定义邮件。6. 支持审批代理人。7. 支持审批任务通知, 集中化的个人流程管理界面,方便用户发起、完成、监控工作流程。用户可以在这里发起流程,查看流程任务,查看被拒绝的申请,检查自己审批的其他人申请等与流程相关的任务。另外还可以通过“代理人设置”功能为自己创建审批代理人。 图形化的流程定制界面,灵活易用,方便用户定制流程。通过图形化流程定制界面,只需简单的选择和少量的输入操作,即可创建自己需要的流程。 提供图形化的流程监控界面,流程状态一目了然。 基于SharePoint的移动访问平台,微软工作流解决方案实现了移动办公的功能,通过移动设备如手机、PDA等,您可以随时随地检查工作,处理审批,提升工作流程运转效率。技术概览 解决方案组成:1、 流程引擎:解释流程模板(XML语言),按照模板定义执行流程,并记录日志和历史。2、 模板设计、监控页面:创建、维护流程模板,监控流程状态。3、 个人流程管理页面:发起、管理个人相关流程及文档。4、 数据库:保存流程模板、及流程历史记录。5、 相关WebPart:用于相关信息的设置(如代理人)。 流程引擎设计:基于Windows Workflow Foundation的顺序流程创建了一个可循环,支持分支(目前版本仅支持InfoPath表单设置条件),支持多层审批(每层审批可以独立设置审批人、允许多个审批人串行或并行执行)等工作流功能。1、 工作流引擎流程设计图:图1、流程设计图1图2、流程设计图2图3、流程设计图3图4、流程设计图4图5、流程设计图52、 核心代码:详细代码请参考虚拟机中的源代码(桌面C:Documents and SettingsAdministrator桌面微软工作流解决方案codesProgramSolution)a) 代码组成:i. Workflow1:工作流实现代码。ii. Common:工作流配置信息结构定义。iii. InfopathHelper:表单操作。iv. SharePointHelper:SharePoint操作。v. SQLConfigHelp:数据库操作。vi. XmlHelper:xml操作。3、 工作流模板XML定义2 /审批级数 /内容类型Urn0 /本级审批是否使用条件 0:不使用,1:使用my:xxxxxxxx /条件的值来自表单中的哪个域>/比较符号(,=,=,=)50000/条件值administrator /条件为真的时候的审批人1 /条件为真时使用的邮件模板administrator /条件为假时候的审批人2 /条件为假时使用的邮件模板2/返回活动目标0/串并行标志.1 /审批邮件模板2 /拒绝邮件模板3 /编辑邮件模板请您审批 /审批任务标题请重新修改您的预算申请 /修改任务标题 界面设计1、 流程模板设计维护及监控:采用技术、javascript、vml技术相结合开发,为用户提供图形化的流程模板设计及监控界面。a) 核心文件:C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12TEMPLATELAYOUTSMWMSi. Aspx页面:流程定义、监控页面。ii. JsWFScript.js:核心脚本。iii. MWMSMobileaspx文件:移动审批页面。b) 代码示例i. WFScript.js中的核心类定义/类定义-/审批层类function LevelConfig() this.UseCondition = 0; /0不使用,无分支活动,1使用,分支活动 this.Condition = ; this.Opreator = ; this.Rule = ; this.BranchTruePerson = ; this.BranchTrueMailTemplate = ; this.BranchFalsePerson = ; this.BranchFalseMailTemplate = ; this.ModifiedTarget = 1; /返回的目的:0结束工作流,1返回本层,2返回工作流开始。 this.SPFlag = 0; /0串行,1并行 this.FlagBits = InitFlagBits; /指示各容器中是否已经放置了控件是否已经设置 0 未设置 1 已经设置 /两种情况:带条件的时候是6位(1:BranchTrue;2:BranchFalse;3:RejectAction;4:Approved;5:BackAction;6:ApprovalBranch or ApprovalNonBranch) / 不带条件的时候前两位默认设置为1LevelCtotype.GetFlagBit = function(actiontype) var atPosition; var tmpString = ; switch(actiontype) case BranchTrue: atPosition = 1; break; case BranchFalse: atPosition = 2; break; case RejectAction: atPosition = 3; break; case Approved: atPosition = 4; break; case BackAction: atPosition = 5; break; case ApprovalBranch: case ApprovalNonBranch: atPosition = 6; break; tmpString = this.FlagBits.substring(atPosition-1,atPosition); /alert(this.FlagBits + - + tmpString); return parseInt(tmpString,10);LevelCtotype.CheckLevel = function() var retVal = true; if(this.UseCondition = 1) if(this.Condition = | this.Opreator = | this.Rule = | this.BranchTruePerson = | this.BranchTrueMailTemplate = | this.BranchFalsePerson = | this.BranchFalseMailTemplate = ) retVal = false; else if(this.BranchTruePerson = | this.BranchTrueMailTemplate = ) retVal = false; return retVal;LevelCtotype.SetFlagBit = function(actiontype, value) var atPosition; var tmpString = ; switch(actiontype) case BranchTrue: atPosition = 1; break; case BranchFalse: atPosition = 2; break; case RejectAction: atPosition = 3; break; case Approved: atPosition = 4; break; case BackAction: atPosition = 5; break; case ApprovalBranch: case ApprovalNonBranch: atPosition = 6; break; tmpString = this.FlagBits.substring(0,atPosition - 1); tmpString = tmpString + value.toString() + this.FlagBits.substring(atPosition,this.FlagBits.length); this.FlagBits = tmpString; /alert(tmpString);LevelCtotype.GetXml1 = function(level) var retXML = ; retXML = retXML + + this.UseCondition + ; retXML = retXML + + this.Condition + ; retXML = retXML + + this.Opreator + ; retXML = retXML + + this.Rule + ; retXML = retXML + + this.BranchTruePerson + ; retXML = retXML + + this.BranchTrueMailTemplate + ; retXML = retXML + + this.BranchFalsePerson + ; retXML = retXML + + this.BranchFalseMailTemplate + ; retXML = retXML + + this.ModifiedTarget + ; retXML = retXML + + this.SPFlag + + ; return retXML;LevelCtotype.GetXml = function(level) var retXML = ; retXML = retXML + + this.UseCondition + ; retXML = retXML + + this.Condition + ; retXML = retXML + + this.Opreator + ; retXML = retXML + + this.Rule + ; retXML = retXML + + this.BranchTruePerson + ; retXML = retXML + + this.BranchTrueMailTemplate + ; retXML = retXML + + this.BranchFalsePerson + ; retXML = retXML + + this.BranchFalseMailTemplate + ; retXML = retXML + + this.ModifiedTarget + ; retXML = retXML + + this.SPFlag + + ; return retXML;/工作流类function WFConfig() this.WorkflowID = ; this.WorkflowName = ; this.ApprovalLevelCount = 0; this.ContentTypeUrn = ; this.ApprovalTaskTitle = ; this.ModifyTaskTitle = ; this.ApprovedMailTemplateId = ; this.RejectMailTemplateId = ; this.ModifyMailTemplateId = this.Levels = ;WFCtotype.CheckWFConfig = function() var retVal = true; if(this.ApprovalLevelCount = 0) retVal = false; else if(this.WorkflowName = | this.ApprovalTaskTitle = | this.ModifyTaskTitle = | this.ApprovedMailTemplateId = | this.RejectMailTemplateId = | this.ModifyMailTemplateId = ) retVal = false; else for(var i = 0; i this.Levels.length; i+) if(this.Levelsi != null) retVal = this.Levelsi.CheckLevel(); if(!retVal) retVal = false; break; return retVal;WFCtotype.GetXml = function() var retXML = ; retXML = retXML + + this.WorkflowID + retXML = retXML + + this.WorkflowName + retXML = retXML + + this.ApprovalLevelCount + retXML = retXML + + this.ContentTypeUrn + retXML = retXML + + this.ApprovalTaskTitle + retXML = retXML + + this.ModifyTaskTitle + retXML = retXML + + this.ApprovedMailTemplateId + retXML = retXML + + this.RejectMailTemplateId + retXML = retXML + + this.ModifyMailTemplateId + + return retXML; 2、 个人工作:使用SharePoint Designer 2007制作的页面,使用了MasterPage,WebPart等技术。3、 流程运行相关:代理人设置WebPart等相关代码。 数据库设计数据结构USE MWMSWorkflowGO/* 对象: Table dbo.ApprovalLog 脚本日期: 03/24/2008 02:57:56 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE dbo.ApprovalLog(ID int IDENTITY(1,1) NOT NULL,WorkflowTemplateID int NOT NULL,ListID uniqueidentifier NOT NULL,ItemID int NOT NULL,WorkflowID uniqueidentifier NOT NULL,CurrentLevel int NOT NULL CONSTRAINT DF_ApprovalLog_CurrentLevel DEFAULT (0),ApprovalFileName nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,ApplicantID nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,ApplicantDisplayName nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,StartDate datetime NULL,EndDate datetime NULL,Result int NOT NULL,Detail text COLLATE Chinese_PRC_CI_AS NULL) ON PRIMARY TEXTIMAGE_ON PRIMARYGO/* 对象: Table dbo.MailTemplet 脚本日期: 03/24/2008 02:57:56 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE dbo.MailTemplet(MailTempletID int IDENTITY(1,1) NOT NULL,MailTempletName nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,MailTo text COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT DF_MailTemplet_MailTo DEFAULT (),MailFrom text COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT DF_MailTemplet_MailFrom DEFAULT (),MailCC text COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT DF_MailTemplet_MailCC DEFAULT (),MailSubject text COLLATE Chinese_PRC_CI_AS NOT NULL,MailBody text COLLATE Chinese_PRC_CI_AS NOT NULL) ON PRIMARY TEXTIMAGE_ON PRIMARYGO/* 对象: Table dbo.ProxyList 脚本日期: 03/24/2008 02:57:56 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE dbo.ProxyList(ID int IDENTITY(1,1) NOT NULL,PersonDisplayName nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,ProxyDisplayName nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,UseProxyFlag int NOT NULL CONSTRAINT DF_ProxyList_UserProxyFlag DEFAULT (0) ON PRIMARYGO/* 对象: Table dbo.WorkflowHistoryLog 脚本日期: 03/24/2008 02:57:56 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.WorkflowHistoryLog(ID int IDENTITY(1,1) NOT NULL,ListID uniqueidentifier NOT NULL,WorkflowID uniqueidentifier NOT NULL,ItemID int NOT NULL,TaskID int NOT NULL,CurrentLevel int NOT NULL CONSTRAINT DF_WorkflowHistoryLog_CurrentLevel DEFAULT (0),ActionXml char(20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT DF_WorkflowHistoryLog_ActionXml DEFAULT (),TaskName nvarchar(100) COLLATE Chinese_PRC_CI_AS NULL,Creator nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,CreatorDisplayName nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL,Assigned
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网红品牌孵化器与加速器创新创业项目商业计划书
- 农产品电商邮件营销创新创业项目商业计划书
- 2025年福清市消防员考试笔试试题(含答案)
- 移动社区服务系统创新创业项目商业计划书
- 自动驾驶车辆车载厨房创新创业项目商业计划书
- 辐射安全知识培训课件通知书
- 现场急救培训知识课件
- 2025年工业互联网NFV技术优化工业网络安全实践报告
- 2025年工业互联网平台传感器网络自组网技术在智能仓储中的解决方案
- 2025年教育信息化2.0背景下教师教育技术装备应用现状与对策报告
- 2025四川省公安厅招聘辅警(448人)笔试备考题库及答案解析
- 2025年北京市中考语文真题(含答案)
- 小学英语“教学评一体化”实施
- JJG 966-2010手持式激光测距仪
- 中班语言绘本《点》课件
- 大数据与金融课件
- 新版现代西班牙语第二册课后答案
- CS4000高级过程控制实验装置设备操作说明书
- 上海港港口拖轮经营人和港口拖轮名录
- 企业安全标准化班组建设PPT课件
- 超长混凝土结构温度应力分析
评论
0/150
提交评论