SharePoint State Machine Workflow +ASP.NET ASPX Form step by step(1)-创建Workflow Content Type

     在写这一系列文章的时候,先要谢一个人,那就是园子里的笑煞天,做Workflow有一段时间,先前也看了一些workflow的资料,可是SharePint Workflow的资料还是很少。看了这些资料,可还是很晕头晕脑的,真正让我对workflow有个比较清楚的认识的,还是笑煞天的那篇很详细的Sequential workflow的文章。

     无论是书上,还是网上,本身SharePoint Workflow就很少。除去使用SPD,绝大多数的是VS+Infopath,而且是Sequential类型的。State Machine+ASPX Form的很少很少。再经过一段时间的学习,现在想将自己学习到的一些经验分享出来。可能会分几篇。希望大家多多指教。

     在这个workflow中,我们假定一个很简单的场景,就是sending mail。但是这个workflow有两个不同的Task,一个Task是为这个Mail指定相应的MailBody,From,To。一个Task给出相应的一些comment。在有两个Task的情况下,我们需要创建两个不同的Content Type。

     1.在VS中建一个Class Library的Project,将其中的C#文件删除,建一个文件夹,在里面建三个XML文件,为了简单,所以这里的Cntent Type都比较简单。这里有个文件是大家很熟悉的Feature.xml,我们将会用一个Feature来安装我们的Content Type。另外的两个文件就是用来定义两个不同的Content Type。

                                                                                                         

     2.MailBody Content Type

     首先最先要注意的是 ContentType ID。所有的workflow Cotent Type ID都是以0x01080开头,这里面牵涉到Content Type的继承问题,具体请看http://msdn.microsoft.com/en-us/library/ms452896.aspx。你在取名的时候,可以先是以 0x01080开头,然后跟两个00(不要问我为什么,我也很疑惑),再在后面跟一个GUID的字符串。至于ContentType中引用的FieldRfs,你只需要指定ID和Name,这个Name是内部使用的,你要尽可能的防止与原有的字段发生冲突,我们在List中看到的只是Display Name。至于对字段的定义,这里就是直接和Content Type写在一起,你也可以分开写在另外的一个文件里面。对Field的定义,参考http://msdn.microsoft.com/en-us/library/ms437580.aspx。在后面我们会自定义EditTask Form,但是这里还没有讲到,所以相应的一些字段就空着,但是并不影响我们安装使用以下的两个Content Type

Code

 

     3.MailComment ContentType

          

Code

 

     3.Feature.xml 大家对这个文件已经比较熟悉了,这里就不多做解释了。我前面有几篇也有涉及到Feature,大家要是有兴趣的话,可以去看看。

     

Code

 

     4.下面是安装好后的一些图片效果。

     

     可以在Site Content Types里面看到我们新建的两个Content Type

     可以在Site Columns里面看到我们新建的四个Content Type

     

posted @ 2008-12-16 13:56  jdxyw  阅读(1146)  评论(4编辑  收藏  举报