BizTalk BRE InvalidCastException

Я настроил новую виртуальную машину (MS Virtual Server под управлением Windows Server 2003) в качестве копии существующей виртуальной машины, на которой установлен сервер BizTalk 2006. У меня возникла проблема с обработкой BRE. Политика развернута и словарь опубликован точно так же, как на рабочей ВМ.

Оркестровка вызывает вспомогательный компонент, который, в свою очередь, использует компоненты BRE. Последняя строка в вспомогательном компоненте, который, кажется, выполняется:

Policy workflowPolicy = new Policy(policyName)

Я вставил трассировку стека из журнала событий ниже:

Exception type: InvalidCastException
Source: Microsoft.RuleEngine
Target Site: Int32 GetInt32(System.String, Int32)
The following is a stack trace that identifies the location where the exception occured
   at Microsoft.RuleEngine.Configuration.GetInt32(String key, Int32 defaultValue)
   at Microsoft.RuleEngine.ReteTranslator.RuleSetToReteTranslatorImpl.Translate(RuleSet ruleset, Int32 duration)
   at Microsoft.RuleEngine.ReteTranslator.RuleSetToReteTranslator.Translate(RuleSet ruleset, Int32 duration)
   at Microsoft.RuleEngine.RuleEngine..ctor(RuleSet ruleSet, Boolean doOptimizations)
   at Microsoft.RuleEngine.RuleEngineCache.Allocate(String rulesetName, Int32 majorRevision, Int32 minorRevision, TrackingConfiguration& trackingConfig)
   at Microsoft.RuleEngine.RuleEngineCache.Allocate(String rulesetName, TrackingConfiguration& trackingConfig)
   at Microsoft.RuleEngine.Policy..ctor(String policyName)
   at Tesco.BRE.Services.PolicyServices.Direct.OrderWorkflowServices.Commands.GetNextTaskList.Execute()
   at Tesco.DataSources.Integration.Common.CommandBase.CommandDecorators.CommandLoggingDecorator`1.Execute()
   at Tesco.DataSources.Integration.Common.CommandBase.CommandUtilities.GetCommandResponse[T](CommandBase`1 command)
   at Tesco.BRE.Services.PolicyServices.Direct.OrderWorkflowServices.OrderWorkflowOperations.GetNextTaskList(String currentTaskName, String currentTaskStatus, XmlDocument order)
   at Tesco.Direct.OrderManagement.Orchestrations.FollowTaskResult.segment2(StopConditions stopOn)
   at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception&

Похоже, что Microsoft.RuleEngine.Configuration.GetInt32 передается значение, которое не может быть приведено к Int32?

Я попытался отменить / переконфигурировать BRE. Насколько я могу судить, все на новом сервере настроено именно так, как на рабочем сервере.

Любая помощь, с благодарностью получить - я застрял с этим весь день!

2 ответа

Решение

Спасибо за ваш ответ, Мартин. Я сейчас исправил проблему. Проблема была в пользовательской ошибке (моей) при внесении изменений в реестр. Я должен был создать настройки reg следующим образом

HKLM\SOFTWARE\Microsoft\BusinessRules\3.0\StaticSupport (DWORD), value 2

чтобы позволить BRE использовать статические методы. Это описано по адресу: http://technet.microsoft.com/en-us/library/dd298814.aspx

Хотя я сделал это при настройке сервера, я случайно использовал строку, а не слово. Так как это стоило мне дня, чтобы понять - я не буду делать ту же ошибку в ближайшее время!

Если следовать следу стека, можно прочитать "кэш" и "отслеживание". Я попытался бы перезапустить хост и снять отметку с любого отслеживания правил в HAT.

Другие вопросы по тегам