使用silverlight构建一个工作流设计器(三)(附最新源代码下载及在线演示)

使用silverlight构建一个工作流设计器(三)(附最新源代码下载及在线演示),第1张

概述求助:未找到在silverlight中动态生成一个文件下载,和从用户本地的系统中提取文件的方法,还请熟悉这方面的朋友指点一下怎么做? 最新源代码下载:点击下载 最新版本在线演示:http://219.153.66.61/wf 新功能调查:系统到这里已经具备一个设计器的雏形了,当然还有很多需要完善的功能,如果您在这方面有经验,请提出您的宝贵意见,也可以留下您想要实现的功能,在后续版本中,我们将考虑您

求助:未找到在silverlight中动态生成一个文件下载,和从用户本地的系统中提取文件的方法,还请熟悉这方面的朋友指点一下怎么做?

最新源代码下载:点击下载

最新版本在线演示:http://219.153.66.61/wf

新功能调查:系统到这里已经具备一个设计器的雏形了,当然还有很多需要完善的功能,如果您在这方面有经验,请提出您的宝贵意见,也可以留下您想要实现的功能,在后续版本中,我们将考虑您的意见,非常感谢:)

 

本文继续前文的内容,主要讲述与导入xml,导出xmlxml存储有关的一些内容。包含以下部分:

l         设计一个流程图的xml描述文件

l         将流程图导出为xml

l         根据xml文件呈现流程图

 

在完成以上内容后,进一步深入思考,既然可以将流程的当前状态保存为xml,那么在每次流程改变的时候将当前状态保存到内存中,在需要的时候再从内存中还原,就可以实现word里面的 撤销 前进 的功能了,所以功能就加多了两个。

l         撤销

l         前进

 

在进一步,如果将内存保存的xml对象集合按照一定的频率自动播放,是不是就是一个动画了,呵呵,我们可以用这个来做一个简单的动画片了。

 

四、xml存取   4.1 xml内容

就是将流程图保存为xml文件,以及根据xml文件还原流程图的功能。首先来看一下xml文件的格式。Xml文件用来描述流程的,在本文中,流程的布局信息主要有几个方面:

 

l         流程的属性信息。例如流程名称等

l         活动和规则的属性信息,例如活动名称等

l         活动和规则的位置信息

l         活动和规则的关联信息

 

我们设计出一个可以完全描述上面内容的xml文件即可,下面给出这个xml描述的一个实现。 

Code
<?xml version="1.0" enCoding="utf-8" standalone="yes" ?>

<WorkFlow ID="" name="" Description=""> 

    
<Activitys>

      
<Activity ActivityID="" Activityname="" positionX="" positionY="" ZIndex=""> 

      
</Activity>

    
</Activitys>

    
<Rules>

      
<Rule RuleID="" Rulename="" BeginActivityID="" EndActivityID="" BeginPointX="" BeginPointY="" EndPointX="" EndPointY="" ZIndex=""> 

      
</Rule> 

    
</Rules> 

</WorkFlow>

 

上面的内容不用多讲了,大家看名字应该可以猜的出来。

 

我们还可以使用xsd.exe工具(.netframework sdk里面带有)生成对应的workflow.xsd文件,在根据.xsd文件生成Class,这个class就是 *** 作这个xml文件的,.net真是太方便了。(这里就先不这么做了,而直接使用liNQ To Xml来 *** 作上面的xml文件)

如果您不了解xml相关的一些技术,可以参考

http://www.w3schools.com/xml/default.asp或者http://www.w3school.com.cn/(中文版)

4.2 导入、导出

有几个生成xml的方法。一个是将流程对象序列化,使用对象序列化的方法。另一个是让对象自己生成xml片段,这里采用第二种方法。首先为了导入导出xml,容器、活动、规则、类需要增加两个方法。

l         ToXmlString()

l         LoadFromXmlString(string xmlNode)

 

第一个用于生成表达本对象的xml片段,第二个用户根据xml片段来生成相应的对象。使用这两个方法就可以将流程当前状态转化为xml存储了。具体实现大家看源代码即可。未找到在silverlight中动态生成一个文件下载,和从用户本地的系统中提取文件的方法,生成xml的文件存放在一个TextBox中,拷贝就可以。

4.3 撤销及前进

有了上面的生成xml及载入xml的基础,就可以设计出一个支持撤销和前进功能的应用了。有c/s编程经验的朋友对此一定不陌生,搞b/s开发的可能不太熟悉,这里简单实现,并说明一下思路。

 

在内存中定一个两个堆栈(Stack),一个保存用于撤销的xml集合,一个保存用于前进的xml集合。当出现下面的情况是,将流程当前状态的xml描述进入出栈和入栈的动作。

l         用户进行流程修改的时候,将修改后的xml描述压入(Push) 撤销堆栈,并清空 前进堆栈。

l         当用户点击 撤销 按钮时,从撤销堆栈 d出(pop)一个xml,使用这个xml来还原流程图,同时将这个xml压入 前进堆栈。

l         当用户点击 前进 按钮时,从前进堆栈 d出(pop)一个xml,使用这个xml来还原流程图,同时将这个xml压入 撤销堆栈。

 

也就是说两个堆栈协同工作,就可以完成撤销、前进的功能了。

 

另外撤销前进功能的xml存储也可以有两种方式,一种是增量存储,也就是只存储改变的部分,另一种的完全存储,也就是存储当前整个流程图的xml。对于第一种比较麻烦,对于第二种方式,系统中的函数已经支持,所以采用第二种方式,就是比第一种方式存储的xml长度大了一点。

本章的内容就结束了,请留下您的宝贵意见!后文再续!

总结

以上是内存溢出为你收集整理的使用silverlight构建一个工作流设计器(三)(附最新源代码下载及在线演示)全部内容,希望文章能够帮你解决使用silverlight构建一个工作流设计器(三)(附最新源代码下载及在线演示)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1050812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存