Smooks是一个开源的Java框架,用于处理“数据事件流”。它常常被认为是一个转换框架并以此被用于好几个产品和项目中,包括JBoss ESB(以及其它ESB)。然而究其核心,Smooks未提及“转换”或者其它相关的词汇。它的应用远不只这一点!
Smooks的工作是将结构化/层次化的数据流转变成“事件”流,然后交与“访问者逻辑(Visitor Logic)”进行分析,生成结果(可选的)。
那么,有哪些工作是这个工具可以完成,而sax和dom等工具不能完成的呢?鉴于Smooks构建于这些技术之上,所以简单的回答是“没有”。Smooks真正的价值在于能更方便地消费SAX和DOM(Smooks现在还不支持基于StAX的过滤器)。它提供了一个访问者API,以及一个配置模型,允许你轻易地将访问者逻辑的目标设定为具体的SAX事件(如果使用的是SAX过滤器)或DOM元素(如果使用的是DOM过滤器)。Smooks同时还以一种标准方式简化了对非XML源数据格式(EDI,CSV,JSON,Java等等)的消费,即由数据源产生的标准事件流变成了所有这些不同源数据格式的事实上的规范形式。这正是Smooks工作的关键!
Sub-task
[MILYN-219] - Dynamically discover EDI delimiters. [MILYN-508] - Generate D93A ECT and EJC arti">facts [MILYN-509] - Generate D01C ECT and EJC artifacts [MILYN-528] - Generate from D00A to D09B ECT and EJC artifacts
Bug
[MILYN-432] - When a PayloadProcessor is used with a NORESULT resultType and a HTMLReportGenerator is set then a NullPointerException is thrown [MILYN-434] - ECT UN/EDIFACT generated models seem to have the wrong component delimiter [MILYN-435] - ECT UN/EDIFACT generated models seem to have the wrong truncatable value for some segments and fields [MILYN-437] - ECT generated model xmlTag attribute values can contain invlaid XML element name characters [MILYN-441] - SegmentGroup fails when only first segment exists in message. [MILYN-443] - Namespaced attribute <jb:value> binding selectors not using the namespace part of the selector [MILYN-444] - Support for default values is broken [MILYN-445] - Failure on Classes in Packages with Underscores [MILYN-449] - ConfigSearch class matches() method not matching properly [MILYN-451] - Beans not returned in JavaResult if BeanContext is created before call to Smooks.filterSource [MILYN-463] - Con
current modification exception can happen when multiple threads are adding beans to the BeanContext [MILYN-475] - Invalid regex for matching normal segments in UnEdifactMessageReader (ECT) [MILYN-481] - ECT can generate models that include duplicate element names on a given type [MILYN-482] - Wrong behavior of EDIUtils.split [MILYN-483] - Create support for parsing D93A specification in ECT. [MILYN-488] - org.milyn.util.ClassUtil#getClasses causes performance degredation for the application [MILYN-499] - Issues with D97A UN/EDIFACT directory processing [MILYN-504] - UnEdifactMessage using Java 6 methods [MILYN-505] - D93A.zip not commited for UN/EDIFACT tests [MILYN-507] - IInterchangeTestUtil uses method not supported in java 1.5 [MILYN-510] - EJCUtils.encodeClassName and EJCUtils.encodeAttributeName not properly encoding Java Identifiers [MILYN-512] - ECT - Unable to generate mappingmodel for UnEdifact D01C. [MILYN-521] - JMSRouterTest intermittent test failure [MILYN-529] - Error generating UnEdifact D94A, D94B, D95A and D95B specification in ECT [MILYN-539] - Smooks
OSGi classloading issue [MILYN-547] - Building using a clean mvn repo fails