zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    strcpy实现 处理地址重叠,返回值问题
    lua的table的删除操作
    防御式编程
    软技能:代码之外的生存指南
    adb命令行输出logcat日志
    SyntaxError: Non-ASCII character 'xe5' in file test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
    cocos2dx lua 图片去色shader
    cocos studio
    35 个 Java 代码性能优化总结
    Java必备技能:clone浅克隆与深克隆
  • 原文地址:https://www.cnblogs.com/yanyan45/p/2466442.html
Copyright © 2011-2022 走看看