Last monday we had an interesting meeting at the office debating the pros and cons of agile development and especially Scrum. Two weeks ago a collegue and I went to a Scrum training, which means we are now oficially Certified ScrumMasters, and last Monday we did an inhouse presentation about what we learned.
After a long session, I think we finished around 21:45, the general concensus was that Scrum can help us do better projects. It’s not for all projects, not for all customers, not for for all developers, but for a lot of projects it does make sense to use it.
For me, i think the big benefit comes from the fact that using Scrum could increase the satisfaction of the customer. It helps the customer to get the right product for his situation, ie., achieve the best business value. The Scrum process also improves the planning process and increases transparency.
Here are some links about Scrum and Agile to get you started (taken from our internal wiki):
Articles:
Books:
Video’s:
Sites:
Posted January 31st, 2007 by Andrej Koelewijn | 3 Comments »
Duncan Mills finally announced on his blog that he finished the Spring 2.0 plugin for JDeveloper (download here). The extension adds the Spring jar files as a library to JDeveloper and adds a wizard and editing features for creating Spring xml files, like XML validating and code-insight while editing both XSD and DTD based Spring file.
Posted January 30th, 2007 by | 4 Comments »
Today, I attended an exlusive Tech Session at Oracle Netherland HQ in my lovely home village De meern near Utrecht. The tech session was an introduction to Oracle new born star: Oracle Webcenter. The session was given by Rahul Patel, product manager of Oracle Webcenter.
Oracle webcenter is an integrated suite of products, mainly based on common standards, to create user work environments that tend to take advantage of SOA and tend to enable business users to bring complete context to their daily work task. Webcenter is JSF based, because according to Oracle JSF enables component-based development which is the central architectural foundation of Oracle Webcenter. With webcenter the gap between your Portal and applications is vanished compared to Oracle Portal. The reason for this is that Webcenter is a single architecture with a single web UI. This means that your portal is just a JSF page containig portlets (WSRP 1.1/1.2 or JSR-168 compliant) mixed with you own JSF components or even XHTML markup. Patel showed us how easy it is to contruct a webcenter page in the today released JDeveloper 10.1.3.2. He only uses his mouse to drag and drop a Webcenter JSF page together that contains a WSRP Adobe portlet (implemented in Flash) for searching and displaying mobile phones. Webcenter does not restricts you to use only WSRP or JSR-168 compliant portlets inside your page, but you can also use content from other systems, like CRM-systems, using JSR-170 compliant content-repository services.
Because I have a lot of user experience with the integration of Struts applications in Oracle Portal and in developing UIs for SOA architectures using BPEL as the service orchestrator, two features caught my attention during the presentation:
JSF-portlet bridge
Webcenter enables you to integrate a complete standalone JSF application as a portlet in a webcenter page using the JSF-portlet bridge. Ok that’s nice..but how about AJAX and redirects for overcoming double-submit problems? Does this work well, because this doesn’t work with the Struts JPDK in Oracle Portal? Patel told us that both aspects will work with the JSF-portlet bridge..:-)
Weaving portlets together with Oracle BPEL
Patel tolds us that you can use BPEL to weave different portlets together to create a business flow, because you can integrate the bpel webservices and task services. For example, an employee registration can involve different human interactions with several systems. You can build each human interaction step as a portlet and weave them together in a business process using Oracle BPEL. This sounds nice and productive, however, I do not have find a concrete example on OTN yet…
Webcenter contains many more nice features, like out-of-the box messaging and embedded wiki. Too much for this posting so please look here to find out more
At the end of the session the question came what the future of Portal will be. Patel emphasises that Webcenter is not Portal 2.0, but it just standing parallel to it. He also mentioned that Portal still has an development roadmap for release 11. I do not have a clear opinion about this issue, because I simply do not know Webcenter too well yet. I only can say that I was really impressed by the things Patel told and showed us in the session. Now, I have to practice for my own to see if Webcenter is really Oracle’s new born star.
Posted January 30th, 2007 by | No Comments »
Just read on Steve Muench’s weblog that Oracle has released JDeveloper 10.1.3.2 (Fix List, New features in 10.1.3.2) and WebCenter Suite.
The new features of JDeveloper include improved Portlet development support, you can now use JSF for portlets. It also includes Wizards to create Web 2.0 mashups, it’ll be intersting to find out what they actually mean by this.
Another new item in JDeveloper is Oracle MDS, Oracle’s Metadata Services. I have heard of this before, but i thought it was a feature scheduled for the 11 release.
Also included in JDeveloper 10.1.3.2 is declarative security for ADF. This might be interesting. The last time we tried to implement security on a ADF Faces application we had to custom build part of the security as the default JEE declarative security didn’t integrate well with JSF. It looks like this can now all be done declaratively.
Posted January 30th, 2007 by Andrej Koelewijn | 5 Comments »
Over at OraTransplant Wilfred has created a flash movie demonstrating the intergration of Oracle Forms and JSF (ADF Faces). I think it’s an impressive demo which shows that a seamless integration is possible. Users will hardly know that they’re use two different technologies. It also shows that a gradual transition from Oracle Forms to JSF is possible. It’s not necessary to completely migrate your Forms applications to JSF in one step, you can do it step by step.
Posted January 23rd, 2007 by Andrej Koelewijn | 1 Comment »
Just saw this announced on TheServerSide.com: gDevelop 1.0 – GWT WYSIWYG environment for jDeveloper. gDevelop adds a GWT design tab to the java source editor, which enables you to edit GWT panels like you would Swing panels. The gDevelop site has some screenshots. You can download the gDevelop plugin for free, but source code is not available. The website doesn’t mention who created the plugin, and if the plugin will stay gratis.
Posted January 18th, 2007 by Andrej Koelewijn | 1 Comment »
In the new Oracle BPEL 10.1.3.1 release release many new features are added and changed compared to the 10.1.2.0.2 version. So is the human workflow mechanism structurely changed and enriched with new features. For more info look here.
In this blog posting, I want to show how you can use JAXB to update the tasks payload to send user input back to a bpel process. In Oracle BPEL 10.1.2 Schemac is the supported tool to generate facades XML wrappers to access your payload elements easily. In version 10.1.3.1 Schemac is not included anymore and JAXB is promoted as the standaard XML binding api to access the XML in the payload in an OO fashion. Albert Sikkema has written a posting on this weblog in which he describes how you generate JAXB XML wrappers for a schema definition from Ant (JDeveloper also has build in support to generate them: tools->JAXB Compilation…, so in this posting I wil focus on using the JAXB wrappers with the Workflow 10.1.3.1 API to update the task payload.
Suppose you have the following simple payload definition:
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.org"
targetNamespace="http://xmlns.oracle.com/saySomethingToBpel10131"
elementFormDefault="qualified">
<xsd:element name="saySomethingToBpel10131">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="username" type="xsd:string"/>
<xsd:element name="userinput" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
After you have run JAXB on this schema, you will have the following four files in your project:
- ObjectFactory.java
- SaySomethingToBpel10131.java
- SaySomethingToBpel10131Impl.java
- SaySomethingToBpel10131Type.java
- SaySomethingToBpel10131TypeImpl.java
In the following code fragment the details of a task are retrieved with the task id and the payload is updated using the wrapper classes and the specific JAXB marshal/unmarshal methods. As you wil see the first child of the payload element is unmarshalled instead of the complete payload element. This is because the saySomethingToBpel10131 element is wrapped inside the payload element of the bpel task message and is thus the first child of the payload in this example (there’s no text-node for mark-up present). Also note that a new payload element is created. We can not use the old payload element due to the fact that the marshal method appends the object tree to the given node (or Element). After the update action the new payload element containing the updated saySomethingToBpel10131 node is set as the payload attribute in the task object.
//Assume that the worklist tasks are already retrieved using the workflow API
Task taskTmp = (Task) tasks.get(0);
if(taskTmp!=null){
try{
logger.info("Taak 1: "+taskTmp.getTitle());
Task task = taskQueryService.getTaskDetailsById(workflowContext, taskId);
Element payloadOld = task.getPayloadAsElement();
//The first child is the root element of the payload structure
ObjectFactory objFactory = new ObjectFactory();
Node myPayload = payloadOld.getFirstChild();
UtDownloadPayload payloadObj = (UtDownloadPayload) objFactory.unmarshal(myPayload);
//Make some random changes
payloadObj.setUsername("Tom Hofte");
payloadObj.setUserinput("Hello BPEL, You've got a message from me");
//Make a new payload object. Note that you have to use the correct namespace
Document document = payloadOld.getOwnerDocument();
Element payloadNew = document.createElementNS("http://xmlns.oracle.com/bpel/workflow/task", "payload");
//Note that you have to tell where JAXB can find the wrapper classes
JAXBContext jaxbContext = JAXBContext.newInstance("nl.iteye.remote.worklistclient.facades");
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.marshal(payloadObj, payloadNew);
task.setPayloadAsElement(payloadNew);
}
catch(UnmarshalException ue){
logger.severe("UnmarchalException occured: "+ue.getMessage());
}
catch(StaleObjectException soe){
logger.severe("StaleObjectException occured: "+soe.getMessage());
}
catch(JAXBException je){
logger.severe("StaleObjectException occured: "+je.getMessage());
}
}
Posted January 17th, 2007 by Tom Hofte | 2 Comments »
When you install the Oracle SOA Suite (10.1.3.1) and navigate to the Enterprise Manager’s Application Server Control you will hit a 404 Page not found exception.
Application Server Control has no routing relationship (see 10g3 New Features overview) with the Oracle HTTP Server by default. To establish this relationship you have to set the ohs-routing attribute to true (default false) in the default-web-site.xml file (<SOA home>/j2ee/home/config) of the home container:
<web-app application="ascontrol" name="ascontrol" load-on-startup="true" root="/em" ohs-routing="true" />
Do not forget to restart the home container to let the changes take effect.
Posted January 11th, 2007 by IT-eye Alumni | 11 Comments »
Organizations have three levels of decision making. We define the operational level, the tactical level and the strategic level. At each of those levels business intelligence will support the decision making process. It reaches the decision maker clear information about the business scope he is currently in and is able to react on.
If we look at the operational level, business activity monitoring (BAM) is a powerful business intelligence application. Its purpose is to provide (complete) information about the state of operational business processes (nearly) real-time, which enables very short reaction times in case of operational environment changes. BAM is mostly focused on internal business processes.
“Familiar” business intelligence at tactical level is the most common used business intelligence application at the moment. It mainly focuses on management information for steering the operational business processes, like weekly or monthly reports which provides the manager an overall picture of the current situation.
Business intelligence at strategic level can be seen as corporate performance management. It is mainly focused on various financial key figures and other performance indicators.
As orchestrating business processes becomes more established in businesses today, by using a service oriented architecture, business intelligence itself can be more intelligent as well.
Orchestrating business processes with a service oriented architecture moves the business data beyond boundaries of (various) monolith applications. It supports and follows the business process and enables the possibility to manage the total quality of data in a proper way. This provides a huge amount of statistic data about the business process flow, which could not be derived or merged before. All this operational data could be captured in BAM and presented in some sort of dashboard.
Using a service oriented architecture empowers organizations to professionalize their business intelligence, by growing to an intelligent level. As we look at the CIBIT Business Intelligence Maturity Matrix the highest level of intelligence will be reached if integrated information is available enterprise wide and business intelligence is defined as a service.
BAM with detailed operational process information, strategic business intelligence with aggregated information and tactical, nearly real-time, business intelligence are becoming more connected to each other due to business process orchestration. In the first place because of less divided business intelligence initiatives and applications. Those will be more process driven. In the second place because of mutual results are becoming more consistent due to direct connection between the operational process and the aggregated or composite data.
Business processes, managed by a service oriented architecture, enables business intelligence to grow to a higher level of intelligence. If that’s an organizational goal, BAM is the connector for business intelligence to meet SOA.
Posted January 7th, 2007 by Rene Wiersma | 2 Comments »
Starting to do some work-related things after three weeks off (and also because it’s a rainy saturday afternoon), I passed by an interesting article about a productivity metric that according to the author will lead to agile development.
The proposed metric is called Running Tested Features (RTF) and is based on the idea that you can measure project productivity in terms of implemented features that pass acceptance test. I think this metric can function well and will give the team leader more insight on project progress. For example, a drop of the RTF curve may indicate that tests are broken on a certain moment, possibly caused by a new implemented feature.
I can imagine that it is not that difficult to generate RTF reports during nightly builds in which unit tests are integrated. Moreover, most continuous integration tools already have build-in support to generate reports that show which tests are passed or failed.
Posted January 6th, 2007 by Tom Hofte | 1 Comment »