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

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

[复制链接]

尚未签到

发表于 2015-9-28 13:54:45 | 显示全部楼层 |阅读模式
  创建一个Instantiation表单,其实和创建一个Association表单是十分相识的,我也不像在这里把代码一一的贴出来,最后我会把所有的工程一次性的贴出来的.
  在前面创建Association Form的时候,为了简化过程,我没有讲如何将Association Data传到workflow中,并在Instantiation Form中使用.
  首先,为了简化,Association表单和Instantiation表单是一样的,两个表单都是一个PeoplePicker和一个TextBox,所以用于表示两个表单数据的类是相同的,只不过为了让代码看起来更清楚点,我定义了两个类,完全一样,只不过名字是不同的.
  

DSC0000.gif DSC0001.gif Code
1     [Serializable]
2     public class AssociationData
3     {
4         private Contacts reviewers = default(Contacts);
5         public Contacts Reviewers
6         {
7             get
8             {
9                 return this.reviewers;
10             }
11             set
12             {
13                 this.reviewers = value;
14             }
15         }
16
17         private string description = default(string);
18         public string Description
19         {
20             get
21             {
22                 return this.description;
23             }
24             set
25             {
26                 this.description = value;
27             }
28         }
29
30         public void AddContact(string contact)
31         {
32             if (this.reviewers == null)
33             {
34                 this.reviewers = new Contacts();
35             }
36             this.reviewers.AddContact(contact);
37         }
38         public string[] GetReviewers()
39         {
40             return this.reviewers.ContactList.ToArray();
41         }
42     }
43
44     [Serializable()]
45     public class Contacts
46     {
47         private List<string> contacts;
48
49         public List<string> ContactList
50         {
51             get { return contacts; }
52             set { contacts = value; }
53         }
54         public void AddContact(string contact)
55         {
56             if (this.contacts == null)
57             {
58                 this.contacts = new List<string>();
59             }
60             this.contacts.Add(contact);
61         }
62
63     }  
  因为PeoplePick是可以选择多个用户的,所以创建了一个Contact类,用来保存用户名.记得定义这些类需要加上[Serializable()],因为这些类会被序列化并传递给workflow实例.为此,我们也需要写两个辅助的函数,用于将我们输入的数据序列化成字符串,或是将序列化的数据反序列化成相应的对象.下面代码中的DeserializeAssoicationData函数,是将从Association表单中传递下来的序列化后的数据重新反序列化成相应的实例对象,而这些实例对象中的数据可以在Instantiation表单中被使用.serializeInstantiationFormDataToXML函数是将Instantiation表单中的数据序列化为XML字符串,传递给workflow实例,使得这些数据能够被后续的步骤中使用.
  

Code
public string serializeInstantiationFormDataToXML()
        {
            InstantiationData mydata = new InstantiationData();
            string serializedDataToReturn;  

            foreach (PickerEntity pe in Reviewers.ResolvedEntities)
            {
                mydata.AddContact(pe.Key);
            }

            mydata.Description = Description.Text;
.
            using (MemoryStream stream = new MemoryStream())
            {
                XmlSerializer serializer = new XmlSerializer(typeof(InstantiationData));
                serializer.Serialize(stream, mydata);
                stream.Position = 0;
                byte[] bytes = new byte[stream.Length];
                stream.Read(bytes, 0, bytes.Length);

                serializedDataToReturn = Encoding.UTF8.GetString(bytes);   
            }

               return serializedDataToReturn;
        }

private AssociationData DeserializeAssoicationData(string dataPassedIn)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(AssociationData));
            XmlTextReader reader = new XmlTextReader(new System.IO.StringReader(dataPassedIn));

            AssociationData deserializedAssociationFormData = (AssociationData)serializer.Deserialize(reader);

            return deserializedAssociationFormData;
        }  
  至于Instantiation表单的ASPX页面,对于我来说,是很Assocaition页面是完全一样的,除了最开始的Inherit属性不同之外,其它的完全一样.而其相应的后台代码,和Association的后台代码是十分相似的,大家到时候看看代码就明白了.

运维网声明 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-120068-1-1.html 上篇帖子: SharePoint 2007 解决方案的设计规划和布署 下篇帖子: SharePoint 编程指南(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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