WF培训课堂笔记
EKING <chsdate w:st="on" year="2007" month="7" day="30" islunardate="False" isrocdate="False">2007-07-30</chsdate>
因项目工作流平台的选型需要,近日部门邀请微软培训讲师徐晓卓老师给我们作了2天的微软工作流平台的全面介绍与技术培训。
技术选取的准则:
1.成熟的技术
2.主流的技术
3.熟悉的技术
软件发展的三个阶段:
面向对象 OO
面向组件 Component (事件驱动:事件,代理,委托)
面向服务 SOA (Saas)
Application Block
<place w:st="on"><city w:st="on"><span lang="EN-US">Enterprise</span></city></place> Library
Software Factory
数据库表主键:推荐用Guid (128位字符),在SQL SERVER 中字段默认值 使用内建函数 newid()
好处:数据整合时主键不会重复
工作流运行环境:
1. .net framework 3.0 (2.0的扩展版本)
前提:必修安装.net framework 2.0
2. VS2005 SP1
3. Workflow foundation
序列图:有向无环图
状态图:可以有环
工作流开发实例
1. HelloWorldWorkFlow
基本顺序工作流,包括工作流初始化参数
包括2个项目:HelloWorldWorkflow, WindowsApplication1
2. ExpenceWorkFlows
包括5个项目:
Activities :自定义活动
Services: 外部服务
Host: 宿主程序,服务端
Application:客户端调用程序 (.net remoting调用)
Workflows:工作流
3. Custom Activity
1) 自定义属性
2) 自组合活动
4. Host Workflow
1) WorkflowRuntime的生命周期
Start
Load, Unload, Persiste
Stop, Complete, Teminate
Suspend, Resume
Idle
2) GetInstanceTrackingEvents(Guid instanceId)在何时被调用?
5. State Machine Activity
有环的情况
6. WebService
7.改变工作流的结构
static void modifyWorkflowFromHost(WorkflowInstance workflowInstance)
{
if (!workflowUpdated)
{
workflowUpdated = true;
Activity workflowInstanceDefinition = workflowInstance.GetWorkflowDefinition();
WorkflowChanges workflowChangesToMake = new WorkflowChanges(workflowInstanceDefinition); //WorkflowChanges用来改变工作流结构
// remove ifelse
Console.WriteLine("\tHost change to always require approval for");
Console.WriteLine("\tInstanceId: " + workflowInstance.InstanceId);
CompositeActivity ifelse = workflowChangesToMake.TransientWorkflow.Activities["ifElse1Activity"] as CompositeActivity;
workflowChangesToMake.TransientWorkflow.Activities.Remove(ifelse);
// setup to invoke NewStepWorkflow type
InvokeWorkflowActivity invokeNewStepWorkflow = new InvokeWorkflowActivity();
invokeNewStepWorkflow.Name = "AddNewStepWorkflow";
invokeNewStepWorkflow.TargetWorkflow = typeof(DynamicUpdateInWorkflow.Workflow2);
// insert approval workflow
workflowChangesToMake.TransientWorkflow.Activities.Insert(1, invokeNewStepWorkflow);
// apply transient changes to instance
workflowInstance.ApplyWorkflowChanges(workflowChangesToMake);
}
else
{
Console.WriteLine("\tWorkflow has already been updated by the Host");
}
}
www.dinnernew.net : 大型分布式应用的例子,食品方面,里面有很多新技术(工作流,mmc)
CD C:\WINDOWS\assembly
CD assembly
Dir 可以看到所有共享的程序集目录
网络安全 多重身份认证(一般三选二)
1) 我知道什么:用户名,密码
2) 我有什么:身份卡 (如微软使用 SmartClient)
3) 我是什么: 生物技术(指纹技术)
微软外部员工登陆内部系统:用户名/密码 + SmartClient
VPN + SSL
日志
1. 四个级别:Error, Warning, Info, Verbose
2. 一定要有日志开关,并且各个级别都要做开关
分布式系统架构设计
VS2005 : 新建-〉项目-〉分布式系统架构
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 220.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata></shape>
<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 210.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png"><font face="Times New Roman" size="3"></font></imagedata></shape>
<shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 215.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.png"><font face="Times New Roman" size="3"></font></imagedata></shape>
课堂问题
1. 经常出现 “Error loading workflow”,是什么问题? (查看xoml文件?)
2. 工作流页面定向的URL在哪里可以设置?
3. 使用DataSet进行批量数据处理:插入,更新,删除。减少数据库的往返层次和打开关闭的次数。
4. 安全问题考虑:最小权限原则,连接字符串的加密原则。
5. SQL SERVER 2005 内建对 .net2.0 clr的支持
将dll安装到SQL SERVER ,触发器里可以直接调用dll中的方法。
分享到:
相关推荐
非常值得学工作流的参考的 并且使用的思想也很好
WF的全称是Windows Workflow Foundation,是微软在.NET 3.0之后推出的一套工作流开发框架。WF是微软在.NET 3.0上推出的三大框架(WPF和WCF及WF)之一,其主要目的在于为现有的.NET应用程序嵌入工作流应用,目前最新...
这个例子以一个报销流程为例,从员工(staff)发起报销流程开始,提交给经理...是学习微软WF工作流的一个好例子! 数据库在文件夹里,直接还原即可,不用附加。 ps:有同样喜欢研究工作流的朋友可以+10007354共同进步!
WF工作流例子
微软工作流基础知识详解 WorkFlow从入门到精通
对工作流有很详细的描述。还有部分相关知识点。 有18个doc文档
工作流 WorkFlow WF从入门到精通 包括PDF教程和源代码
工作流系统是以规格化的流程描述作为...该节主要包括以下内容:实现技术与实现方案、工作流设计器、工作流调用服务(封装类、WFLocalService和WFWebService)、工作流分类、工作调用、工作流监控、页面流和工作流权限等
wf asp.net工作流源码 带数据库 经测试,绝对可用。 带流程图,操作页面,表单。
WF工作流的一个完整例子,是基于之前发存的WF调试器的加架写的
微软工作流的学习的文档微软工作流的学习的文档微软工作流的学习的文档微软工作流的学习的文档微软工作流的学习的文档微软工作流的学习的文档微软工作流的学习的文档微软工作流的学习的文档微软工作流的学习的文档...
基于WF的工作流平台系统架构
基于WF工作流引擎的 高效OA 源码,基于微软NET架构的云在线办公系统,支持多公司架构,SaaS软件按模式。非常适合公司或团队使用,可以作为通用OA的基础模式,代码完整,功能几乎无错,正在使用运行。
讲述.NET 3.5框架下的WF工作流技术
基于NET4.0的WF工作流设计器源代码; 值得下载。
在学习workflow Foundation 的过程中,看过的很好的学习笔记,对于刚刚接触工作流,想学习工作流编程的人,有很好的帮助!
WPF+WF+Linq 工作流的例子WPF+WF+Linq 工作流的例子WPF+WF+Linq 工作流的例子
一个非常好的Asp.net工作流(WF+LINQ)
WF 会议签到例子 WF 博客申请流程 WF 设计器
微软wf和wcf实例大全,可作为入门资料