• WF实例学习笔记:(2)通过Workflow 调用 WCF Data Services 获取数据


    运行程序首页的效果如图所示:

    首先打开HomeController.cs 文件

            public ActionResult Index()
            {
                #region XAML
    
                //var activity =
                //    ActivityXamlServices.Load(
                //    Server.MapPath("~/workflows/GetDataForMainPage.xaml"));
                //var results = WorkflowInvoker.Invoke(activity);
                #endregion
    
                var results =
                    WorkflowInvoker.Invoke(
                    new CustomActivities.GetDataForMainPage());
    
                ViewData["candidates"] = results["candidates"];
                ViewData["workOrders"] = results["workOrders"];
    
                return View();
            }

    程序使用了WorkflowInvoker.Invoke 调用了GetDataForMainPage Activity 并将返回结果保存在ViewData中。
    接着分析GetDataForMainPage Activity

    并行工作流中包含了两个GetOData Activity,并将泛型Activity的返回结果IEnumerable<JobCandidate>与IEnumerable<WorkOrder>和绑定到输出参数candidate与workOrders

    接下来看GetOData的实现

        public sealed class GetOData<T> : AsyncCodeActivity<IEnumerable<T>>
        {
            [RequiredArgument]
            public InArgument<Uri> ServiceUrl { get; set; }
            public InArgument<string> EntitySetName { get; set; }
    
            protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, 
                AsyncCallback callback, object state)
            {
                 DataServiceContext ctx = 
                   new DataServiceContext(ServiceUrl.Get(context));
    
               DataServiceQuery<T> query = ctx.CreateQuery<T>(EntitySetName.Get(context));
               context.UserState = query;
               return query.BeginExecute(callback, state);
            }
    
            protected override IEnumerable<T> EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
            {
                DataServiceQuery<T> query = context.UserState as DataServiceQuery<T>;
                return query.EndExecute(result);
            }
            
        }

    该段代码通过异步DataServiceQuery调用了WCF Data Services。

  • 相关阅读:
    pandas中expand的作用
    pandas中DataFrame的stack()、unstack()和pivot()方法的对比
    Django在windows下用Apache 部署
    pandas分组统计
    DataFrame中的空值处理
    Django signals 监控模型对象字段值的变化
    django+uwsgi+daphne+supervisor生产环境部署
    Django-Channels使用和部署
    Django使用Channels实现WebSocket的方法
    python 操作es
  • 原文地址:https://www.cnblogs.com/yanyan45/p/2466442.html
Copyright © 2020-2023  润新知