针对一个自定义开发的vs工作流主要有三个基本部分:模板,发布,和类型。

一、模板:

image

当新建一个sharepoint工作流之后单开工作流文件就会看到如图的模板,这个模版主要用于定位活动的位置。在每个活动中右键生成处理程序,就为 该活动创建后台处理方法。

在工具箱部分主要有两大部分:wf的activities和sharepoint的activities,其中wf的activities和WF技术中的用法基本一致,这里主要学习Sharepoint 的activities:

其中:

copyItemActivity:主要用于list或者document的item之间的拷贝,这个活动主要用于存档或者移除文档。

OnWorkflowModified:当工作流被修改的时候会触发该活动,当一个工作流已经开始之后,用户可以修改这个工作流的行为以适应。

SendEmail:这个活动是使用管理中心指定的exchange 服务器来发送邮件给用户。

SetState:在这个活动中:你可以设置自己的工作流状态,当工作流开始的时候,创建新的列或者item,代替moss本身的In-Press 或者Completed,自己定义。

二、部署:

一个Sharepoint的工作流是依赖于一个解决方案包,而一个解决方案包在moss网站中的运行则是依赖与一个激活了的fuature。因此:当在vs2010中创建一个wf时会发现有 一个Features和一个Package文件夹同时创建和配置。

image

因此,当部署的时候,这个package将被部署,这个Feature将被安装

针对开发人员我么需要知道这个package和Feature具体由什么组成和具体怎样工作:

其实当用vs2010开发工作流的时候package并不是一个必要的,在技术上。它只是用来代替手动复制和部署文件。所有的工作流需要的仅仅是一个DLL(动态链接库)和一个用于激活该DLL的Feature。Package的作用是帮助我们部署需要的文件和配置文件到指定的位置。如果我们打开打包资源管理器的时候会发现:如图

image

在这个包中有一个Feature,所以package的作用本身就是部署一个工作流并且激活该工作流和配置相关文件(Layoust文件映射)。

双击Package.package可以看到(点高级)

image

在这里可以添加新的程序集到Package中来完成发布。或者直接点击“清单”在xml中进行编辑。

双击Feature1可以打开:

image

如果将Workflow2移除则部署之后激活的feature中 只能由Workflow1能使用,Workflow2无法使用。

三、类型:

当我们在创建工作流的时候vs模版中有两种工作流:顺序和状态工作流

区别:

顺序工作流总是从第一步执行因此往下执行,按照一定的顺序,他不可逆转,而状态工作流就没有这方面的约束,简单的例子:一个开发人员的bug工作流:当开发人员开始开发的时候出现bug:bug工作流启动,bug状态为Pending state,开发人员经过修改之后,bug工作流判断,如果解决,bug工作流将状态改为解决,如果未通过,bug工作流就又返回到原来的位置,pending statu。

创建工作流的模版是不可逆的,也就是说一旦创建了工作流的类型,不能修改,所以在创建工作流之前要想好。

posted @ 2011-06-30 18:47 醉@春风 阅读(204) 评论(0) 编辑

在搭建好的TFS server中,我们新建了团队项目集之后,需要在团队资源管理器中(VS10版本)新建团队项目,在向导中有:选择过程模板

clip_image001

这两个过程模板可以用于定义计划和跟踪项目的工作项,报表和面板集。

两者的不同在于:

如果团队使用SCRUM或者其他敏捷过程,选择MSF for Agile

如果团队需要严格的审计记录并对变更管理使用正式过程,选择MSF for CMMI。

两者的主要差异:

工作流状态:

· 当团队通过将工作项的状态从活动更改为已解决直至已关闭来记录多数工作的进度时,请选择 MSF for Agile。 团队会创建一个处于活动状态的工作项,并在完成工作后解决该工作项。

· 当团队通过将工作项的状态从已建议更改为活动、已解决直至已关闭来记录多数工作的进度时,请选择 MSF for CMMI。 团队会创建一个处于已建议状态的工作项,并且只有在已接受该工作项后,才会将其转为活动状态。

MSF for Agile的活动状态有:活动,已建议,已解决。

MSF for CMMI的活动状态有:已建议,活动,已解决,已关闭。

产品计划:

· 如果围绕用户情景和情景点来计划产品,请选择 MSF for Agile。

· 如果基于要求和更改请求来计划产品,请选择 MSF for CMMI。

迭代挤压工作管理:

· MSF for Agile 提供了“迭代积压工作”工作簿,该工作簿可用于计划迭代。

Bug积压工作管理:

· MSF for CMMI 提供了用于跟踪症状和建议的修复方案的附加字段。

项目管理:

· 使用 MSF for Agile,团队可以通过创建问题工作项来跟踪团队项目的已知或潜在的问题、障碍或风险。

· 使用 MSF for CMMI,团队可以通过创建问题或风险工作项来跟踪团队项目的已知或潜在的问题、障碍或风险。 此外,还可以使用评审工作项正式跟踪代码评审。

测试管理:

· 为测试用例跟踪的信息对于这两种 MSF 过程模板基本相同。

· 测试管理报表对于这两种 MSF 过程模板基本相同。

审核记录:

· 当不要求团队支持严格审核时,请选择 MSF for Agile。

· 当要求团队维护严格的审核记录或致力于能力成熟度模型集成 (CMMI) 认证时,请选择 MSF for CMMI。

posted @ 2011-06-08 14:41 醉@春风 阅读(143) 评论(0) 编辑

通过IIS作为宿主服务:
将Client,Contracts,Services三个项目引入到新的项目中去(不再需要hosting来宿主服务):
1、 为WCF服务创建.SVC文件:
.svc文件的作用:类似于ASP.NET web 服务中的.asmx文件,他是客户端通过访问这些文件来访问web服务的调用。WCF就是通过将服务的一个.svc文件部署到IIS站点中,供客户端来调用和使用。
在Services项目中添加calculatorService.svc,并且引入服务的位置:<%@ ServiceHost Service="Services.Calculate"%>
2、 为WCF 服务添加配置文件:
在寄宿进程中我们将配置文件放在hosting项目内,这里我们把IIS的配置文件放在Services项目内:web.config(类似于寄宿进程的配置文件)。
唯一与进程文件配置不同的是:这里是承载于IIS,他的服务地址就是IIS中.svc的服务地址。所以它的终结点就不用指定address,也就是说它的元数据呈现地址就是http://localhost/CalculatorService/CalculatorService.svc 无需再指定(可以指定一个名字)。

特别需要指定的是:要修改services的生成目录为bin,默认的为 bin\Debug否则的话了,IIS就无法找到服务,要报错


 
重新生成,输入http://localhost/CalculatorService/CalculatorService.svc就可以看到服务元数据。
3、 在client项目中重新生成service References:输入的地址为:http://lixinyi/CalculatorService/CalculatorService.svc?wsdl,然后再在Main函数调用,同样可以实现类似于进程寄宿的功能。

 

 源代码例子:http://files.cnblogs.com/lxy131/WCF%e5%ad%a6%e4%b9%a0Demol2_calculatorService2.rar

 

posted @ 2010-11-27 21:42 醉@春风 阅读(132) 评论(0) 编辑

什么是WCF:

可以简单的看成是.NET平台上的新一代的WEB Service。是一种消息通信技术。它是对一些技术的整合如(Enterprise Service,.NET Remoting,XML web service,MSMQ)同时呢,又是顺应了SOA(面向服务编程)的浪潮。

WCF本质上就实现了一个跨进程,跨机器,以至于跨网络的服务调用。

作为一种面向服务的编程:一般我们需要首先来实现服务。然后启动服务,再在客户端来实现服务的调用。

 

Demol1_CalculatorService:实现计算的服务例子:

一、控制台应用作为服务的宿主(跨进程)

1、  新建空白解决方案:CalculatorService

2、  添加两个liberrary和两个console

 

其中client:控制台程序是实现作为客户端最终调用服务的进程。Contracts:用来定义服务的契约。Services:提供wcf服务的实现(是用来实现Contracts中的契约的)。

Hosting:服务的宿主控制台程序。

3、  创建契约(Contracts):一般通过接口的形式定义契约,首先引入system.ServiceModel程序集。

然后创建接口,创建完接口和对应的方法之后,我们要将这个接口定义为服务的契约,就需要为接口注明特性(这里采用的自定义特性,我们可以为特性注明名称和命名空间)

4、  实现服务的契约(Services):

首先引入contracts程序集

然后实现契约的方法。

这里有个概念:服务类型:凡是实现了服务契约接口的类都是服务类型。同样那些虽然没有实现服务契约接口但是它被添加了ServiceContract特性的类也叫做服务类型。在例子当中Calculate类就是一个服务类型。

5、  将服务寄宿到进程(自我寄宿)

这里有个概念:服务模型:WCF的服务模型类似于WSDL的服务(服务,绑定,portType),在WCF 的服务模型中就对应包括地址(address)绑定(binging)和契约(contract)他们描述的是服务所在的位置,通过什么协议实现服务通信,以及服务的具体实现内容。同时这三者就构成了一个新的概念:终结点(endpoint)一个服务可以有多个终结点,从而实现将服务内容暴露给潜在的服务消费者。

 

有两种方法实现服务模型:

代码实现:

(1)       同样引入System.ServiceModel和Contracts和Services三个程序集。

(2)       声明服务对象,并且为该对象添加对应的终结点

(3)       打开该服务。这时服务就可以使用了。

配置文件实现:

(1)       同样引入System.ServiceModel和Contracts和Services三个程序集。

    (2)在配置文件中配置services:service的配置包括behaviorConfiguration

和name name的值是指服务所在的位置,同时,service还包括终结点的配置。

    (3)配置behavior:包括配置元数据呈现的url 

 

6、  客户端调用服务

当以上实现了服务寄宿到进程之后呢,服务寄宿就将服务通过元数据发布出来,相应的客户端就是通过获取这些元数据进行服务的消费。(在这个过程中,服务开启,并开始监听客户端)

(1)       生成服务代理相关的代码和配置:

这里同样有两种方法生成:

方法一:找到hosting的bin目录下的hosting.exe,然后运行,在在项目中右击client然后add Service Reference,在弹出的框中键入元数据呈现地址:

http://127.0.0.1:9999/calculatorservice/metadata,然后go

 

命名一个client下的命名空间:然后ok,就会自动生成配置文件和代码。

然后只需要new出代码中自动生成的类,就可以调用服务中的方法了。

方法二:

同样在hosting.exe运行的情况下,在vs的dos窗口内,键入一个命令转到一个固定的位置(方便查找)然后键入命令 svcutil http://127.0.0.1:9999/calculatorservice/metadata/ /out:CalculateService.cs/config:App.config

然后到当前位置查看发现生成了两个文件,在把这两个文件拷如刀项目中去,同样可以使用。

 

这两种方法本质上都是相同的,通过调用svcutil.exe工具将服务中的元数据转化为客户端能够调用的类和方法,(一种vs集成的(10,08),另一种没有集成(05))。

             

源代码例子:http://files.cnblogs.com/lxy131/WCF%e5%ad%a6%e4%b9%a0demol1_calculatorService.rar

                              

posted @ 2010-11-25 17:05 醉@春风 阅读(285) 评论(0) 编辑

1.限定字符串
用 @ 符号加在字符串前面表示其中的转义字符“不”被处理。
如果我们写一个文件的路径,例如"D:\文本文件"路径下的text.txt文件,不加@符号的话写法如下:

string fileName = "D:\\文本文件\\text.txt";
如果使用@符号就会比较简单:

string fileName = @"D:\文本文件\text.txt";
2.让字符串跨行
有时候一个字符串写在一行中会很长(比如SQL语句),不使用@符号,一种写法是这样的:


string strSQL = "SELECT * FROM HumanResources.Employee AS e"
  + " INNER JOIN Person.Contact AS c"
  + " ON e.ContactID = c.ContactID"
  + " ORDER BY c.LastName";
加上@符号后就可以直接换行了:

string strSQL = @"SELECT * FROM HumanResources.Employee AS e
  INNER JOIN Person.Contact AS c
  ON e.ContactID = c.ContactID
  ORDER BY c.LastName";
3.在标识符中的用法
C#是不允许关键字作为标识符(类名、变量名、方法名、表空间名等)使用的,但如果加上@之后就可以了,例如: 

namespace @namespace
{
  class @class
  {
  public static void @static(int @int)
  {
  if (@int > 0)
  {
  System.Console.WriteLine("Positive Integer");
  }
  else if (@int == 0)
  {
  System.Console.WriteLine("Zero");
  }
  else
  {
  System.Console.WriteLine("Negative Integer");
  }
  }
  }

posted @ 2010-11-25 16:59 醉@春风 阅读(32) 评论(0) 编辑

  

一、 Sql2005卸载后重新安装安装存在同名实例
引用:
  SQL server Database services 安装失败
   Analysis services 安装失败
Reporting   services 安装失败
工作站组件 联机丛书和开发工具 安装失败
不想重装系统
1.Stop 所有服务
 
2.用 Windows Install Clean Up 工具卸载SQL 2005组件
 
3.用SrvInstw.exe删除所有SQL服务
 
4.清除注册表
a. 将HKEY_CURRENT_USER---Software----Microsoft下的Microsoft SQL Server文件夹全部删除
b. 将HKEY_LOCAL_mACHINE---SOFTWARE---Microsoft下的Microsoft SQL Native Client ,Microsoft SQL Server, Microsoft SQL Server 2005 Redist全部删除。
  在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Session Manager中找到PendingFileRenameOperations项目,并删除
5.删除残留文件
   将C盘——Program File下的Microsoft SQL Server 文件夹删除。
6.重启电脑,重新安装
二、 安装SQL Sql2005 提示SQLSML4安装错误
 如果安装SQL Server2005 提示SQLXML4安装出错,此时可进入添加/删除程序将已安装过的SQLXML4删除,再重新安装SQL Server 2005,问题解决!(此问题是因为,SQL Server 2005所带的SQLXML4版本问题引起的)!
另要用Winodws Installer Clean Up 来清除此项:
 
然后再重新安装,问题解决!
三、 安装SQL Sql2005 性能监视器计数要求错误
 安装SQL Server 2005性能监视器计数器要求 (错误)
把下面的注册表改下就行了!
手动设置计数器注册表项的增量 :
     1.在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击“开始”、“运行”,然后在“打开”中键入 regedit.exe,再单击“确定”。在 Windows 2000 中,使用 regedt32.exe 启动注册表编辑器。
     2.定位到以下注册表项:
     [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib]
     "Last Counter"=dword:00000ed4 (5276)
     "LastHelp"=dword:00000ed5 (5277)
     3.上一步的“Last Counter”值 (5276) 必须与以下注册表项中“Perflib\009”的“Counter”项的最大值匹配,并且上一步的“Last Help”值 (5277) 必须与以下注册表项中“Perflib\009”的“Help”项的最大值匹配。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009]
注意 009中存储的是英文版本的计数器(如果你安装的是英文版Microsoft SQL Server2005则修改Perflib\009),004中存储的是中文版本的计数器(如果你安装的是中文版Microsoft SQL Server2005则修改Perflib\004)。“Last Counter”和“Last Help”值是由 Windows 动态分配的;这两个值会因计算机的不同而不同。

 

工具下载:http://files.cnblogs.com/lxy131/SQLServer%e5%8d%b8%e8%bd%bd%e5%b7%a5%e5%85%b7.rar

posted @ 2010-11-24 13:03 醉@春风 阅读(647) 评论(0) 编辑
摘要: 一、Servierlight学习之应用程序项目文件:AppManifest.xml:在包Properties内,是一个不需要编辑的项目清单文件。2、AssemblyInfo.cs:在包Properties内,此文件包含嵌入到所生成的程序集中的名称和版本元数据。3 、xap文件:是包含在BIN包的Debug文件夹内。是程序运行生成的文件。是silverlitht应用程序包(一个压缩的zip文件)。它...阅读全文
posted @ 2010-11-07 20:29 醉@春风 阅读(130) 评论(0) 编辑
摘要: Oracle客户端的配置:1、 启动图形工具:2、 选择”本地Net服务名配置”3、 选择”添加”,可以根据需要选择其它功能4、 在服务名栏中输入数据库的服务名,一般情况下服务名等于数据库名,该栏不能随便填写,一定要与数据库的服务名一致,否则连接数据库时会引起错误5、 协议一般选择TCP,视具体情况决定6、 输入listener所在机器的计算机名或I...阅读全文
posted @ 2010-10-25 14:31 醉@春风 阅读(275) 评论(0) 编辑
摘要: ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不允许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.  因此,在创建对象之前,首先要分配存储空间.  分配存储,就要创建表空间:  创建表空间示例如下:  CREATE TABLESPACE "SAMPLE"  LOGGING...阅读全文
posted @ 2010-10-25 09:59 醉@春风 阅读(434) 评论(0) 编辑
摘要: 在oracle数据库中临时表有两种类型(不同于SQL Server中的本地和全局临时表):一、会话级临时表:与当前会话有关系,当当前会话还没有结束的时候临时表中的数据一直存在,一旦结束,临时表中的数据将被清空。(注意:这里不同于SQL server数据库中的临时表会话结束删除临时表)但是临时表依然存在于数据库的数据字典中。创建会话级临时表的语法:create global temporary ta...阅读全文
posted @ 2010-10-21 17:19 醉@春风 阅读(174) 评论(0) 编辑