我在地图中使用脚本functoid。我使用可序列化类的外部程序集辅助方法配置脚本functoid。我注意到map第一次执行时会调用外部程序集中定义的Serializable helper类构造函数,而我是init。类成员的默认值并按预期工作。
在下一次/第二次运行中,类构造函数不会被map调用,并且类成员在上次执行map时保持值设置。我在编排中使用地图,我的编排不是singelton。因此,在第一次执行我的地图后,助手类每次都会向脚本functoid返回相同的值。
请帮助我在每次执行地图时如何强制biztalk创建地图辅助类的新实例???
答案 0 :(得分:0)
BizTalk运行时缓存给定地图类型的扩展对象实例。只为每个使用它的主机实例调用一次构造函数。
但是,您可以为地图助手创建工厂类。从脚本functoid调用此工厂类,并将输出链接到内联C#functoid,该对象将对象存储在地图中的实例字段中。您可以在其他脚本functoid中引用该字段,该字段需要在您的帮助程序上调用方法。
答案 1 :(得分:-1)
请参阅有关Biztalk external assembly calls的帖子。您不能拥有静态类 - 辅助方法必须是静态的,但您需要每次在静态方法中执行初始化。这是为了在补液/脱水过程中进行状态管理。