我使用自定义实例存储创建了一个简单的工作流服务(以支持oracle)。 自定义实例存储,我按照MSDN的演示:[http://msdn.microsoft.com/en-us/library/ee829481.aspx] [1] 但是当我调用服务api时,引发异常:
从实例存储中检索了错误类型的值。一个 类型值{/ Default Web Site /} OrderService.svc是预期的,但是 而是遇到了null。
我尝试使用SqlWorkflowInstanceStore,没关系。服务没问题。 我再次使用自定义实例存储并进行调试,我发现在 SaveWorkflowCommand 之前执行 LoadWorkflowCommand 。我认为这是一个问题。需要你的帮助!
以下是我的代码段:
1. Web Config:
<extensions>
<behaviorExtensions>
<add name="databaseWorkflowInstanceStore" type="Practices.Framework.Workflow.Configuration.DatabaseInstanceStoreElement, Practices.Framework" />
</behaviorExtensions>
</extensions>
<behaviors>
<serviceBehaviors>
<behavior>
<!--<sqlWorkflowInstanceStore connectionStringName="practicesDatabase" instanceCompletionAction="DeleteAll" instanceEncodingOption="GZip" />-->
<databaseWorkflowInstanceStore database="practicesDatabase" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
2. DatabaseInstanceStore
public class DatabaseInstanceStore : InstanceStore
{
protected override IAsyncResult BeginTryCommand(InstancePersistenceContext context, InstancePersistenceCommand command, TimeSpan timeout, AsyncCallback callback, object state)
{
if (command is CreateWorkflowOwnerCommand)
{
var instanceOwnerId = Guid.NewGuid();
context.BindInstanceOwner(instanceOwnerId, instanceOwnerId);
}
else if (command is LoadWorkflowCommand)
{
var instanceData = this.LoadInstanceData();
context.LoadedInstance(InstanceState.Initialized, instanceData, null, null, null);
}
else if (command is SaveWorkflowCommand)
{
var saveCommand = (SaveWorkflowCommand)command;
var instanceData = saveCommand.InstanceData;
this.SaveInstanceData(instanceData);
}
return new CompletedAsyncResult<bool>(true, callback, state);
}
......
}
答案 0 :(得分:0)
MSDN文章仅显示您需要实现的最少命令。听起来你需要支持更多的命令,所以我会检查你不支持的调度命令。有关命令列表,请参阅here。
答案 1 :(得分:0)
使用以下顺序执行以下命令调用BeginTryCommand: 1. CreateWorkflowOwnerCommand 2. LoadWorkflowCommand 3. SaveWorkflowCommand 4. SaveWorkflowCommand
所以对于LoadWorkflowCommand: 我需要在加载
之前创建实例http://social.msdn.microsoft.com/Forums/en/dublin/thread/e51d7b18-1e27-4335-8ad0-4ce76b9f8b91