加载以前创建并存储为XAML的.NET 4.0 Beta2工作流的语法是什么.
WorkflowElement和WorkflowXamlServices类不再存在.我正在尝试做这样的事情(在Beta 1中有效):
WorkflowElement wf = WorkflowXamlServices.Load(File.OpenRead("Workflow.xaml")) as WorkflowElement;
Run Code Online (Sandbox Code Playgroud) 如何为托管子活动(或多个)的Workflow Foundation 4创建自定义活动?
我们的想法是创建类似于TryCatch活动的东西,您可以在其中指定try部分中的活动和finally部分中的另一个活动.但是,我需要自己的自定义业务逻辑.
对于客户端,我们正在创建的系统必须支持以下内容:
- 必须能够运行多个工作流,以及具有不同上下文(不同数据/业务对象)的相同工作流的多个实例.
- 某些工作流程将长时间运行,涉及多个用户/客户端会话并等待外部用户输入.因此,工作流必须能够持久化并响应来自客户端应用程序的某些信号.这也意味着必须在服务器应用程序上执行工作流程(对吗?).
- 我希望能够在服务器应用程序上运行各种工作流程,并且我不希望在工作流程更改时重新部署服务器应用程序.
我的第一个想法是Workflow Services.经过大量研究后,我得出结论认为这不是正确的道路,因为Workflow Services基本上可以在客户端应用程序中启动的工作流程中执行远程位置的活动.它是否正确?或者我可以在上面的场景中使用Workflow Services吗?大多数示例和/或教程基本上是一个ReceiveSignal/Send组合,其间有一些逻辑.
基本上我想(从客户端应用程序)启动具有特定上下文的工作流的开始(在工作流服务器应用程序中).
什么是最好的方法?
很感谢任何形式的帮助!
我已经详尽地查看了WF4的示例,并且不确定它是否适用于我的项目.否则我需要被说服.我正在努力实现一个使用WF4的系统,以便用户能够定义工作流程.您似乎需要VS2010经验来设计和实施WF4工作流程.我喜欢它可以提供的小麦,但是对于非技术用户来说这可能太复杂了.
我们是否只定义了大量用户可以移动到工作流程中的自定义活动?我们如何才能让用户尽可能轻松地构建工作流程?
我们有想要允许的应用程序,Joe/Jane用户可以为特定项目创建自己的工作流程.例如,Request For Information项目.RFI具有由用户定义的特定状态.应允许他们根据这些状态控制流量.应用程序将根据决策/条件定义一些基本项目.因此,诸如通知(当某些内容发生变化时会收到通知),时间范围(某些事情可以在其他事情发生之前保持某种状态)以及可能的其他条件之类的事情.目前,条件/决策类型将受到应用程序的限制.但想象一下,他们可以构建工作流程并在没有任何编码知识的情况下添加这些决策/条
我只是不知道如何以这种方式利用WF4.也许我正在以错误的方式看待WF4?
我遇到了WF4的一个非常奇怪的问题:当我使用Switch活动并以某种方式决定字符串变量的值时,WF将Switch的参数视为字符串,而不是变量的名称.因此我得到了不正确的结果.重现的步骤:
- create new WF - add Sequence - add Switch of String to the Sequence - add a new string variable named, for instance, [testText] and set its default value to "test" - set argument of the switch to testText - create a case in the switch for "test" string and show msgbox on it - create another case, let it be default case which shows another msgbox with "default" text - run突然,我们在这里得到一个带有"默认"文本的消息框,而不是testText案例的消息框
我们目前有一个处理翻译工作的系统.
目前,可以手动和/或覆盖所有状态.意味着可以跳过或退回任何步骤.
该应用程序是ASP.NET WebForms/MVC混合.
现在我想用Windows Workflow Foundation重新实现它.状态机比流程图更有意义吗?我并没有真正获得国家机器的优势......
很长一段时间我使用以下模板编写自定义AsyncCodeActivity类:
public sealed class MyActivity : AsyncCodeActivity<T>
{
protected override IAsyncResult BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, object state)
{
var task = new Task<T>(this.Execute, state, CancellationToken.None, TaskCreationOptions.AttachedToParent);
task.ContinueWith(s => callback(s));
task.Start();
return task;
}
protected override T EndExecute(AsyncCodeActivityContext context, IAsyncResult result)
{
var task = result as Task<T>;
if (task.Exception != null)
{
// Error handling. Rethrow? Cancel?
}
return task.Result;
}
private T Execute(object state)
{
// Logic here
return default(T);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一些问题:
谢谢
我注意到当我使用Invoker并直接调用invoker.Invoke()时,GUI不会在运行时刷新.还有什么区别?
我正在学习Windows Workflow Foundation 4,并尝试创建以下程序:
using System;
using System.Activities.XamlIntegration;
using System.Linq;
using System.Activities;
using System.Activities.Statements;
using System.Reflection;
using System.Xaml;
namespace BranchedActivities
{
class Program
{
static void Main(string[] args)
{
Activity wf = ActivityXamlServices.Load(@"C:\...\Workflow1.xaml");
WorkflowInvoker.Invoke(wf);
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Workflow1包含一个单独的动作,称为Activity1。Activity1.xaml由单个Writeline组成。
当我将工作流作为已编译的Activity加载时(通过使用“ Activity wf = new Workflow1()”),程序将完美加载。当我尝试为活动加载XAML时(如上面的代码),出现异常:无法创建未知类型'{clr-namespace:} Activity1'。
我想我也必须以某种方式加载其他xaml文件,尽管我对此非常困惑。
供您参考。...Workflow1.xaml:
<Activity mc:Ignorable="sap" x:Class="Workflow1" sap:VirtualizedContainerService.HintSize="262,240" mva:VisualBasic.Settings="Assembly references and imported namespaces for internal implementation" xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mv="clr-namespace:Microsoft.VisualBasic;assembly=System" xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:s1="clr-namespace:System;assembly=System" xmlns:s2="clr-namespace:System;assembly=System.Xml" xmlns:s3="clr-namespace:System;assembly=System.Core" xmlns:sad="clr-namespace:System.Activities.Debugger;assembly=System.Activities" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" xmlns:scg="clr-namespace:System.Collections.Generic;assembly=System" xmlns:scg1="clr-namespace:System.Collections.Generic;assembly=System.ServiceModel" xmlns:scg2="clr-namespace:System.Collections.Generic;assembly=System.Core" xmlns:scg3="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:sd="clr-namespace:System.Data;assembly=System.Data" xmlns:sl="clr-namespace:System.Linq;assembly=System.Core" xmlns:st="clr-namespace:System.Text;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:">
<Sequence …Run Code Online (Sandbox Code Playgroud) 我在机器配置中注册了一个名为'ApplicationServerWorkflowInstanceStoreConnectionString的连接字符串(机器配置的32位和64位版本).但是,即使IIS管理器看到它(在特定Web应用程序的节连接字符串中),应用程序也看不到它.我究竟做错了什么?

安琪莉.