我向微软申请了MWMS,可拿到CD时解压不了,连DEMO环境都部署不了,要微软换吧,先叫我退回CD再寄,晕了...
于是我从网上下了原码,心想我用源码来搞吧,不要你的DEMO了,想从网上找相关的部署--没有,只好自己开始了...................
一准备
先把网上下载源码,安装好VS2008,INFOPATH,SHAREPOINT DESGIGNER 2007当然还有MOSS 2007环境.
二安装MWMSWORKFLOW数据库
先把网上的源码解压,里面有个文件 <<微软工作流解决方案技术手册.docx>> 在最后有关数据库的SQL,COPY下来.
- USE [MWMSWorkflow]
- GO
- /****** 对象: Table [dbo].[ApprovalLog] 脚本日期: 03/24/2008 02:57:56 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE 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 [PRIMARY]
- GO
- /****** 对象: Table [dbo].[MailTemplet] 脚本日期: 03/24/2008 02:57:56 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE 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 [PRIMARY]
- GO
- /****** 对象: Table [dbo].[ProxyList] 脚本日期: 03/24/2008 02:57:56 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE 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 [PRIMARY]
- GO
- /****** 对象: Table [dbo].[WorkflowHistoryLog] 脚本日期: 03/24/2008 02:57:56 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- SET ANSI_PADDING ON
- GO
- CREATE 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,
- [AssignedTo] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
- [AssingedToDisplayName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
- [StartDate] [datetime] NOT NULL,
- [EndDate] [datetime] NULL,
- [DueTime] [datetime] NULL,
- [Status] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
- [PercentComplete] [int] NOT NULL CONSTRAINT [DF_TaskLog_PercentComplete] DEFAULT ((0)),
- [Result] [int] NOT NULL,
- [Priority] [int] NOT NULL CONSTRAINT [DF_TaskLog_Priority] DEFAULT ((2)),
- [Detail] [text] COLLATE Chinese_PRC_CI_AS NULL,
- [ResultOut] [text] COLLATE Chinese_PRC_CI_AS NULL,
- [CommitText] [text] COLLATE Chinese_PRC_CI_AS NULL
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
- GO
- SET ANSI_PADDING OFF
- GO
- /****** 对象: Table [dbo].[WorkFlowTemplets] 脚本日期: 03/24/2008 02:57:56 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [dbo].[WorkFlowTemplets](
- [WorkflowTempletID] [int] IDENTITY(1,1) NOT NULL,
- [WorkflowTempletName] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
- [WorkflowTempletXML] [text] COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_WorkFlowConfigure_WorkflowConfigXML] DEFAULT (''),
- [CreateBy] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
- [Shared] [int] NULL CONSTRAINT [DF_WorkFlowTemplets_Shared] DEFAULT ((0))
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
在SQL 2005中创建名为MwmsWorkFlow的数据库,然后把COPY的SQL语句在查询中执行,生成相关的表.
approvalog(审批日志
MAILTEMPLET(邮件模板)
ProxyList(代理人日志)
WorkFlowHistorylog(工作流日志)
WorkFlowTemplets(工作流模板)
三 开始做MWMS的管理网站.
1 先把源码中的CODELAYOUTS中的,MWMSFORMSERVER.ASPX,WRKTASKIP.ASPX两个文件COPY到您的网站集中的LAYOUTS中去吧
2 在你的网站集中用SHAREPOINT DESGIGNER 2007创建一个网站名为MWMS.
3 打开CODESMWMS,打开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:InetpubwwwrootwssVirtualDirectories80):WEB.CONFIG
4.1加入
PUBLICKEYTOKEN改为在第3步你所生成的
4.2 找到
4.3 COPY MWMS.DLL到你的网站BIN目录下吧.
5 修改BACONFIG.XML
这里我又卡了,原因这个文件是跟MWMS.WORKFLOW一起安装的,可这个文件在在执行时是生成到WINDOWSTEMP目录下
如果你不能连接到数据库,就把这个文件修改后COPY到服务器WINDOWSTEMP目录下
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找到源码下的codesProgramSolutionMWMS.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:SOURCEMYSCHEMA.CS
1.4.2 MYSCHEMA.CS 改名为startWF1.cs COPY到你codesProgramSolutionMWMS.Workflow 把原来的覆盖掉
2 重新BUILD MWMS.WORKFLOW
3 修改你INSTALL.BAT
找到 -url http://server:9000,修改成你的网站URL吧
4 把你的BACONFIG.XMLCOPY 到codesProgramSolutionMWMS.Workflow
5 可以安装MWMS.WORKFLOW了,按INSTALL ,..看有没有出错,没出错就OK了.
接下来的事就是...测试了这个MWMS.WORKFLOW了....完