WF学习
1.添加argument
类的argument必须先在表达式里面实例化
argument和variable 没有区别啊???????
http://msdn.microsoft.com/en-us/library/dd489456(v=vs.110).aspx
2.代码添加控件
错误:
<Add x:TypeArguments="s:Int32,s:Int32,s:Int32" x:Key="4th" DisplayName="Add 15" Left="[TotalMount]" Result="[TotalMount]" Right="[15]"/>
正确:
<Add x:TypeArguments="x:Int32, x:Int32, x:Int32" DisplayName="Add 15" Right="1">
<Add.Left>
<InArgument x:TypeArguments="x:Int32">
<mca:CSharpValue x:TypeArguments="x:Int32">OrderInfo.id</mca:CSharpValue>
</InArgument>
</Add.Left>
<Add.Result>
<OutArgument x:TypeArguments="x:Int32">
<mca:CSharpReference x:TypeArguments="x:Int32">OrderInfo.id</mca:CSharpReference>
</OutArgument>
</Add.Result>
<sap2010:WorkflowViewState.IdRef>Add`3_1</sap2010:WorkflowViewState.IdRef>
</Add>
3.Invoke Method
public class OrderDis
{
public static int Compute(int id)
{
Console.WriteLine(id + 10);
return id+10;
}
}
Target Type 选择类
Target Object 不选
就可以了
WF 加WCF 实现WCF服务。
1.可以认为WCF是一种SOCKET通信。
2.实现这种通信需要两个东西,服务端和客户端。
3.服务端和客户端使用WF实现,分别是:
WorkflowServiceHost和WorkflowInvoker
4.WorkflowServiceHost的内容由WorkflowService指定。
包含:ENDPOINT和Activity(即活动),ENDPOINT包括服务契约名称 binding类型 和 服务地址。
Activity 为继承Activity的自定义类,这个玩意就是一个WF流程。在这个流程中,请添加一个活动叫做:Receive,这个东东非常重要。
系统接收到XML消息后,就可以激活Receive的流程。请告诉Receive要解析的内容。即:
Receive receiveRequest = new Receive {
ServiceContractName = "IlibReser",
OperationName = "ReBook",
CanCreateInstance=true,
Content=ReceiveContent.Create(new OutArgument<ReservationRequest>(request)),
//这个玩意啥意思,是收到以后做什么操作? 必须是一个OutArgument,这个玩意被赋值了,恭喜!
CorrelatesWith=requsetHandle
//这个东西就是个空的,要看看会变成什么,也许没用 };
5.WorkflowInvoker的东西由另外一个Activity指定,这里面最重要的是
Send 和 ReceiveReply 2个活动。
Send submitRequest = new Send
{
ServiceContractName = "IlibReser",
EndpointAddress = new InArgument<Uri>( env => new Uri("http://localhost:" + port.Get(env) + "/Lib")),
Endpoint = new Endpoint {Binding = new BasicHttpBinding()},
OperationName = "ReBook",
Content = SendContent.Create(new InArgument<ReservationRequest>(request)) //送一个类过去?送一条消息过去
};
这个ENDPOINT 和那个要一样,才能通信。
new ReceiveReply
{
Request=submitRequest,
Content=ReceiveContent.Create(new OutArgument<ReservationResponse>(env=>response.Get(env)))
}
这个函数能判别是哪个Request的响应?然后执行的内容是从返回对象中提取response。
******以下是WCF流程********
1.ServiceContract的类,提供若干OperationContract。这就是后台服务,也就是Receive和Send里要调用的。
实际上,这两个貌似应该分开来。???分成两个类。
2.还有两个东西,就是MessageContract.他们分别用在Send ReceiveReply和Receive、SendReply的content中。也就是说,这才是传递的对象。
但是不用也没什么大不了的啊。。。。。。。。这是怎么回事?没有报错!
//就区别来说,不加的话,默认所有public的属性都要序列化,但是加的话,只有标注的属性(或字段)才能序列化,而且即使那个属性是私有的,一样可以序列化,不受任何限制。-----------------验证过了,确实是的。如果MessageContract 一定要标记MessageBodyMember.MessageHeader也不行。分消息头和消息体·MessageContract和DataContract的区别。
native 和 code的区别在于CONTEXT和metadata上,native强很多
WF学习的更多相关文章
- 系列文章--WF学习资料汇总
学习WF当然是MSDN作为第一手材料,但是看完了一些基础的入门知识后,园子里的一些WF大牛们的系列文章就是很好的提高的材料了.在此,感谢他们,我真佩服他们有这样的耐心和良好的学习习惯. 以下就是我经常 ...
- WF学习思维导图
原文 来自我的有道笔记-老文重发系列 如果配置加载核心服务,那么需要将持久化服务和跟踪服务放在一个数据库中! 1.用工作流的优点 a.提供将复杂任务分解的途径,通过将每个操作分解到活动中更便于业务 ...
- WF学习笔记(四)
1.使用WorkflowApplication.OnUnhandledException 处理Code异常 ,用于产生异常的Activity: public class ExceptionActivi ...
- WF学习笔记(三)
Collection 集合 -AddtoCollection<T> 添加项到集合 :[AddtoCollection]可以将一个项添加到[Collection]集合中 ,[Item]属性用 ...
- WF学习笔记(二)
-DoWhile循环:当[Condition]条件为真时会执行[Body]中的内容, 当[Condition]条件为假时会执行[Body]中的内容一次 -ForEach<T> 循环 :[V ...
- WF学习笔记(一)
-流程启动方式1: WorkflowInvoker.Invoke(new Workflow1()); -流程启动方式2: WorkflowApplication instance = new Work ...
- WF的初步学习与创建
一直在好奇WF的学习,嘿嘿,今天就不用啦,我之后就要接触WF的项目,刚开始在百度上寻找WF新建一个项目的过程,发现很少这样的实例让我学习操作,我想给我一个大的项目我也不可能一下就知道应该怎样去操作,由 ...
- WCF揭秘学习笔记(5):WF定制活动
WF(Windows Workflow Foundation,Windows工作流基础)为.NET提供了一种基于模型的.声明方式的过程执行引擎,它改变了传统的通过一行行编写代码来开发服务功能的方式. ...
- WF从入门到精通学习目录
WF从入门到精通(第一章):WF简介 WF从入门到精通(第二章):workflow运行时 WF从入门到精通(第三章):workflow实例 WF从入门到精通(第四章):活动及workflow类型介绍 ...
随机推荐
- Gmail 一些需注意的事
display none 的问题 如果我们写html 然后用 mail server 发给gmail client . 如果内容涉及 display:none , 请加一个 important 比如 ...
- java并发5-volatile关键字解析
http://www.cnblogs.com/dolphin0520/p/3920373.html 一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程 ...
- 你该学点HTML/CSS知识的9大理由
每个人都应该学写代码——这一观点简直就是铺天盖地地映入我们眼帘.或许你会莫名其妙,程序员学代码那是理所应当,但是作为一个作家.营销人员.财务工作者甚至是工人,为什么也需要学习代码呢? 好吧,下面我会告 ...
- HDU_2054——A=B问题
Problem Description Give you two numbers A and B, if A is equal to B, you should print "YES&quo ...
- 金错刀对话口袋购物王珂:找到痛点,确认卖点,制造爆点! - 资讯 - i黑马网
金错刀对话口袋购物王珂:找到痛点,确认卖点,制造爆点! - 资讯 - i黑马网 金错刀对话口袋购物王珂:找到痛点,确认卖点,制造爆点!
- i&1、负数二进制
if(i&1==1) 表示 如果是 奇数 则...i&1 -- 按位与运算,取 2进制整数 i 的最低位,如果最低位是1 则得1,如果最低位是0 则得0. 奇数 i 的最低位 是1,偶 ...
- C#中对于接口的实现方式
转载: C#中对于接口的实现方式有隐式接口和显式接口两种: 隐式地实现接口成员创建一个接口,IChinese,包含一个成员 Speak;我们创建一个类Speaker,实现接口Chinese //隐藏式 ...
- [小知识] 获取浏览器UA标识
这个随笔纯粹是小知识的积累,以后都会打上小知识的标签. 经常见的,下载移动app时,只有一个二维码,但扫码后,会根据手机是iphone还是android下载不同app,下面就是这个操作的代码: < ...
- android学习笔记---63-PopupWindow,泡泡窗口的实现
转载http://blog.csdn.net/lidew521/article/details/8976627 PopupWindow是一个可以显示在当前Activity之上的浮动容器,PopupWi ...
- PHP页面之间跳转方法总结
编程中,在页面之间进行跳转是必须的.这里列出了三种办法,供参考. 一.用HTTP头信息 也就是用PHP的HEADER函数.PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通 ...