You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.
| Online: | 2 Members of 9413 |
Seam 3 modules are Portable Extensions to CDI, which integrate CDI with other frameworks. The modules include:
We also need to decide which pluggable Java EE 6 APIs (JSF 2, JPA 2, JAX-WS, JAX-RS, Bean Validation, etc) Seam 3 will support in Servlet/Java SE/J2EE/Java EE 5 environments.
There is a core set of infrastructure that modules will need to be completed and consistent. We want to keep this set of functionality to a minimum, but without it, modules may either providing the same solution to a problem over and over again, or worse, solving the problem differently. Here is a list of the APIs or best practices that are required:
Seam doesn't have to solve every problem in the world. Some of what Seam offers could be a collection of existing productivity-enhancing libraries (that we hand select). One example is project Lompok, which relieves the developer from having to write getters and setters by using annotation and an annotation processor. Another is a hot class reloader, which may come from another JBoss.org project. Yet another is Arquillian the test harness for Seam 3 modules and applications. These tools would be used/advocated in Seam examples.
Drools is a state of the art rules engine. Using a rules engine you are able to decouple your application code from business rules:
Drools provides:
The entire Drools API is available to you in a Seam application, however Seam allows you to easily and conveniently configure all major aspects of Drools:
Drools Expert is the core rules engine. Seam allows you to easily build Knowledge Packages, configure the KnowledgeBuilder and supports all Rule Resource Formats such as DRL (native), DSLs and spreadsheets. Having built your rules, you can easily deploy them (for example, via a Knowledge Agent providing automatic loading, caching and re-loading of resources). At runtime, you can access and query the Knowledge Session, modify facts in the working memory, access the Drools Pipeline (allow Drools to work with non Java data sources), or perform batch executions.
Drools Flow is a workflow engine that provides integrated of processes and rules. Seam gives you easy access to the build and execute work flows, as well as query the execution log.
Drools Fusion is a complex event processing engine. CE deals with the task of processing multiple events with the goal of identifying the meaningful events within a cloud of events. CEP employs techniques such as detection of complex patterns of many events, event correlation and abstraction, event hierarchies, and relationships between events such as causality, membership, and timing, and event-driven processes.
Using Seam with Drools fusion allows easy configuration of the clock, and TODO.
Drools Guvnor is a business rules management system, allows developer and business analysts to manage rules in a multi user environment, it is a single point of truth for your business rules, allowing change in a controlled fashion, with user friendly interfaces.
TODO what does Seam add?
The Seam 2 backward compatibility module enables CDI applications to consume legacy Seam components, allowing you to reuse application components written for the Seam 1 and Seam 2.
Seam's Spring integration enables CDI applications to consume beans managed by a Spring IOC container, allowing you to reuse application components written for the Spring IOC framework.
Major themes will be:
Today's enterprise world rely on often large and complex sets of business processes to sustain and grow. These processes have traditionally been captured in visually (using diagrams of various styles) for comprehension and visibility. Several standards have evolved for process documentation however until several years ago, the ability to take the diagrams from the analysts' desk to developers' IDEs was missing. With the introduction of BPM tools such as jBPM and standardized process definition semantics such as jPDL, it has finally became possible to bridge that gap.
Some of the advantages of using jBPM and jPDL include:
what to doand
how to do itconcerns
Many organizations have already taken advantage of the power and flexibility provided by jBPM. However, the integration of jBPM into many popular frameworks like Spring and EJB, has often proven challenging and cumbersome.
Seam offers substantial gains with built-in support for jBPM. The portable extension provides a set of annotation to declaratively demarcate events such as: creating of process instances, starting and resuming the execution or advancing execution through transitions. These operations typically involved writing many lines of boiler-plate code to handle references to the Process Virtual Machine. Now, with CDI programming model and Seam-BPM, one can create any POJO and let the container do the heavy lifting.
Seam integrates the RESTEasy implementation of the JAX-RS specification (JSR 311). You can decide how deep
the integration into your Seam application is going to be:
Seam offers various document management and reporting options based around JSF templates. Seam uses it's own copy of JSF, meaning you don't need to be inside the JSF lifecycle to render your documents.
Seam's Excel support allows for easy data-exporting through feature and formatting rich generation of Excel spreadsheets from xhtml templates or JSF datatables.
Seam's PDF support gives easy layout of PDF documents with JSF templates. Included is support for barcode generation.
Closely related is Seam Mail, allowing creation of JavaMail based emails from JSF templates.
Seam makes it really easy to create applications by writing plain Java classes with annotations, which don't need to extend any special interfaces or superclasses. But we can simplify some common programming tasks even further, by providing a set of pre-built components which can be re-used either by configuration in components.xml (for very simple cases) or extension.
The Seam Application Framework can reduce the amount of code you need to write when doing basic database access in a web application, using either Hibernate or JPA.
We should emphasize that the framework is extremely simple, just a handful of simple classes that are easy to understand and extend. The magic
is in Seam itself — the same magic you use when creating any Seam application even without using this framework.
JBoss ESB integration is an oft-discussed goal for the medium term (we are waiting on JBoss ESB 5). Plans include the ability to use CDI beans as ESB components (or endpoints), as well as being able to send events CDI-style over the ESB.
Watch this space!
Built on top of The Google Web Toolkit (GWT), Errai offers a seamless programming model that permeates across the client and server, and creates a whole new approach to thinking about web-based applications. ErraiBus provides common APIs across the client and server, using an event bus to communicate.
The CDI integration offers you the ability to use CDI beans as your server side components (allowing you access to aspects of the CDI's contextual dependency injection). Furthermore we aim to offer the ability to use CDI-style events inside the ErraiBus.
Seam's scheduling support allows easy job management through integration with Quartz allowing detection of already scheduled jobs, rescheduling and more. JDK timers and EJB timers are also supported for jobs requiring less options.
In the future, support for Drools timers may be added.
Environment configuration provides ways to configure the Java EE environment by leveraging type-safe Java code rather than XML. It also allows you to leverage contextual information provided by the bean container to help influence configuration.
The first example of configuration is JNDI binding. Using this module, you can designate a field value that should be bound to JNDI under the provided name, the complement to the @Resource(lookup = "...") annotation in Java EE. You could put this bean in a separate archive from the production deployment, separating the production code from the configuration without leaving Java.
Is removing pages.xml a good idea? I know jsf has metadata facets now but pages.xml lets you assign actions/parameters/restrictions etc to lots of pages at once using widcards, will there be some kind of replacement for that functionality?
Good question. I like pages.xml, but it can grow enormously and become hard to manage (even for small sites). Having a separate page configuration for each page might be overkill. I don't have that many entries, but it becomes cumbersome to find and change stuff and more error prone.
I like the flexibility of XML, but I like keeping everything in a database for generating reports later. Is it possible we can have a page entity with support for annotations similar to the way the security/identity management currently works? That way, we can define our own page entities any way we see fit while sticking to a pre-defined format / interface. Or, can a base class be provided in which we can extend?
To make the transition easier, can we have support for inserting these records into the database with a page manager which reads pages.xml or *.page.xml and creates a page entity in the db (or creates the corresponding SQL statements so this pojo isn't needed at runtime)?
Walter
Yup, Jason is thinking along the right lines - the idea is to step back a bit from the xml format...
Read about how to report a bug.
Hello,
Xml format or not, I have also the same need as Stuart : using wilcard for pages.
We have a few application using the following directives for instance :
or
<page view-id="/global/*"> <action execute="#{conversationHelper.endRootConversation}"/> </page>Will I be able to achieve the same thing using Seam 3 ?
Thanks very much ! We're eagerly waiting for Seam 3 release here.
Scheduling module should probably be included as well. Haven't look at the one in the sandbox, but here's some features that would be nice (all assuming Quartz):
Btw, how to nest bullets with this Wiki?
Some ideas for JMS
Yeah, the idea of having a SeamConfiguration that you could just inject or override would be nice. Of course, you could also have the XML at some point but that would just be for assembly of said object...
If a man speaks in the forest and there is no woman around to hear him, is he still wrong?
Good point, added :-)
I was wondering the same, I guess you can't, without resorting to html...
Read about how to report a bug.
It would be cool to have a performance module by integrating Perf4J with CDI interceptors...
http://perf4j.codehaus.org/
If a man speaks in the forest and there is no woman around to hear him, is he still wrong?
What about a typesafe solution based on annotations? I think the purpose here is to remove the unsafe expression language from our code. I think this is possible thanks to annotations and CDI. A small example:
public void homePageAction(@Observes @Rendered("/home.xhtml") View view, @HttpParam("id") Integer id) { ... view.redirectTo("/error.xhtml"); }I would like the nested conversations of seam 2 very much !
Is this functionnality inlcuded inside another item (Faces maybe)
http://in.relation.to/14435.lace
So with the above statement and with the recent acquisition of the Lincoln Baxter III (http://in.relation.to/14386.lace), does this mean the Seam dev team will actually start answering questions (consistently) in the Seam forum again???
We're certainly going to do our best!
Legendary? Now you don't hear that every day ;)