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.