首先,我没有运行到程序,因为转换失败,我用VS2008,再次,没有数据库,然后我还觉得整个程序可能有一点点过于累赘.
对于这个问题,我仔细看了你的示例;发现几个问题,这里仅作为参考.
1:用于工作流调用的扩展服务接口(ExtendServiceInstance.ICharge)并没有得到外部实现,按照你的整个程序来看,BLL层应该是会去实现这个接口或者调用这个接口的实现类.如果你仔细观察HostWorkFlow这个示例,会发现它比你多一点点代码,在开始工作流之前:
ExternalDataExchangeService dataExchangeService = new ExternalDataExchangeService();
workflowRuntime.AddService(dataExchangeService);
这三句话的意思是将扩展服务添加到当前的工作流运行时中.
最好再加上一句:workflowRuntime.AddService(this);
将要运行工作流的宿主也参与到到工作流运行时中来.
当然,这在你的程序中没有看到.
最后还有几点不明白的就是:为什么你会通过BLL层来调用DAL呢?你已经使用了工作流,这样BLL中就完全没有必要写上任何的业务逻辑代码了,这项工作应该是由工作流来完成的,包括对DAL的调用也是应该是在工作流中完成的.BLL主要的精力被分散了,它的主要工作应该是控制工作流的走向的吧?