VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • WF3.5的SendActivity、ReciveActivity与WorkServiceHost4

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  ReceiveActivity 对话模式

  CanCreateInstance设置为 false,客户端无法使用服务操作调用来创建工作流的新实例,只能使用关联的 WorkflowRuntime 对象的 CreateWorkflow 方法可以创建这样的工作流,并作为对话的一部分由服务客户端调用

  流程说明

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

  系统结构说明

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

  调用说明

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

  服务接口

  namespace 基础类

{
[System.Runtime.Serialization.DataContract]
public class 物料单
{
[System.Runtime.Serialization.DataMember]
public string 要申请的物料
{ set; get; }
  
[System.Runtime.Serialization.DataMember]
public string 协调计划
{ set; get; }
}
  
[ServiceContract]
public interface 物料申请
{
[OperationContract(IsInitiating = true)]
void 提交申请单(物料单 物料申请单 ,IDictionary<string,string> myContext);
}
[ServiceContract]
public interface 回复物料申请
{
[OperationContract(IsInitiating = true)]
void 回复请单(物料单 物料申请单);
}
}

编缉推荐阅读以下文章

  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (3)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (2)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost(1)
 

  生产部服器_申请物料流程

<system.serviceModel>
<services>
<service name="生产部服器.申请物料流程" >
<host>
<baseAddresses>
<add baseAddress="http://localhost:5001/wxwinter/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpContextBinding"
contract="基础类.回复物料申请" />
</service>
</services>
<client>
<endpoint name="lzmEndPoint"
address="http://localhost:5000/wxwinter/"
binding="wsHttpContextBinding"
contract="基础类.物料申请">
</endpoint>
</client>
</system.serviceModel>

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

  public sealed partial class 申请物料流程: SequentialWorkflowActivity

  {
    public 申请物料流程()
    {
      InitializeComponent();
    }
  
public 基础类.物料单 物料申请单 = new 基础类.物料单();
  
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
物料申请单.要申请的物料 = "电脑";
System.Console.WriteLine(this.WorkflowInstanceId.ToString());
  
}
private void sendActivity1_BeforeSend(object sender, SendActivityEventArgs e)
{
e.SendActivity.ParameterBindings["myContext"].Value = this.receiveActivity1.Context;
}
  
private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
System.Console.WriteLine(物料申请单.要申请的物料);
System.Console.WriteLine(物料申请单.协调计划);
System.Console.WriteLine("完成");
}
  
  }

编缉推荐阅读以下文章

  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (3)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (2)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost(1)
 

  namespace 生产部服器

{
class Program
{
static void Main(string[] args)
{
WorkflowServiceHost host = new WorkflowServiceHost(typeof(申请物料流程));
host.Open();
Console.WriteLine(host.BaseAddresses[0].ToString());
  
WorkflowInstance workflow = host.Description.Behaviors.Find<WorkflowRuntimeBehavior>().WorkflowRuntime.CreateWorkflow(typeof(申请物料流程));
workflow.Start();
Console.ReadLine();
host.Close();
}
}
}

  协调部服器_协调流程

<system.serviceModel>
<services>
<service name="协调部服器.协调流程" >
<host>
<baseAddresses>
<add baseAddress="http://localhost:5000/wxwinter/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpContextBinding"
contract="基础类.物料申请" />
</service>
</services>
<client>
<endpoint name="wxdEndPoint"
address="http://localhost:5001/wxwinter/"
binding="wsHttpContextBinding"
contract="基础类.回复物料申请">
  
</endpoint>
</client>
  
</system.serviceModel>

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

编缉推荐阅读以下文章

  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (3)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (2)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost(1)
 

  public sealed partial class 协调流程: SequentialWorkflowActivity

  {
    public 协调流程()
    {
      InitializeComponent();
    }
  
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
this.sendActivity1.Context = this.receiveActivity1.ParameterBindings["myContext"].Value as IDictionary<string, string>;
}
  
public 基础类.物料单 物料申请单 = new 基础类.物料单();
  
private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
System.Console.WriteLine(this.WorkflowInstanceId.ToString());
Form1 f = new Form1();
f.textBox1.Text = 物料申请单.要申请的物料;
f.Text = this.WorkflowInstanceId.ToString();
f.ShowDialog();
物料申请单.协调计划 = f.textBox2.Text;
f.Close();
}
  
private void codeActivity3_ExecuteCode(object sender, EventArgs e)
{
System.Console.WriteLine("完成");
}
  }

  namespace 协调部服器

{
class Program
{
  
static void Main(string[] args)
{
WorkflowServiceHost host = new WorkflowServiceHost(typeof(协调部服器.协调流程));
System.Workflow.Runtime.WorkflowRuntime runtime;
runtime = host.Description.Behaviors.Find<WorkflowRuntimeBehavior>().WorkflowRuntime;
host.Open();
Console.WriteLine(host.BaseAddresses[0].ToString());
Console.Read();
host.Close();
}
}
}

 

  运行结果

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

  例子: http://files.cnblogs.com/wxwinter/TestReceiveSendActivity.rar

 

编缉推荐阅读以下文章

  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (3)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (2)
  • WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost(1)
 

  生产部服器_申请物料流程

<system.serviceModel>
<services>
<service name="生产部服器.申请物料流程" >
<host>
<baseAddresses>
<add baseAddress="http://localhost:5001/wxwinter/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpContextBinding"
contract="基础类.回复物料申请" />
</service>
</services>
<client>
<endpoint name="lzmEndPoint"
address="http://localhost:5000/wxwinter/"
binding="wsHttpContextBinding"
contract="基础类.物料申请">
</endpoint>
</client>
</system.serviceModel>

WF3.5 的SendActivity、ReceiveActivity与WorkflowServiceHost (4)

  public sealed partial class 申请物料流程: SequentialWorkflowActivity

  {
    public 申请物料流程()
    {
      InitializeComponent();
    }
  
public 基础类.物料单 物料申请单 = new 基础类.物料单();
  
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
物料申请单.要申请的物料 = "电脑";
System.Console.WriteLine(this.WorkflowInstanceId.ToString());
  
}
private void sendActivity1_BeforeSend(object sender, SendActivityEventArgs e)
{
e.SendActivity.ParameterBindings["myContext"].Value = this.receiveActivity1.Context;
}
  
private void codeActivity2_ExecuteCode(object sender, EventArgs e)
{
System.Console.WriteLine(物料申请单.要申请的物料);
System.Console.WriteLine(物料申请单.协调计划);
System.Console.WriteLine("完成");
}
  
  }


相关教程