设为首页 收藏本站
查看: 1058|回复: 0

[经验分享] SharePoint State Machine Workflow +ASP.NET ASPX Form step by step(1)-创建Workflow

[复制链接]

尚未签到

发表于 2015-9-27 08:11:14 | 显示全部楼层 |阅读模式
  在写这一系列文章的时候,先要谢一个人,那就是园子里的笑煞天,做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。
DSC0000.jpg
  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

DSC0001.gif DSC0002.gif Code
1 <?xml version="1.0" encoding="utf-8" ?>
2 <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
3   <ContentType  ID="0x01080100E1D3EF13617C4b63AB9252DEEF0A4CDB"
4       Name="MailBody"
5       Group="MyContent"
6       Version="0"
7       Hidden="FALSE" Description="This Content Type is a Mail body" >
8     <FieldRefs>
9       <FieldRef ID="{525E758B-B416-4960-8711-9DDB72339E83}" Name="_MailTo" ShowInEditForm="TRUE" ShowInListSettings="TRUE" ReadOnly="FALSE"/>
10       <FieldRef ID="{D62E226E-F804-45f1-95DA-4B79509A40E1}" Name="_MailBody" ShowInEditForm="TRUE" ShowInListSettings="TRUE" ReadOnly="FALSE"/>
11     </FieldRefs>
12   </ContentType>
13   <Field ID="{525E758B-B416-4960-8711-9DDB72339E83}" Name="_MailTo" Group="MyContent" DisplayName="Peope Mail To" Type="UserMulti" DisplaceOnUpgrade="True" Hidden="False" ReadOnly="False" BaseType="LookupMulti" Mult="TRUE">
14   
15   </Field>
16   <Field ID="{D62E226E-F804-45f1-95DA-4B79509A40E1}" Name="_MailBody" Group="MyContent" DisplayName="Mail Body" Type="Note" DisplaceOnUpgrade="True" Hidden="False" ReadOnly="False" />
17
18 </Elements>
19   
  3.MailComment ContentType
  

Code
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <ContentType  ID="0x01080100DBDB07313A2549d5ABC363C906A9F72D"
      Name="MailComment"
      Group="MyContent"
      Version="0"
      Hidden="FALSE" Description="This Content Type is a Mail comment" >
    <FieldRefs>
      <FieldRef ID="{EDC78DAD-A984-4a81-BFA1-1047D231C05A}" Name="_MailComment" ShowInEditForm="TRUE" ShowInListSettings="TRUE" ReadOnly="FALSE"/>
      <FieldRef ID="{8AAA2B01-2F49-4bb6-9A5C-87D992911CE9}" Name="_MailDate" ShowInEditForm="TRUE" ShowInListSettings="TRUE" ReadOnly="FALSE"/>
    </FieldRefs>
  </ContentType>
  <Field ID="{EDC78DAD-A984-4a81-BFA1-1047D231C05A}" Name="_MailComment" Group="MyContent" DisplayName="Mail Comment" Type="Note" DisplaceOnUpgrade="True" Hidden="False" ReadOnly="False">

  </Field>
  <Field ID="{8AAA2B01-2F49-4bb6-9A5C-87D992911CE9}" Name="_MailDate" Group="MyContent" DisplayName="Mail Date" Type="DateTime" DisplaceOnUpgrade="True" Hidden="False" ReadOnly="False" />

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

Code
<?xml version="1.0" encoding="utf-8" ?>
<!-- _lcid="1033" _version="12.0.3412" _dal="1" -->
<!-- _LocalBinding -->
<Feature  Id="{FDCCA231-0A1C-409d-BC3F-357C6E37673D}"
          Title="SendMailCT"
          Description="My Content Type"
          Version="12.0.0.0"
          Scope="Site"
          xmlns="http://schemas.microsoft.com/sharepoint/">
  <ElementManifests>
    <ElementManifest Location="MailBody.xml" />
    <ElementManifest Location="MailComment.xml" />
  </ElementManifests>
</Feature>  
  4.下面是安装好后的一些图片效果。
DSC0003.jpg
  可以在Site Content Types里面看到我们新建的两个Content Type
DSC0004.jpg
  可以在Site Columns里面看到我们新建的四个Content Type
DSC0005.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119269-1-1.html 上篇帖子: [SharePoint 2010 的那些事儿-升级篇]In-Place Update 就地升级 下篇帖子: sharepoint读取站点下列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表