Tuesday, April 15, 2008

5th Sprint Summary

Last week we finished our 5th sprint.

In the last sprint Ikram was trying to build the GUI for the control panel. So it would be possible to add/remove projects without getting into the XML configuration file. It's also possible to modify the project information (project ID, name, etc) as well as the query to get data from the database.
The plan is also to enable add/remove existing components. It should be possible for the admin to choose which components to be displayed.



And last week I was struggling to adjust the design. The initial plan was to make ActionScript (Actionscipt) classses that mapped CFC objects (remote objects). The properties of the remote objects therefore can be easily accessed from the AS classes. I have read lots of information from Forta Blog, Jeffry Houser Blog, and this simple checklist.
But it didn't work... -_-!

I don't know why the mapping didn't work. It seems Flex recognize the AS object as a common object, and not a mapped object from CFC. The temporary solution is to use ActionScript class as a static object that can be shared within the MXML classes.
But later on, we need to tidy up and do some refactoring, because I believe this is not the best solution that we can do.

Another design issue is about the Project Overview page. This page should calculate and display the score of each project. We were trying to use a global actionscript class that hold all the data from various remote objects. But since the mapping doesn't work yet, and using the static object will make it worse, our Scrum master suggested KISS (Keep It Simple, St**id!) ^.^ by getting the data directly from remote objects. We were a little bit reluctant at the first time, since we need to call at least 3 remote calls to the database. But actually, we do the same thing for every page, so there would be no different! The data wouldn't show up immediately, there would be about 2-3 seconds loading time, which is quite reasonable for 30-40 seconds interval time per page.

Project Scoring
Yesterday, Ikram finished with the logic for the project scoring. He already passed the most challenging part -- getting the component data per project and convert it.
Last time, we were struggling to get the project info using remote calls. The remote call was successful and we place the value into a local variable. But strangely, if we call the variable in the init() method, it returns 0 or null. We have checked that the remote call is called before we use the variable, but it still returned 0.

Ikram came with the solution by moving the RemoteObject tags before the Script tags. We don't really know why it works, since the remote call is still called within the script tags. Probably, the RemoteObject tags have something to do with establishing remote connection. We are not quite sure .... but IT WORKS !! :p

Tuesday, April 8, 2008

Ruun!!

Today I finished the component tab of the configuration panel. I had the first tab (project) that has the add/remove project functions which are reading and writing to the rootProject.xml file (This file is a metadata for the project names on the display). the component tab at the moment is only showing the components information (dbname, query, projects and their services) retrieved from the catalog.xml file. Implementation of adding/removing a component is currently being postponed until we renewed our design of creating components. Tomorrow I will move on to implementing the algorithm for the projects scores.
Today, Lisa had finished extracting the data from the nightly builds database. Having this, we have actually completed our target for the components to display. Next step is to improve our design and implement the add/remove function to the configuration panel. We are running as fast as we can to get most of the sprint goals done before Friday. We'll keep you posted! ;)

Monday, April 7, 2008

Sprint #5

Its been quite a while since I last posted. I have been quite occupied working on an essay for my master's application. Its been taking my sleeping hours, but finally it was done last Friday.
As for the PRIMA project, the past week we have been busy working on separate tasks. Lisa was working on displaying data of an .xls (MS Excel) file, which is apparently our datasource for the "Hours: planned vs. actual" component. There was an access restriction that we could not get through from the database administrator for the actual (Artemis) database, therefore we were given an excel sheet that is updated daily, and posted on the sharepoint. However we have the following problems:
1. The Flex DataGrid component does not support excel file as data source.
2. Security (since we cannot automate the authentication&authorization process from sharepoint).
We had managed to solve the first point using a ColdFusion component developed by "www.bennadel.com" called the "POI to write and read Excel file" (http://www.bennadel.com/blog/474-ColdFusion-Component-Wrapper-For-POI-To-Read-And-Write-Excel-Files.htm)
The second problem has not been solved at the moment. We have tried to share a folder on the network for the responsible people to post in the excel file. However, it turned out that it, too, needs a login. It has been a few days since Lisa started working on that, so it is time to switch our focuses on to the next sprint goals (we are now in sprint #5 by the way). Lisa is now working on getting the nightly builds data.
I, on the other side, have been busy working on the "Control Panel", which will be the configuration point for the projects/components that will be shown on the screen. Since our metadata is written in 2 XML files, the idea was to create a GUI for the administrator, so when desiring a change, he/she would not have to go find the actual XML files and edit it, but instead changes will be done comfortably from the GUI.
In the beginning I had some difficulties trying to write the XML files from Flex. After being stuck with it for 2 days, I turned to look for other media to do the job. Turned out ColdFusion can do this EASILY.. I was quite embarrassed when I found out about this, because ColdFusion has been there as our data source connector since the beginning... anyways the following is a snippet of writing an XML file from flex application using ColdFusion class.
The XML file:

<?xml version="1.0" encoding="UTF-8"?>
<projects>
<project>PRIMA</project>
<project>Test1</project>
<project>Test2</project>
<project>Test3</project>
</projects>

in the ColdFusion file, I created a function something like the following:

<cffunction name="saveXML" output="false" access="remote">
<cfargument name="projectsXML" required="true" type="XML">
<cfset xmltext="TOSTRING(#projectsXML#)">
<cffile action="write" file="<yourXMLFileDirectory>\ds-testproject.xml"
output="XMLText">
</cffunction>

This function will basically take its parameter (an XML object) that I will pass from the .mxml file, and convert it to string, and then write that into your xml file.
And finally in your Flex .mxml file:

<!--create a remote object of the function you created in the ColdFusion file-->
<mx:RemoteObject
id="saveDataChange"
showBusyCursor="true"
destination="ColdFusion" source="TestProject.components.cfgenerated.TestPage">
<mx:method name="saveXML" fault="server_fault(event)">
</mx:RemoteObject>

<!--create an XML object-->
<mx:xml id="projectsXML" format="e4x" source="../src/ds-testproject.xml">

I also created an XMLListCollection and a DataGrid for displaying the data. A form for adding new projects (containing TextInput's for the attributes needed in the XML), and in an mx:Script block, I wrote the functions that are handling the events of buttons for removal and addition to the projects, and after I modify the XML object that I created with a new input or deletion, I send the modified XML object back to the saveXML() function. Here's how I implemented the action for delete button event:

private function deleteSelected():void{
delete projectsXML.project[myDataGrid.selectedIndex];
sendXMLChange(projectsXML);
myXMLListCol.refresh();

Thats it.. now I am expanding this for adding/removing components shown on the screen. We have talked about this, and we think we might need some changes on how the components are created before we can actually implement that feature (add/remove) for configuration. Since then, I will only start with displaying the information of the available components, and then I will move on to another sprint goal: implementing "Ronald's Magic Algorithm" for the project score ;).
Thats it for now, we'll keep you posted with our progress!

Tuesday, March 25, 2008

White Easter!

Just passed a long weekend of Easter holiday..!!! And it was a white Easter! Even this morning was snowing hard.. it was beautiful, I love it....love it love it!

Last week before the Easter holiday we were busy with the smileys! We supposed to put smileys beside the project score. We almost spent 4 days for this feature! And finally we succeeded with the help from our colleague, Yuri Vrancken.

Originally, we planned to put the smiley in the Bar Chart of our the project score, just beside the score. We have tried using the Grid, ItemRenderer, chart annotations, etc and it didn't work. After 4 days-struggle, we decided to have another data grid just showing the project name and smileys. We realized that customizing a chart is possible but require lots of work. And we don't want to waste lots of time in this feature since we have a long list of features to be implemented.

So, we decided to use a two-column datagrid, one column for projectname and the other for the corresponding smileys. To be able to insert an image into a datagrid, we need to use ItemRenderer. The trick is to specify in the datagrid that it would render an image.

Here is the snippet of our datagrid code:

mx:DataGrid id="dGrid1" dataProvider="{scores}" width="100%" height="100%"
mx:columns

mx:DataGridColumn headerText="Project Name" dataField="Project"
/mx:DataGridColumn

mx:DataGridColumn headerText="Well-being" dataField="ImagePath" itemRenderer="mx.controls.Image">
/mx:DataGridColumn

/mx:columns
/mx:DataGrid



And the datafield of ImagePath is a column of an ArrayCollection contains the path of where the image is located.


[Bindable]
private var pathString:String = "../src/images/Smiley_";

if(scores.getItemAt(f).Score<=30)
{
scores.getItemAt(f).ImagePath=pathString+"sad.JPG";
}

Monday, March 17, 2008

Flex builder 3 licenses

Last Friday we had our first presentation in front of the Java Domain department. Fortunately everything went quite alright, and our manager was happy. So it was a good day to end the week. At the end we also mentioned about the monitor which is still absent ;P Looking forward to seeing a big flat screen hanging (with our project on) at the office ;).
This morning, we got a surprise by Eclipse as we turned it on. It had given us the pop up message we never wanted to see.. it says: "Your trial of Flex Builder 3 has expired. Enter your serial number to continue using Flex Builder."...... oh, this is a breaking news: Just got a call from Mr. Scrum master, tomorrow we are getting the magic credit card from the big boss, Ronald for us to purchase the builder online :D

Today we have been writing our final report, and have sent a draft version to our school mentor, Theo. The sections covered till today are: 2. The Company, 3. The Assignment, and 5. Proof of Concept. At the moment, Lisa is writing section 4: "Scrum Methodology", and I am working on section 6: "First Iteration".

Last Friday, we have listed our next sprint goals, which is a HUGE one, including the following:
1. Smilies! (next to the BarChart of the overview page)
2. Nightly builds/test coverage
3. Hours Estimation (planned vs. actual)
4. Project realization percentage (the "score" for project overview based on Key Performance Indicators)
5. Responsible people
6. Employee presence
7. Happy rating
8. Domain plan realization percentage

*sigh* thats a long one. I hope we can sort out the licenses tomorrow and go back to our project soon.
Our primary objective after we get the licenses: embed the SMILIES! (looks like we are going to have to extend the BarSeries class)
busy busy busy!... i mean... GOOD BUSY! (the new word around the office) -- you wouldnt get this unless you know Dutch ;P
PS: Happy birthday to my sister, Alia! :D

Wednesday, March 12, 2008

Windy days

Flex/ColdFusion+windy days = not a very good combination.. but things are going great though. aint no wind cant take us down! ;)
Yesterday we successfully completed all of our sprint goals. Victory was ours when I fixed the CFC method invocation issue. The problem were the following:
-There should be no white lines within the xml file
-New object of the component Project_Info.cfc (the global CFC file) has to be instantiated first before invoking the method
-When parsing the xml, wrong hierarchy was called to retrieve the component name
-Probably other syntax errors
With that being fixed, the database queries as well as the metadata are all located in a single xml file (sweet! ;) )Lisa has been doing great as well as she had managed the components' cycle. So now the application is using only one xml (also means that services are now categorized per project), and application cycles between overview, and components per project (double sweet! :D)
So next goals:
-retrieve project names to be displayed on to each component
-figure out how to embed smilies into a barchart (for project overview)
-display test coverage (nightly builds)
By the way, my neighborhood is packed at the moment as PSV is playing against Tottenham Hotspur now. Apparently its an important match, and PSV is about to lose as we speak.. looks like there is going to be some vandalizing around here tonight ;P Hope the wind will still be as hard as earlier so they all would go home directly after the match :)

Tuesday, March 11, 2008

it's time to go deeper.....

Hello again...
It has been almost a week, we couldn't get time writing the blog. Recently, we were busy with all the documentations about the technical design.
We found it very helpful that we made the design after having Proof of Concepts and implementing some simple functionalities. By doing this, we know exactly how the flow is going and how to apply our project into that system. We also already discovered some possibilities (and impossibilities) Flex/ColdFusion application.

I like this method of working (implement some proof of concepts before start designing), it made the design much easier because I already got something in mind how this really works! It's pretty cool and it works for me...

Anyway, here are some major things we did:

1. GUI
We decided to have two states in the GUI, which refers to 2 MXML files. The first state is for the Project Overview and the other one is for the Single Project screen. The states will change from State 1 to State 2 according to the timer. In the state 2 itself, different data will be pulled for one certain project for each timer tick. When all single projects are shown, it goes back to the state 1, Project Overview and then go cycle.

2. Class Diagram
Each GUI Component (MXML file) has a remote object to handle the communication with the database. The remote object is a CFC file (coldfusion component). In this CFC file, all the queries from database are handled. The CFC file returns a query to be displayed.
There would be one global CFC that handle configuration from XML file (as already discussed in the last posts).

We also plan to have some ActionScript files that map particular CFCs when necessary. Having ActionScript files would be helpful when we need to get/set and process some data from the database without touching any remote objects (CFC files).

3. Sequence Diagram
We also made the sequence diagram for the general flow of the application as well as more specific sequence diagrams that define the flow per class/component of the application. At least we have two flows of the application. First, it's the initialization of all components. And once it's started, the pages will cycle according to the timer for infinite time.

Today, Ikram is still fixing the XML errors. I am going to implement the code for page cycling and later we will talk about the presentation. Next Friday we need to present our projects in our department meeting. It would be a short one, only 10 minutes. And probably we will show lots of screenshots to get the whole department excited!

Wednesday, March 5, 2008

So little time so much to do

As stated on our last post, we were having problems making comparison between query from an XML file with a database query within a CFC document. Turned out the error was caused by the datasource driver that we were working with. The sonar database is using Apache Derby database. Meanwhile, the other datasource, JIRA, is using PostgreSQL database. We implemented the same technique that we did on Sonar to JIRA, and apparently it worked.
We have discussed this to Michel, and we agreed that we will leave the code coverage as it is now (showing all the projects) without categorizing per project. There has been a desire to migrate the database to another driver, but Michel just has not got the time to do that yet. If Sonar database gets migrated, not only that it will solve our categorization problem, but we also desperately hope that it will improve the performance of loading the data to display. Here's a little picture of us discussing over some very complicated matter ("seems like") with Michel, taken by our sneaky Scrum master, Eric, who is by the way, back after being a paint guy for 2 weeks ;P

Anyway today, Lisa and I divided parts of work to do. She was looking into implementing the timer for the page cycle, meanwhile I was working on transfering both the categorization and the sql query into XML, load them up on CFC to be executed, and pass the data to the view (Flex's mxml files). Fortunately it all worked out pretty well, the CFC class for JIRA (bugs and tasks) is now loading the query and the services categorization from an XML file. I reckon this would be quite handy when thinking of scalability, because when new projects or services are coming, developers can easily edit the XML file without having to touch the code on the CFC (atleast that's how I imagined it would be ;P). I am not so sure how far Lisa went today, but yesterday she had managed to get the timer working for a component. Till early today, she was working out a way to make the timer works for one page (cycle all the components together).
Apart from implementation, today we also had our architecture document approved by Michel. And yesterday we had a discussion with Angelo regarding sequence diagram and use cases, and he thinks making one use case is enough. We already have one sequence diagram, which he also approved, so as far as project documentation concerns, use case is the only thing we need to work out.
Today we also discussed that we have a number of other things to do such as: Final report draft (for school) and presentation preparation for the next team meeting on Friday next week (scary..!). I myself am quite busy off the office as well (master application package, moving planning, summer planning, etc). Hence, the title: so little time, so much to do... go go go

Monday, March 3, 2008

Sprint #3

Last week we had ended our 2nd sprint with our application showing the code coverage and issues (bugs and tasks).

We have managed to display multiple components on one page (model-view) and do a multiple database queries in one component. These view of components are however still global (showing all the projects). Until last Friday, we were still struggling to manage the categorization of the services (which service belongs to which project). We have made two .xml files as the map (one for Sonar, the other for Jira), we query these xml's and compare them with the database query to categorize the output. All this commands are done within the CFC files (ColdFusion). If there are any changes to make in the future, we hope that these xml files would be the only ones to be configured (maybe later on, if we still have time, we'd also like to make some sort of a GUI, so the administrator wouldn't have to go directly to the xml files him/herself). We are pretty sure that we were so close on Friday. We were getting these strange SQL errors (actually im not sure its SQL or CF) saying: "Encountered .. " (dot dot) "Incorrect Select List, Incorrect select column". We still have NO IDEA why we are getting this error, but once we get this sorted out, we can then proceed making multiple views (per project) and manage the cycle timer.
As for today, we are going to start by completing our documentation (architecture, use cases, etc.), and later continue to find the solution to our "weird" error and start immediately with the 3rd Sprint!

Btw, I got myself a new bike on Saturday, so no more missing trains by seconds ;). Oh and I spent "movie marathoning" on Sunday, so here's some recommended movies: "There Will Be Blood", "Michael Clayton", "The Assassination of Jesse James by the Coward Robert Ford" and "In the Valley of Elah". hehehehehe...

Thursday, February 28, 2008

Flex Architecture

This morning was a long day of traveling. Ikram's bike was broken, so he couldn't catch up with my train at 8.17. Unfortunately, something was wrong in my train.. it stopped several times and ran very very slowly. I really got a good extended-sleep there hehehe :p
After about 1 hour in the train (30 minutes late), finally I arrived at Den Bosch Station... and of course my bus wasn't there... got to wait 20 minutes for that and ..... finally i'm here at the office at 10.15... !!!!! -_-!
while ikram probably is on his way coming here....

Okayy... anyway back to the PRIMA project....
Recently, we were busy with the architecture and implementing the architecture. There was not much picture that we could find to describe the architecture of Flex. So we just made up some pictures by ourselves and discussed it with our colleague, Michel. He helped us a lot defining the architecture using the terms layers and tiers.

Here's how he defined it:
- layers are a logical separation of code. For example the MVC pattern for presentation: you separate model, view and controller programmatically, but they all exist within the same (presentation) tier.
- tiers are a physical separation of application functionality. Most common tiers (from front-to-back) are: Client tier, Presentation/Web tier, Business tier, Integration tier and Resource tier.


For the presentation layer (Flex application), we use the MVCs pattern. There are two good guides from Adobe about implementing MVC in Flex: An Architectural Blueprint for Flex Applications and Architecting Flex Applications. And there's also the source code that can be downloaded: Phone Sample

Yesterday, we started to apply the MVCs pattern into our project. We were still in the progress of understanding how the model class (ActionScript class and ColdFusionComponent-CFC) and the view class (MXML file) relate to each other. We are not sure whether we need to have the AS class for the CFC mapping or not. Our AS class consists of the CFC mapping and that's all. What we understand is that using AS object we could easily modify the data without going through the SQL database. In the case of our project, it's about presenting data and not adding/modifying data, therefore probably we don't need the AS class at all. However we need to investigate more about the possibility of using only CFC as the Model class.

Anyway... we just found out that the Flex 3 was officially released last Monday with the price of €593.81 for the full version of Flex Builder 3 Professional.

I think I need to go back to my Flex Builder .... and ikram is here already... and maybe he wants to add something later....

we'll keep you update!

Monday, February 25, 2008

Monday morning

Typical Monday morning, woke up lazy... late, rushing, just in time.
Got in the office, Mischa greeted me and said: "Check your inbox, there is an important email!". I was a bit surprised, I thought I had messed up the office's network or something (I had this experience before, as there was some spam in my gmail that got circulated to some colleagues, even to my manager and some colleagues abroad! :O). Turned out I was the winner of last weeks Football pool! :) those were pure lucky guesses though. And apparently it is not something to be happy about, since I have to organize the next poule.. yet I know nothing about football! :P Wish I could start a basketball pool, they said i can organize anything I want. But I thought it wouldn't be wise as the others don't know anything about it, so I decided to stick with football (ehm soccer......:P). So next matches to bet: Tottenham vs PSV and Glasgow vs Bremen.

Back to the project, last week we have been working out some objectives for the second sprint. We have narrowed down the "to do" list we had with Eric before he went on holiday for his new house. Initially the list consists of 7 points, and we've done 6 so far (roughly), but the last one would take up to a week. The "to do" list is:
-Licenses
-Development environment Lisa
-CVS setup
-Investigate GUI(UID)
-Documenting the process (school): Start with the intro, Tooling choices (what?, why?)
*Original 4
*Why down to 2
*Why Flex
-Design documentation: Use cases (db location, access, display), Realizations (UCR) work up to design
-Build it!

On the previous post, I had mentioned that we contacted a guy from Adobe about the licenses, and so far we have no more problems with the watermark on our charts, but the official release date of Flex 3 builder is still undisclosed. We had asked him about it, and he simply replied: "Soon :-) Sorry, can't say more."
We have also set up the environment for Lisa. I myself have started over a clean installation of Apache and ColdFusion server. This time we did not include the installation of LifeCycle DS, since there is BlazeDS, which is open sourced.
We have also talked about how we struggled sychronizing our projects through the CVS. The solution we took was to just share the whole project on the CVS, but in developing, we will only check out and commit the .mxml files that we are working on. That gives us the freedom to test our changes locally on our own machines, and somebody else can still check out the whole project, fully working, without changing any configuration.
On Wednesday we further investigated about the ongoing projects and the desires of information from the project managers. We found out, that there are 3 main projects going on, and all the other projects fall under the big three. The tricky part is that some these subprojects within one main project are part of the other main project(s). And the difficulty for us is that there is no categorization within the databases of the tools they are using. I guess there will be no easy pizzy for us :P.
Other than that, we have completed our documentations so far. We've got a tool research document, an architectural design, a document of User Interface Design (draft). However, we still need our Scrum master substitute (Michel de Blok) to check them out.

Today I am working all by myself. Lisa is off today as her friend (*wink*) is coming over from Germany ;P, and Michel is apparently ill today. Guess i'll sneak out the office early today.. like.. after lunch!.. oops Eric is probably going to read this so I'd better keep it down ;P. Naah nah, we have so many things to get done in a week, so I'm going to be responsible ;)
Anyways, today I have listed down my own planning of the day:
1. Explore BlazeDS
2. Architecture OK? (I guess this is not possible today as Michel is not around)
3. Explore JiraDB and work out a possible query
4. Try to get another page for the application and get them cycling around (i'd prolly have to check out some Slideshow application tutorials)
We decided on Friday about exploring BlazeDS today, because I noticed that when I was still using the LifeCycle DS for the demo, the loading time was so much faster than what we have now (only using CF and Flex data services). BlazeDS uses binary data transfer format, allowing better performance in our data-driven application (hopefuly! ;) ).
Oh, by the way, eventhough it is not listed in our sprint list, but there is something that has been buggering me: the scalability of the application. So far we are just planning and building the application to view the current ongoing projects with certain components to show, but in fact it should not stop right there. We also have to think about the future projects and future desire of more/less components to show. I think we have to discuss this further with Eric when he's back, for now I'll just focus on our Sprint log.
Okkaay... back to work.........!

Tuesday, February 19, 2008

Synchronization

After the first sprint, we had our decision to go along with through the rest of the project: Flex 3.
So we started off the week by setting up the environment on Lisa's machine, as she was not working with Flex before. Besides installing the Flex 3 Builder and ColdFusion plugin on her Eclipse, we also installed Apache HTTP Server and ColdFusion application server. After that we deployed our code coverage demo on the new web server. Oh by the way, we emailed a guy from Adobe to ask how to at least get rid of the watermark on the charts of our demo (we cannot purchase a license for Flex 3 builder yet, because apparently it has not been commercially released yet :S. I wonder why they already have a trial version out). Anyway, the guy provided us with a license number which had manged to help us get rid of the watermark. However, the guy did not indicate when the builder will be released commercially.

Yesterday we had our own CVS and JIRA accounts set up. But so far we are still having difficulties trying to synchronize our work together. Everytime I try to test my changes, it always goes to the actual server (on Lisa's machine) which has not got my changes committed :(. This has been annoying us the whole day. Oh we also encountered a bug from ColdFusion wizard: every time we try to put our "to be created" project to a shared folder, it throws an error message saying that the project is overlapping with another one (which is not true, in fact, we deleted all the other projects in that same folder) . According to our research, many people have encountered the same problem, and it is considered as a bug. Eventually we decided to just go on with a local folder, and that solved the problem.

Today we were looking into coloring the barchart with gradients depending on the percentage of the code covered per project. Lisa, had created a patch that does this automation, so that if a code coverage of the project is above 60%, the bar will have short red, orange, and mostly green. If it is in between 30-60% it'll have red and orange, and if it is below 30% then it is a solid red.

As for the synchronization problem, it is still remain unresolved, but tomorrow we are going to try to create a clean new project for the CVS, forget about the shared settings that we configured earlier, and set up everything locally for the development machines. I am also planning to take a look into how to cycle the pages, and to extend more pages from the demo that we had.

Btw, just got some pics of my newly born niece from Jakarta.. Her name is Rania, she still pretty much only cries and sleeps... :)

Sunday, February 17, 2008

Flex 3 Builder with Charting.....

The last 2 weeks, we have been busy with the two prototypes using Flex 3 and JBoss Portal. We have been able to create a demo using Flex 3 with charting. In the demo, we are able to show the percentage of Code Coverage of the on-going projects in the Java Domein using pie charts, bar charts, and table which are connected to each other. Using Flex 3 Builder with charting, it's not that hard to make the page looks fancy, flashy, and colorful. The graphs and charts are generated by the Flex 3 Builder. Though we need to add some ActionScript by ourselves to interact smoothly with the users. We are very happy that everyone seem impressed with our demo :D

On the other hand, data visualization using portlet in JBoss Portal is not its strong point. We need to install some extra libraries and do some coding in order to generate charts. JBoss Portal is not specifically intended for fancy data visualization. Its strong point is in the diverse information that can be displayed in one page using several portlets and flexibility of user interactivity.

Since, the PRIMA project is focused on querying data and display it with an eye-catching GUI, we proposed to use Flex 3 for this project. Our mentor, Eric, is happy with our choice and encouraged us to keep going with the next sprint.

Last Friday, we were succeeded setting up a Web Server using Apache -- Coldfusion for our Flex 3 Demo. The webserver is installed in Lisa's virtual machine. You can check it out here: http://dbov1904.bank-o.o:8080/testColdFusionFlex/bin/main.html

We are on the investigation to buy the license for Flex 3 Builder with charting. From the Adobe store website, we only found the the previous version which is the Flex 2 Builder with charting. The Flex 3 demo we had was built using the trial version of Flex 3 Builder with charting which lasts for 90 days. Anyway, there is a watermark text saying "Flex Data Visualization Trial" in the demo that we couldn't get rid of it. We have contacted Adobe for the possibility to remove the watermark and also to buy the full version (license) of Flex 3 Builder with charting.

Anyway... last Friday, I "unconsciously" left my LG-Viewty phone in the bus... and miraculously was found by the bus driver whom later gave Ikram a call to pick it up! I would never wish that this kind of honesty ever happened in Indonesia... hehehe... Holland rocks! ^.^

cheers =)

Wednesday, February 13, 2008

Interests rising

As we figured out data connection to both Flex 3 and JBoss portlet, we proceed to visualizing the code coverage data we extracted from Sonar and gave it a try to transform that into graphs/charts. Yesterday I have managed to create a Flex application with horizontally parted grid. On the top a splitted grid with a pie chart on the left and a data grid column on the right. And at the bottom is a bar chart. All of them showing the code coverage data obtained from Sonar using data connection made possible by RDS. Creating the graphs and charts is quite a simple task in Flex. The only problem for me is that I have no experience programming mxml, and there are so many library classes I can use, but dont know what their properties are and how to use them. Anyways, soon as all three images with the data are shown, I went on looking for some tutorial on creating events so that I can communicate between the three and create some kind of highlight and click events that affect all of them once one part of them is clicked.Fortunately I found an example that shows a very similar idea, so I picked that up and put the events and their effects to be applied in my application. I had some struggles, but eventually I made them all working properly. Only there was a problem with the effect from the bar chart which was not highlighting the bars correspondingly to the others, but I immediately found the cause of this, which was the calculation of the action was pointing to a wrong order of array (my array starts from 0, and the calculation was pointing to 1), so that was solved pretty quickly. Another desire that I wasn't able to work out was to smoothen the animation of the pie chart when it is being clicked. I thought it was because I didn't have the correct library for the effect, or because I am using the trial version of Flex 3 builder. But today I discovered that it was just a misplace of property use in one of the pie chart series I had. I investigated some more evidence and solution, and solved that one out before going for lunch today. On the other side, Lisa, who had also successfully showed data to a portlet with text, was struggling creating her portlet that is showing the data represented by graphs and charts. She had imported a library for displaying charts and graphs, but every time she's building the project, she gets error messages saying that the library package could not be found. We have not been able to solve this problem until the end of the day :( .
By the way, we had our school mentor visiting us today from fontys: Theo Cats. The meeting went well, we discussed many things............ Anyways the funny thing was, when the meeting had ended, I was asking some people to get them anything to drink, and it turned out that Marco, was an ex-student of Fontys and he actually recognized Theo Cats! (Wow! Theo must have been working in fontys for EVER ;P). At the end of the day, as I was chatting with Yuri Vrancken and Jan Kees van Andel who were curious of how the project is going, I ended up showing them the application that I've developed till now. And relievingly they commented: "Oh...thats pretty coool!". (the picture below was taken by Eric, who was sneaking behind us to capture spontaneous reactions of Yuri and Jan Kees)
It is nice to know that the other people are actually interested in our project and are expecting good stuff out of it. Before we went back to Eindhoven, Jan Kees lended his Flex 2 book to me. I reckon that will be very useful for us as we go on.
So next: end of sprint #1 - TOMORROW! wonder whats gonna happen.......

Monday, February 11, 2008

Finally.. some light...

After a week of struggling with Flex 3 data communication and creating JSR-168 portlets on JBoss platform, we finally see some light. Last week Thursday and Friday we had spent on researching on how to create a data connection in Flex 3 and in the JBoss platform. However both of us did not succeed yet, until today when I stumbled upon this presentation file during a research through Google (apparently from someone in Michigan State University). The presentation describes the various ways of data communication in Flex, which most of them were already discovered during my investigation last week, but they were not relevant to our project since they are all suggesting to connect to a data source via HTTP services. Anyhow, as I was reading through the presentation, it eventually went on explaining how to connect directly to a database using RDS from Adobe's ColdFusion. Soon as I got someone to download the ColdFusion 8 installer and the ColdFusion extension for Eclipse (which luckily are free) , I went on playing around creating a project. I was pleasantly surprised at how easy it is to create a data source to be included in a Flex 3 project (which had been my headache for the past 5 days). However, in order to have the data source visible on the data explorer feature, I had to enable first from the Eclipse side to recognize the ColdFusion Server that was just installed (which was easily done by setting up the RDS configuration within Eclipse). Next was to create a data source in the ColdFusion application server. Now there I had a problem, because for some reason it kept on giving me an SQL time out error when trying to validate the configuration. I consulted this to Michel de Blok, and he was able to find out the cause of this which was the database driver (derbyclient.jar) in the lib folder of the application server that was not valid to connect between the Sonar database (using Apache Derby Client) and the ColdFusion environment. The solution was to download the newest version of this driver class. After successfully connecting the datasource on the application server, I went back to Eclipse and started creating a ColdFusion/Flex application to display the code coverage of projects within the SNS Java Domain. First try was not really smooth, and I was getting irritated as it gets late, but the patient, Lisa advised me to take a step back on the SQL query to just do a simple one. It worked! So I re-do the query to match our formulated query that we had derived on Friday (which gives the project names and the latest code coverage values), and BAM! it worked! :D
On the other side, Lisa also came up with a good news as she managed to established a data source connection in JBoss and created her first database-driven portlet that is able to show data from the Sonar database!!. These findings are a huge step for us, because now that we can connect to the data source and show the data, its just a matter of beautifying the appearance before the first end of sprint.
At the end of the day, although we went home a little later than usual, it was worth it and we traveled back to Eindhoven SMILING :D :D

Tuesday, February 5, 2008

deploy.. deploy...

There were two things I tried to do today:

1. Install Kosmos portlet to JBOSS Portal. This portlet can be used to visualize data from JIRA tool. 2. Create my own portlet by following the Portlet Tutorial (http://wiki.opensymphony.com/display/WW/Portlet+Tutorial#PortletTutorial-intro)


Unfortunately, I wasn't able to deploy them successfully (yet). Here are some problems I got:

1. Kosmos portlet
In the reference manual I have (http://labs.jboss.com/kosmos/reference-manual.html), there are some steps to deploy Kosmos into JBOSS AS and Portal.
The order of the deployment is:
install JBOSS AS --> deploy Jakarta slide (slide.war) --> install JBOSS Portal --> run server deploy script --> run portlet deploy script --> launch JBOSS As

But since, I already installed the JBOSS AS and Portal, I jumped into deploying the Jakarta slide (it seems this Jakarta project is already frozen since early 2007) by copying the slide.war file to pentaho\bi-server\jboss\server\default\deploy. I don't know if this different deploy order could lead to problem or not.

I got no idea about the next step of running deployment scripts. But later I found the description of the server and portlet deploy scripts. I put those scripts in the same folder as the slide.war.
then I built it using cmd, the build failed due to wrong reference of tag inside the xml file. And I can't figure it out yet what should be filled in inside the tag
** I still got to study about Java stuffs I'm not familiar with, like: ANT, WAR, XML (I only know a bit about XML) T _ T

2. Portlet Tutorial
I followed the tutorial carefully and got no problem with that. The problem arose when I need to make .war (Web ARchive) file. In the tutorial, it said I could just zip the WEB-INF folder, and name it as "MyPortlet.war"
I did make it and deploy it to the JBOSS server (
pentaho\bi-server\jboss\server\default\deploy).
When I start the server, I got the following error:

Error configuring application listener of class com.opensymphony.webwork.portlet.context.ServletContextHolderListener java.lang.ClassNotFoundException: com.opensymphony.webwork.portlet.context.ServletContextHolderListener

and also

Incomplete Deployment listing:

--- Incompletely deployed packages ---
org.jboss.deployment.DeploymentInfo@af411f71 { url=file:/C:/java/pentaho/bi-server/jboss/server/default/deploy/MyPortlet.war }
deployer: MBeanProxyExt[jboss.web:service=WebServer]
status: Deployment FAILED reason: URL file:/C:/java/pentaho/bi-server/jboss/server/default/tmp/deploy/tmp48860MyPortlet-exp.war/ deployment failed
state: FAILED
watch: file:/C:/java/pentaho/bi-server/jboss/server/default/deploy/MyPortlet.war
altDD: null
lastDeployed: 1202220240918
lastModified: 1202220240902
mbeans:

--- MBeans waiting for other MBeans ---
ObjectName: jboss.web.deployment:war=MyPortlet.war,id=-1354686607
State: FAILED
Reason: org.jboss.deployment.DeploymentException: URL file:/C:/java/pentaho/bi-server/jboss/server/default/tmp/deploy/tmp48860MyPortlet-exp.war/ deployment failed

--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.web.deployment:war=MyPortlet.war,id=-1354686607
State: FAILED
Reason: org.jboss.deployment.DeploymentException: URL file:/C:/java/pentaho/bi-server/jboss/server/default/tmp/deploy/tmp48860MyPortlet-exp.war/ deployment failed

I thought that was because I didn't build the war file correctly. So I tried another way to build the war file by using ant script. I ran the ant file using Eclipse. And it gave the same kind of war file done using the previous method. I put it in the deployment folder and restart the server. And..... I get the same error ... T_T

arghhhh.... -_-!
i hate deploying for the first time.. ("adaaaaaaaa... aja masalahhh... haihhh capek deh" --> sorry Eric, this one is hard to say it in english hehhe).


cheerzzz
tot morgen

Monday, February 4, 2008

Hurdles

Today was the second day of our sprint. Lisa and I had decided on Friday that we were going to divide the task by experimenting with the two options we've had from our research. Lisa did the research on Pentaho BI suite, so she went on with it. Meanwhile I had started some research on Adobe Flex, and am trying to get a demo showing code coverage retrieved from the database. On Friday, we started installing the two tools/framework. Lisa had some troubles after the installation; the installation was a success, but when she had some errors when trying to log in to the admin console. The error message was complaining about not finding a repository, but in fact the database (mysql) was installed along with the full package, and the repository was indeed created. We were not sure what caused the error, but Lisa tried to overcome this problem by editing some of the files within the server directory (according to some troubleshooting research she did), but did not solve the problem, so she decided to start a clean slate by removing the whole suite all over again. Meanwhile, I had no problems with installation, so I went directly to follow some tutorials. After getting some insights of how Flex works, I started to create my own project for the demo. However, I'm having a problem connecting the Flex project to a datasource. Initially I imagined it would just a matter of setting up jdbc url on the project in Eclipse (based on my experience setting up a datasource on WebSphere Application Server and developing data services portlets). However, this is not the case with Flex. According to my research, Flex applications do not connect directly to a data source, but they communicate through several options:
mxml - Java Server Pages
mxml - PHP
mxml - ColdFusion
HTTP services in action script

Today, I was informed that I actually can try out Flex 3 builder. So I started the day by installing Flex 3 builder (I installed Flex 2 on Friday) and played around with some tutorials. I also did some try outs connecting to the datasource from Sonar (the dummy data created for our starting point), but so far the efforts have been fruitless. On the other side, Lisa had started the day by re-installing the Pentaho BI suite, this time just taking all the default installation values. And fortunately this had solved the previous problem and she was able to get into the first page and the admin console of Pentaho as well as the JBoss portal server that was included in the installation suit. So currently Lisa is researching how to create her own portlets and display the code coverage by connecting to the Sonar database. I reckon if we sort out the datasource connection problem, things are going to get back in track, even better, I reckon its gonna get exciting.. By the way.. i just had a good news from back home, Jakarta: my sister had just delivered her first baby a couple of hours ago :D Its both exciting and scary! 'cause besides the fact that I'm an uncle now, it got me realized that I'm an adult and am getting older and older each day!. Anyhow, despite all the stress facing dead ends and errors at work, it was a very happy day for me after all.

Thursday, January 31, 2008

Its time to sprint. 3..2..1.. GO!!

Maybe one important thing that was missing from the past two blogs is: the method we are using to develop the project. Before the project even started, our mentor, Eric Schabell, had asked us to start writing a project plan. Having absolutely NO idea of what to write, we just sat down together and start making our "waterfall" planning. I couldn't even believe that we actually managed to plan the project, without having one clue of what it is in detail. All we knew was that we had to develop an application for a monitor containing project information and that the project has to be done within 100 working days. We had NO idea what tools we're gonna use, framework, etc. So we were (atleast I was) quite happy that we got it done, hoping that our mentor would feel the same way too.--- The first day I came in, our very first task was: RE-WRITE THE PROJECT PLAN!
During our studies, we had been introduced to the Agile Software Development, which is a method of developing applications using several iterations. On the first day, Eric gave us a book of Agile development using "Scrum". Scrum is an Agile process or framework for managing Agile projects. The method consists of: gathering requirements, producing a product backlog, daily scrum meeting - iteration(sprint plan meeting - determining sprint backlog - sprint - release - evaluation).
Anyways, we have spent our first week to gather all the requirements from some of the target users (3 technical project leaders, a developer, a test coordinator, and a senior project leader).
And today... oh first.. this has just been in my head the whole day so I really need to get it out of my system... DAMN!!(pardon my French) what a bad day today! The day before, Eric had told us specifically to come in to the office at 09.00, and I quote: "make sure you are not late tomorrow!" because we were going to attend our first monthly team meeting (with the whole 40something people in the department). Even though we normally do come in at 09.00, but I responsibly went to bed a bit early than usual, just to MAKE SURE that I get enough sleep and not be sleepy in the big meeting. Long story short: I woke up at 08.00, rushed my ass off to the train station and broke the bike on the way, dashed my way to the platform and BAM!: Vertraging (Delay). So I got in to the meeting 30 minutes late, ashamed.... I mean, OF ALL THE OTHER DAYS, why today??!
Back to the project.. So we've done all the interviews, and we have a long list of wishes from the users of what they'd like to see on the monitor. So we had our first "Sprint plan meeting" with the "Scrum master", Mr. Schabell, and we parted the sprint into 2 weeks (we have in average 4 weeks per iteration), and took just one out of the list to be our first information to put in our monitoring application: code coverage. Since we already had 2 options of tools that we are going to use(Pentaho, and Flex), so we made our "sprint backlog" categorized by those two things. Our sprint backlog pretty much consists of: Installation & configuration (for each of the two tools), and development (database connection, data extraction, transformation, etc.). The plan is to divide task between the two of us so that each of us can experiment with both tools and deliver some sort of 2 tiny demos showing the code coverage. And by the end of the two weeks we shall see which one is better and more feasible to go on with. If we could perform well, then we can extend the sprint backlog for more functionalities at the end of the first sprint (after 4 weeks).
So off we go... as soon as we get the proper rights to download stuff at work, we are going to start our very first sprint....... 3..2..1.. GO!!

Tuesday, January 29, 2008

Business Intelligence ?!

Today, we did some research for the tool selection. We got 4 options: JBOSS Portal, Adobe Flex, Pentaho, and MarvelIT. The last two mentioned are Business Intelligence (BI) dashboard. We have divided the task, ikram will do research about JBOSS portal and Flex, while I'll do the two BI dashboard.

Those options look very nice... we are very curious of what we can do with those tools and which one is the most suitable one. well, we hope we don't make bad decision about this :p
Anyway... I wasn't expecting this project could be done using BI principles or interface. this project is really getting more and more interesting for us, as we both are interested in the BI.

Just got a small talk with ikram and we think we can combine the Pentaho portlet in the JBOSS portal. As the Pentaho portlets use the JSR 168 standard that is compatible with JBOSS server.
okayy... got to go!

Monday, January 28, 2008

Graduation Internship: PRIMA project

Currently, I am doing the graduation project at SNS Bank in Den Bosch. This is a duo-internship project with my fellow, Ikram.

The project is to make a kind of "application" for project monitoring, the äpp"will be shown in a large flat screen hanging on the wall of the IT dept office. Passing by employee can get a quick look of what projects are running, project issues, project coverage, and maybe some fun things like the happy rating of the whole IT team.


I started this assignment last week... but just got the internet working few hours ago. today, we got interview with one of the TPL, Tom Opthal... he gave some input of the info he would like to see on the screen...


ikram got some info about the flex... and I did some research on JBOSS portal. it seems those two can be good options for us .. we'll see...