微软工作流平台WF培训笔记2天
微软工作流平台WF培训笔记(2天)
WF培训课堂笔记
EKING
2007-07-30
因项目工作流平台的选型需要,近日部门邀请微软培训讲师徐晓卓老师给我们作了2天的微软工作流平台的全面介绍与技术培训。
技术选取的准则:
成熟的技术
主流的技术
熟悉的技术
软件发展的三个阶段:
面向对象
OO
面向组件
Component (
事件驱动:事件,代理,委托
)
面向服务
SOA
(Saas)
Application Block
Enterprise
Library
Software Factory
数据库表主键:推荐用
Guid (128
位字符
)
,在
SQL SERVER
中字段默认值
使用内建函数
newid()
好处:数据整合时主键不会重复
工作流运行环境:
- .net framework 3.0
(2.0
的扩展版本
)
前提:必修安装
.net framework 2.0
VS2005 SP1
Workflow foundation
序列图:有向无环图
状态图:可以有环
工作流开发实例
1. HelloWorldWorkFlow
基本顺序工作流,包括工作流初始化参数
包括
2
个项目:
HelloWorldWorkflow
,
WindowsApplication1
2. ExpenceWorkFlows
包括
5
个项目:
Activities
:自定义活动
Services
:
外部服务
Host
:
宿主程序,服务端
Application
:客户端调用程序
(.net remoting
调用
)
Workflows
:工作流
3. Custom Activity
自定义属性
自组合活动
4. Host Workflow
- WorkflowRuntime
的
生命周期
Start
Load, Unload, Persiste
Stop, Complete, Teminate
Suspend, Resume
Idle
- 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” );
}
}
: 大型分布式应用的例子,食品方面,里面有很多新技术 ( 工作流, mmc)
CD C:/WINDOWS/assembly
CD assembly
Dir
可以看到所有共享的程序集目录
网络安全 多重身份认证(一般三选二)
我知道什么:用户名,密码
我有什么:身份卡
(如微软使用
SmartClient
)
我是什么:
生物技术(指纹技术)
微软外部员工登陆内部系统:用户名
/
密码
- SmartClient
VPN + SSL
日志
四个级别:
Error, Warning, Info, Verbose
一定要有日志开关,并且各个级别都要做开关
分布式系统架构设计
VS2005
:
新建
〉项目
〉分布式系统架构
课堂问题
经常出现
“Error loading workflow”
,是什么问题?
(
查看
xoml
文件?
)
工作流页面定向的
URL
在哪里可以设置?
使用
DataSet
进行批量数据处理:插入,更新,删除。减少数据库的往返层次和打开关闭的次数。
安全问题考虑:最小权限原则,连接字符串的加密原则。
SQL SERVER 2005
内建对
.net2.0 clr
的支持
将
dll
安装到
SQL SERVER
,触发器里可以直接调用
dll
中的方法。