一步一步部署微软工作流解决方案(MWMS)到生产环境

我向微软申请了MWMS,可拿到CD时解压不了,连DEMO环境都部署不了,要微软换吧,先叫我退回CD再寄,晕了...

于是我从网上下了原码,心想我用源码来搞吧,不要你的DEMO了,想从网上找相关的部署--没有,只好自己开始了...................





一准备

   先把网上下载源码,安装好VS2008,INFOPATH,SHAREPOINT DESGIGNER 2007当然还有MOSS 2007环境.

二安装MWMSWORKFLOW数据库

  先把网上的源码解压,里面有个文件 <<微软工作流解决方案技术手册.docx>> 在最后有关数据库的SQL,COPY下来.

  1. USE [MWMSWorkflow]
     
  2. GO
     
  3. /****** 对象:  Table [dbo].[ApprovalLog]    脚本日期: 03/24/2008 02:57:56 ******/
     
  4. SET ANSI_NULLS ON
     
  5. GO
     
  6. SET QUOTED_IDENTIFIER ON
     
  7. GO
     
  8. CREATE TABLE [dbo].[ApprovalLog](
     
  9.         [ID] [int] IDENTITY(1,1) NOT NULL,
     
  10.         [WorkflowTemplateID] [int] NOT NULL,
     
  11.         [ListID] [uniqueidentifier] NOT NULL,
     
  12.         [ItemID] [int] NOT NULL,
     
  13.         [WorkflowID] [uniqueidentifier] NOT NULL,
     
  14.         [CurrentLevel] [int] NOT NULL CONSTRAINT [DF_ApprovalLog_CurrentLevel]  DEFAULT ((0)),
     
  15.         [ApprovalFileName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  16.         [ApplicantID] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  17.         [ApplicantDisplayName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
     
  18.         [StartDate] [datetime] NULL,
     
  19.         [EndDate] [datetime] NULL,
     
  20.         [Result] [int] NOT NULL,
     
  21.         [Detail] [text] COLLATE Chinese_PRC_CI_AS NULL
     
  22. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
     

  23.  
  24. GO
     
  25. /****** 对象:  Table [dbo].[MailTemplet]    脚本日期: 03/24/2008 02:57:56 ******/
     
  26. SET ANSI_NULLS ON
     
  27. GO
     
  28. SET QUOTED_IDENTIFIER ON
     
  29. GO
     
  30. CREATE TABLE [dbo].[MailTemplet](
     
  31.         [MailTempletID] [int] IDENTITY(1,1) NOT NULL,
     
  32.         [MailTempletName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  33.         [MailTo] [text] COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_MailTemplet_MailTo]  DEFAULT (''),
     
  34.         [MailFrom] [text] COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_MailTemplet_MailFrom]  DEFAULT (''),
     
  35.         [MailCC] [text] COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_MailTemplet_MailCC]  DEFAULT (''),
     
  36.         [MailSubject] [text] COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  37.         [MailBody] [text] COLLATE Chinese_PRC_CI_AS NOT NULL
     
  38. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
     

  39.  
  40. GO
     
  41. /****** 对象:  Table [dbo].[ProxyList]    脚本日期: 03/24/2008 02:57:56 ******/
     
  42. SET ANSI_NULLS ON
     
  43. GO
     
  44. SET QUOTED_IDENTIFIER ON
     
  45. GO
     
  46. CREATE TABLE [dbo].[ProxyList](
     
  47.         [ID] [int] IDENTITY(1,1) NOT NULL,
     
  48.         [PersonDisplayName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  49.         [ProxyDisplayName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  50.         [UseProxyFlag] [int] NOT NULL CONSTRAINT [DF_ProxyList_UserProxyFlag]  DEFAULT ((0))
     
  51. ) ON [PRIMARY]
     

  52.  
  53. GO
     
  54. /****** 对象:  Table [dbo].[WorkflowHistoryLog]    脚本日期: 03/24/2008 02:57:56 ******/
     
  55. SET ANSI_NULLS ON
     
  56. GO
     
  57. SET QUOTED_IDENTIFIER ON
     
  58. GO
     
  59. SET ANSI_PADDING ON
     
  60. GO
     
  61. CREATE TABLE [dbo].[WorkflowHistoryLog](
     
  62.         [ID] [int] IDENTITY(1,1) NOT NULL,
     
  63.         [ListID] [uniqueidentifier] NOT NULL,
     
  64.         [WorkflowID] [uniqueidentifier] NOT NULL,
     
  65.         [ItemID] [int] NOT NULL,
     
  66.         [TaskID] [int] NOT NULL,
     
  67.         [CurrentLevel] [int] NOT NULL CONSTRAINT [DF_WorkflowHistoryLog_CurrentLevel]  DEFAULT ((0)),
     
  68.         [ActionXml] [char](20) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_WorkflowHistoryLog_ActionXml]  DEFAULT (''),
     
  69.         [TaskName] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
     
  70.         [Creator] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  71.         [CreatorDisplayName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
     
  72.         [AssignedTo] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  73.         [AssingedToDisplayName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
     
  74.         [StartDate] [datetime] NOT NULL,
     
  75.         [EndDate] [datetime] NULL,
     
  76.         [DueTime] [datetime] NULL,
     
  77.         [Status] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
     
  78.         [PercentComplete] [int] NOT NULL CONSTRAINT [DF_TaskLog_PercentComplete]  DEFAULT ((0)),
     
  79.         [Result] [int] NOT NULL,
     
  80.         [Priority] [int] NOT NULL CONSTRAINT [DF_TaskLog_Priority]  DEFAULT ((2)),
     
  81.         [Detail] [text] COLLATE Chinese_PRC_CI_AS NULL,
     
  82.         [ResultOut] [text] COLLATE Chinese_PRC_CI_AS NULL,
     
  83.         [CommitText] [text] COLLATE Chinese_PRC_CI_AS NULL
     
  84. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
     

  85.  
  86. GO
     
  87. SET ANSI_PADDING OFF
     
  88. GO
     
  89. /****** 对象:  Table [dbo].[WorkFlowTemplets]    脚本日期: 03/24/2008 02:57:56 ******/
     
  90. SET ANSI_NULLS ON
     
  91. GO
     
  92. SET QUOTED_IDENTIFIER ON
     
  93. GO
     
  94. CREATE TABLE [dbo].[WorkFlowTemplets](
     
  95.         [WorkflowTempletID] [int] IDENTITY(1,1) NOT NULL,
     
  96.         [WorkflowTempletName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
     
  97.         [WorkflowTempletXML] [text] COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_WorkFlowConfigure_WorkflowConfigXML]  DEFAULT (''),
     
  98.         [CreateBy] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
     
  99.         [Shared] [int] NULL CONSTRAINT [DF_WorkFlowTemplets_Shared]  DEFAULT ((0))
     
  100. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
复制代码

在SQL 2005中创建名为MwmsWorkFlow的数据库,然后把COPY的SQL语句在查询中执行,生成相关的表.

  approvalog(审批日志
  MAILTEMPLET(邮件模板)
  ProxyList(代理人日志)
  WorkFlowHistorylog(工作流日志)
  WorkFlowTemplets(工作流模板)

三  开始做MWMS的管理网站.
  1 先把源码中的CODE\LAYOUTS中的,MWMSFORMSERVER.ASPX,WRKTASKIP.ASPX两个文件COPY到您的网站集中的\LAYOUTS中去吧
  2 在你的网站集中用SHAREPOINT DESGIGNER 2007创建一个网站名为MWMS.
  3 打开CODES\MWMS,打开MWMS.SLN方案
    3.1 在VS 2008命令中用 SN -K 生成一个mwms.snk
    3.2 并且放入到此方案下签入
    这里是为了生成PublicKeyToken
    3.3 打开AREDIT.ASPX.CS 找到Server.MapPath(""),改成Server.MapPath("/")
    这里我卡了很久,原因是后面的extract.exe不知道放在哪,本来Server.MapPath("")是放在当前网的当前目录下,可我把这个文件COPY到到处都是,可执行
  AREDIT.ASPX就是出错,没办法改到根目录下吧.
    3.4 重新BUILD方案,生成MWMS.DLL
  4 在应用程序目录下更改(如我的是(c:\Inetpub\wwwroot\wss\VirtualDirectories\80):WEB.CONFIG
    4.1加入<SafeControl Assembly="MWMS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=46334fc4408228b2" Namespace="MWMS" TypeName="*" Safe="True" />
    PUBLICKEYTOKEN改为在第3步你所生成的
    4.2 找到<PageParserPaths>,在中间加入
         <PageParserPath VirtualPath="/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="true" />
   
    4.3 COPY MWMS.DLL到你的网站BIN目录下吧.
  5 修改BACONFIG.XML
    这里我又卡了,原因这个文件是跟MWMS.WORKFLOW一起安装的,可这个文件在在执行时是生成到WINDOWS\TEMP目录下
    如果你不能连接到数据库,就把这个文件修改后COPY到服务器WINDOWS\TEMP目录下
    <MWMS>
        <DBConnectionString>Data Source=数据库服务器名;Initial Catalog=MWMSWorkflow;Integrated Security=SSPI;</DBConnectionString>
        <SharepointDBConnLib>你网站MWMS</SharepointDBConnLib>
        <SiteUrl>你的网站集</SiteUrl>
    </MWMS>
  6 建立MWMS管理
   6.1 SHAREPOINT DESGIGNER 2007打开您的MWMS
    把下面的文件全部放到MWMS网站下(这些ASPX是管理MWMS的,上传前,请把这些文件中的AutoEventWireup="true"
    ValidateRequest="false" 全部删除)
ANREdit.aspx
AREdit.aspx
BackEdit.aspx
BackEdit.aspx
BRFEdit.aspx
BRTEdit.aspx
ConfigWorkflow.aspx
MTEdit.aspx
MTManagement.aspx
openUrnSel.aspx
ShowMonitor.aspx
WFDesigner.aspx
WFManagement.aspx
WFMonitor.aspx
  6.2 组织这些管理MWMS文件,如何做?我暂时只是做个简单链结,能执行就OK了.
  6.3把EXTRACT.EXT COPY到你的根目录下吧,这是个把INFOPATH的XSN解成XML的文件,没有这个,就无法执行 AREDIT.ASPX的流程条件.
  6.4 把JS,IMAGES下的文件全部上传到你的MWMS网站.有8个JS文件,别搞少了.
   7.建立一个INFOPATH表单库和外部数据库链接库
    7.1首先你得在MWMS网站上建立一个INFOPATH表单库
    7.2在MWMS网站上建立一个外部数据库链接库
     这个是为了以后部署MWMS.WORKFLOW,启动流程链接到MWMSWORKFLOW数据库读流程数据

  8 开始建立流程模板
  8.1.在MWMS上执行MTManagement.aspx,新邮件模板

  8.2 在MWMS上执行WFManagement.aspx,新建流程模板


    到这里基本上所有管理MWMS的基本上就这样了.如果你不能建立流程模板,根据错误找相关原因吧.


四 流程MWMS.WORKFLOW的部署
  1修改STARTWF1.XSN
   1.1找到源码下的codes\ProgramSolution\MWMS.Workflow的startwf1.xsn用INFOPATH打开设计它
   1.2 按工具下的数据链接 ,删除原的有WORKFLOWTEMPETS
   1.3 重新添加一个叫WORKFLOWTEMPETS的数据连接:
     1.3.1新建 连接---仅接收数据---数据库(SQL)--选择数据库--新建一个SQL连接的ODC---服务器名(MWmsworkflow数据库名)--选择MWmsworkflow数据库和表
  WORKflowtempets---完成--选择数据源结构--(只要这两个WORKflowtempetid,WORKflowtempetnMAE)
     1.3.2 选中你刚建立的连接,按转换--在转换输入:URL(去7.2步中COPY你的数据库URL),成功转换后
     去MWMS网站中看看有没有这个链接(然后批准它)
     1.3.3 在工作流模板中按下接列表WFTEMPLATE属性,在列表框项,选"从外部数据源查找值"---项/dfs:myFields/dfs:dataFields/d:WorkFlowTemplets
     值:@WorkflowTempletID
     显示名:@WorkflowTempletName

     这时你按预览就可以看到你建立的流程模板了.

   1.4 在文件中另存源文件存到C:\SOURCE
       1.4.1 开始运行CMD,在命令提示符下 XSD MYSCHEMA.XSD /C 生成文件C:\SOURCE\MYSCHEMA.CS
       1.4.2 MYSCHEMA.CS 改名为startWF1.cs COPY到你codes\ProgramSolution\MWMS.Workflow 把原来的覆盖掉
   2 重新BUILD MWMS.WORKFLOW
   3 修改你INSTALL.BAT
    找到 -url http://server:9000,修改成你的网站URL吧
   4 把你的BACONFIG.XMLCOPY 到codes\ProgramSolution\MWMS.Workflow
   5 可以安装MWMS.WORKFLOW了,按INSTALL ,..看有没有出错,没出错就OK了.

接下来的事就是...测试了这个MWMS.WORKFLOW了....完

你可能感兴趣的:(工作流,微软,方案,生产环境,MWMS)