随心所欲

做个幸福的人
posts - 147, comments - 1402, trackbacks - 28, articles - 0
  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理
上篇随笔介绍了WWF的基本概念,主要是那个层次,以及每个层次的功能和模块。
这次,就通过一些小例子来展示一下WWF的这些概念的意义,主要解释的是Host和WWF的运行模型。
然后,在详细解释Activity和工作流类型。

WWF可创建的项目类型有:
Console Application;
WindowsForm Application;
WebForm Application;
Windows Service等。关于WebService的使用,后边介绍。

我们先通过一个Console Application来看看WWF的内容。
创建方法:
1:打开vs2005,创建一个Workflow项目,选择ConsoleApplication那个模版。
2:在给出的Sequential workflow设计界面里(Sequential和State的区别,看上一篇Windows Workflow Foundation (一): 基本概念),加上一个CodeActivity(Activity的内容后边将陆续写出)。
3:在codeActivity的CodeBehind里面写这样的处理
     Console.WriteLine("Hello,World");  //怎么又是Hello,World?而不是Hello,Roy?
4:启动Workflow的代码。
       _workflowRuntime = new System.Workflow.Runtime.WorkflowRuntime("WorkflowRuntime");
        try
        {
            _workflowRuntime.StartRuntime();
        }
        catch
        {    }

看看,这里面已经出现了WWF的好几个内容了。
首先,程序模版(网上多的是,应该很好理解)。
然后,Activity,活动,WWF处理商务逻辑的核心。这里出现了一个CodeActivity,用来写一些代码处理,这些处理当然被包含在WWF里面了。 可以看到设计器的另外一个新特性:如果有些参数没有填写,它会给出提示,在设计期间。
后边是WorkflowRuntime。他将在自己的处理空间里面进行处理----马上就要讲到这个处理空间的一些问题。里面的参数是WebConfig中配置的WWF的名字,例如:
 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    <section name="WorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </configSections>


上边这个例子可能还不过瘾,再看一个复杂一点的windows workflow foundation在WebApplication中的应用,使用StateMechineWorkflow 。主要是看看里面的设计步骤和内容。
在这个例子里,我们可以看到
1:WWF的Runtime,配置,启动,这里是运行wwf的基础。上边也有简单的提到
2:数据对象DocumentService和带有ExternalDataExchange继承的事件
3:一个WWF对象:商务的流程
4:WWF的Host:使用wwf的程序

这个例子的解释在那里已经有了,这里要解释的概念就是 运行空间
“Workflows run in their own context,a context that inckides data and execution,so they naturally run in a separate thread from the host”

Host一个运行空间,比方说WebForm或者WinForm的运行空间;而WWF的运行则在另外一个程序空间(他有自己的Context上下文)。
这个的意思就是说,Host处理空间和WWF处理空间(Thread,这个翻译可能有问题)不一样,他们之间有通讯的问题。
大家可能都知道关于程序域之间的通讯,这个类似。

Host空间为了触发WWF处理空间里面的处理,就得通过事件这种方式来进行沟通,这就是DocumentService存在的意义,这就是他为什么要能Serializable(为了序列化/反序列化,在不同空间传递该对象)。

同样的道理,如果想让WWF里面的Activity访问Host里面控件(比方说修改WinForm窗体中的一个按钮的Text属性),就成了在另外一个Tread来访问Win窗体,线程不安全,所以,你得使用这样的方式来访问:
theFrom.Button1.Invoke(....);

为了解决数据交换,WWF里面有专门的几个Activity来做这项工作,他们是UpdateData;SelectData;WaitForData;WaitForQuery。后边将详细介绍这四个Activity。


下一篇将详细介绍Activity的分类和用途。





Feedback

#1楼    回复  引用    

2006-07-17 22:30 by 魂牵梦萦 [未注册用户]
太简单了吧,没有自己的东西!

这个很早我见到过了

#2楼 [楼主]   回复  引用  查看    

2006-07-18 09:38 by 随心所欲      
@魂牵梦萦
多谢批评。

1:对于内容写多深,我也不好把握这个度。这个系列我想多一点普及的味道,让更多人了解wwf
2:这次的内容以我这次看书的新的体会为主。以前没有注意到,这次发现有些内容很有意义,就写出来
3:你觉得简单,可能说明你的水平远高于我
4:下边的内容我慢慢写,尽量写好。

#3楼    回复  引用  查看    

2006-07-18 10:07 by chaochao      
如何能讲好一个技术,需要一个实际生活中的例子,因为所有的技术都是为了解决生活中的问题的.

#4楼 [楼主]   回复  引用  查看    

2006-07-18 10:14 by 随心所欲      
@chaochao
是的。
以后尽量找些实际中的列里。

#5楼    回复  引用    

2006-07-18 10:37 by code [未注册用户]
不错,我是刚开始看WWF,希望你写这系列的文章速度快点,介绍更详细些

#6楼 [楼主]   回复  引用  查看    

2006-07-18 11:10 by 随心所欲      
@code
好的,我继续写。

#7楼    回复  引用  查看    

2006-07-18 16:03 by 皇帝的新装      
从微软的站点上好像下载不了,是不是删除了?

#8楼    回复  引用  查看    

2006-07-19 08:37 by main      
我安装了Visual Studio 2005 Extensions for Windows Workflow Foundation Beta 1.2.exe。为什么在IDE中没有这个项目呢?重新安装了也没有用。但是IDE启动时,已安装列表上有,有没有什么办法把它添加上去阿?谢谢

#9楼    回复  引用  查看    

2006-07-19 09:07 by Nick-pccai      
建议你最好装上较新版本的SDK,它会要求你安装。NET FRAMEWORK3.0
而后再安装EXTENSIONS FOR WWF,但是在OFFICE2007中已经可以设计自己的WW了,有一个DESIGNER,很好用,在SPS中,可以看看!

#10楼 [楼主]   回复  引用  查看    

2006-07-19 09:29 by 随心所欲      
@皇帝的新装
上边很多程序没设置好,很多例子程序不能下载。界面也死难看。
估计他们现在还没有大举推广的意思。

#11楼 [楼主]   回复  引用  查看    

2006-07-19 09:31 by 随心所欲      
@main
安装一个最新版吧。
beta版之间的变化比较大。

他们之间不协调工作的时候也是有的,我的机器上的IIS就调不出Asp.net2.0的选项卡来

#12楼 [楼主]   回复  引用  查看    

2006-07-19 09:41 by 随心所欲      
@Nick-pccai
3.0?不会有其他问题吧?2.0的程序还能运行吧?

#13楼    回复  引用    

2006-07-19 10:12 by neuhawk1 [未注册用户]
现在 7 ctp,3.0不会影响2.0,基本上不会有太大的变化.
6ctp-->7ctp api都没有变过.

#14楼    回复  引用  查看    

2006-07-19 10:16 by main      
@随心所欲
好的,谢谢,我试试看先!

#15楼    回复  引用  查看    

2006-07-19 11:19 by idior      
最好有自己的东西

#16楼 [楼主]   回复  引用  查看    

2006-07-19 16:12 by 随心所欲      
@idior
谢谢你的建议

#17楼 [楼主]   回复  引用  查看    

2006-07-19 16:12 by 随心所欲      
@neuhawk1
比较快速阿,2.0还没推广呢,就开始用3.0了。
那天有空看看

#18楼    回复  引用    

2006-07-26 16:10 by 叶进 [未注册用户]
感觉确实简单了点,感觉很多东西都没有展开讲,弄得一头雾水啊。

#19楼    回复  引用  查看    

2007-03-30 23:55 by kevinocean      
写的很不错啊。很多关键的思想都用自己的话表达出来了。我当时看书还没有怎么看懂。这一下就给看懂了。多谢!




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接:
 
Google