This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
In today's world, data is very important. The more data we have, the more powerful we are. However, the collected data has to be used i.e. information has to be extracted from the data to give meaning to the collected data. Data visualization is the study of the visual representation of data, defined as information which has been abstracted in some schematic form, including attributes or variables for the units of information. Bar charts, Line charts, scatter graphs, and maps are examples of simple data visualizations that have been used for a long time. There can be more complex visualization which generates animations that demonstrate how data change over time. In this project we are going to visualize the usage of existing system called TASKMIND.
Each set of data has particular display needs, and the purpose for which we are using the data set has just as much of an effect on those needs as the data itself. There are dozens of quick tools for developing graphics in a cookie-cutter fashion in office programs, on the Web, and elsewhere, but complex data sets used for specialized applications require unique treatment. Characteristics of a data set are so much responsible in the determination, what kind of visualization we will use. Twitter Vision (www.twittervision.com) and Flickr Vision (www.flickrvision.com) are the examples using the visualization techniques to show where the data are coming from.
In this project we are concerned with the data set of the existing system TASKMIND (www.taskmind.net). Together with data mining, we will be working on the visualization of its usage patterns.
Different data needs to be visualized differently so that they can be easily understood. The visualizations may be in the form of:
However, to convey a message to others effectively, sometimes we need more than just a simple pie chart of our results. In fact, there are much better, profound, creative and absolutely fascinating ways to visualize data. Some of the most interesting modern approaches to data visualization are as follows:
Taskmind is a novel and innovative software tool for the efficient management of ad-hoc tasks in distributed teams. It primarily focuses to aid in the management of tasks in any organization. In today's world, working smart is very much essential than working hard. As companies grow in size and stature, managing the infrastructures and human resource becomes a major headache for such emerging companies. Keeping up with the growing schedule and task is essential for the success of any organization. So, taskmind does that work to ease the responsibility and provide a platform for easy task management. Also taskmind manages a project as a series of tasks.
Figure 1.1 Taskmind
Top 9 reasons of using Taskmind:
Share tasks easily and quickly (We can ask someone to do something by assigning him/her a task or ask a group to do something by assigning a task to a group, decide whether everybody has to do it or if just one is fine or re-assign a task to someone else.)
Tasks are central (We can enter tasks into taskmind faster than we could write them by hand on a piece of paper, see which (shared) tasks there for a project; select a task that's waiting for a worker and get it done, See who has how many tasks to do and which ones assist them if you have the time.)
Available everywhere (browser, desktop, mobile phone, Outlook plugin)
Let the work flow naturally through the team (We can assign a task to a person, then wait for him or her to accept the task, hence taskmind fosters commitments. When the task is done, we can approve or reject the work. When the person is on leave, reassign the task to someone else.)
Tasks collect notes, attachments and an action history (We can add notes to a task and discuss in real time, the people involved in the task see the notes immediately, add attachments for sharing background information or for adding the result.)
No nonsense interrupts anymore (We get critical notifications immediately, but don't get disturbed by irrelevant updates (like someone has sent me an SMS or email).)
Outlook integration (We can work with taskmind from within our Outlook, one tool to cover emails and tasks.)
No more task mails (It drastically reduces the number of emails, no more unnecessary replies.)
Always know who is in charge with the handshake for tasks (We can see whether a task has already been accepted, whether it's overdue, see whether someone has already started to work on a task, learn as a team to keep promises and to give early feedback when we cannot adhere to an agreement.)
Besides these, we can
Enter tasks by speech in our mobile phone
See who is working on which project
Use twitter to enter and assign tasks
Receive an email with tasks of the day
Different types of visualization can give different types of information. E.g. By looking a project on timeline, one can find a particular task in large set of tasks by knowing the start or end date or the number of people involved. By looking a project on geographical map, one can know about a particular task through location of the task.
Different aspects of taskmind that can be visualized are:
Visualization of the users in large (Where are the users online from)
E.g. google earth, twitter vision
Visualization of the life-cycle of tasks:
Which actions were executed upon tasks at what point in time?
How has the task been changed over time (e.g. change in the task description, in the priorities, in the notes)?
When was the task being delegated to whom?
Which sub-tasks or delegated tasks have when been created as part of the task? When have those been started and finished?
E.g. Sequence diagrams in UML
Visualization of the tasks of a project:
At which locations have which tasks been finished?
At which locations have most of the tasks been created?
To understand in how many different ways information can be visualized in web
To understand about Flex(Actionscript/Mxml)
To determine which aspects of the usage of taskmind can be visualized appropriately
To develop valuable visualizations
The scope of our project is mainly within the users of TASKMIND. It helps to track the client activities and visualization of the related tasks makes the analysis and conclusion more easy and effective. Therefore efficiency of task management and control is more obvious.
Besides the research carried out during this project has a wide range of applications. The visualization techniques we have done can be applied for different purposes like:
Displaying CO2 emissions in different parts of the world
Displaying birth and death rates of a country yearly
State of infectious diseases and their effects on health
Monitoring Seismic activities
Visualizing meaning of a word, and many more.
Since we are concerned only with the client side and all visualization will happen on the client web application, we will be using the FLEX (ACTIONSCRIPT/MXML) technology to develop the client application that will visualize the several aspects of the server i.e. www.taskmind.net.
Adobe Flex is a software development kit released by Adobe Systems. Flex is a highly productive, free open source framework for building and maintaining expressive web applications that deploy consistently on all operating systems and run on major browsers and desktops. While Flex applications can be built using only the free open source framework, we can use Adobe Flex Builder software to dramatically accelerate development.
Reasons of Using Adobe FLEX:
Scalability (It is designed to scale from simple components in websites to browser-based or desktop applications using the pre-built component library, Flex provides a broad solution for creating RIAs of all kinds)
Cross-platform, accessible applications (RIAs created with Flex can run in the browser using Adobe Flash Player software or on the desktop on Adobe Air
Using AIR, Flex applications can access local data and system resources on the desktop Both Flash Player and Adobe AIR are available as a free download on Adobe.com
Rich User Experience (allows web application developers to create highly interactive interfaces for web and desktop applications)
Applications built with Flex can reach more users, improve productivity and satisfaction, and generate increased profits for businesses
ActionScript is a scripting language based on ECMAScript. It is used primarily for the development of websites and software using the Adobe Flash Player platform (in the form of SWF files embedded into Web pages). ActionScript was initially designed for controlling simple 2D vector animations made in Adobe Flash (formerly Macromedia Flash). Later versions added functionality allowing for the creation of Web-based games and rich Internet applications with streaming media (such as video and audio).
Some of the things we can do with actionscript code:
control the play head of a timeline
move things around
create and manage user interfaces
manage data (xml, lists, etc)
communicate with server-side applications (e.g., web servers)
MXML is an XML based declarative language that compiles into ActionScript and used to describe UI layout and behaviors of Flex applications. Basically it is shorthand for defining the static parts of an ActionScript environment. Indeed MXML is used to lay out user-interface components for FLEX applications. It is also used to define nonvisual aspects of an application, such as access to server-side data sources and data bindings between user-interface components and data sources. MXML is often used with Flex Server, which dynamically compiles it into standard binary SWF files. However, Adobe's Flex Builder IDE and free Flex SDK can also compile MXML into SWF files without the use of a Flex Server.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Label x="249" y="150" text="Hello World"/>
PureMVC is a lightweight framework for creating applications based upon the classic MVC (Model-View-Controller) design pattern. It is an open source framework which can be implemented in ActionScript 2 and 3, Java, C# and a number of other programming languages. PureMVC helps us to separate our application's coding concerns into three different tiers: Model, view and Controller.
Proxies are used to manage the data object. It will be the one that requests our data. Once the data returns, it will then fire off a notification stating that the data has returned.
Mediators are used to manage our components. This also picks up notifications of data and that is where we will set the data to our components.
Commands are mostly there to interact with the Proxies and Mediators
Facade is the single interface (also are a singleton) used to manage the communications of your application
Figure 2.1 PureMVC Architecture
Reasons of using PureMVC:
Provides clear and adequate documentation
Avoids platform dependencies
Hides complexity from developer
MySQL is a database to store data in database objects called tables. MySQL runs virtually on all platforms, including Linux, Unix, and Windows. It is fully multi-threaded using kernel threads, and provides application program interfaces (APIs) for many programming languages, including C, C++, Java, Perl, PHP, Python, Flex, etc. MySQL is used in a wide range of applications, including data warehousing, e-commerce, web databases, logging applications and distributed applications. It is also increasingly embedded in third-party software and other technologies. The data related to taskmind which are to be visualized are stored in a database and we have used MySQL for storing and retrieving data.
Reasons of using MySQL:
It is used worldwide and is easy to configure.
The MySQL database server provides the ultimate in scalability (capable of handling deeply embedded applications)
It supports different platforms (Linux, Windows, etc.).
MySQL offers one of the most powerful transactional database engines on the market.
The data can be accessed faster.
The driver needed is readily available for most other languages.
MySQL offers exceptional security features that ensure absolute data protection
AS3FlexDB is an open source library that helps adobe flex applications to connect to a MySQL server. AMFPHP is used by this library to access a MySQL server. It lets us write all our SQL's in FLEX. Also we can do almost every action on a table in FLEX without making new classes in PHP and access it i.e. it is a library that allows us to manipulate a MySQL Database in AS3 without need of writing any PHP code or other server side code.
AS3FlexDB use RemoteObject class to access a AMFPHP service. The AMFPHP service more exactly the php Database class executes the SQL and returns the results to Adobe Flex applications.
Figure 2.2 AS3FlexDB Architecture
Axiis is an open source framework designed to support the conceptualization and implementation of a wide variety of interactive data visualizations ranging from common cartesian charting to yet-to-be-imagined forms of visualization. Axiis helps developers and designers to create compelling data visualization solutions by assembling easy to understand building blocks into simple or complex visual representations of data. Axiis takes a very visual approach to development in both the markup language itself as well as the concepts used to create data visualizations. The two primary concepts to understand in Axiis are Geometry and Layout.
Geometry: simple or complex geometries that plot specific data points relative to visual coordinates and Layout: The layout classes allow developers to use and combine pre-built layout schemes as well as build their own to create anything.
Advantages of Axiis:
Expressive (enables developers to expressively define their data visualizations through concise and intuitive markup.)
Concise (we don't need to write volumes of code to produce amazing results. In fact, some of the more complex Axiis examples have no more than 200 lines of code.)
Modular (The class structures are flat and interchangeable. In Axiis we create visual complexity through engineering simplicity.)
Open Source (Axiis is an open source project, under an MIT license.)
Data can be visualized by using Axiis in following forms:
Wedge Stack graph
Lines and Areas
Column Clusters and Stacks
Bar Clusters and Stacks
Plots and Bubbles
Adobe Flex and Adobe AIR form a technology platform for delivering portable, richly graphical user interfaces to your Internet and desktop applications. ILOG Elixir enhances this platform there by adding advanced data visualization displays that go far beyond the Flex/AIR standard controls and charts to provide users with the display magic they want. ILOG Elixir is a suite of professional user interface controls that gives developers a rich collection of innovative and interactive data display components. It includes ready-to-use displays for project planning and scheduling, geographic and heat map displays, dials and gauges, 3D and radar charts, treemap and pivot charts, calendar displays, and organization charts. Each control has been architected to naturally fit into the Adobe Flex environment, from fully supporting Flex's data-binding and event models to supporting the standard Flex user interaction effects. Controls are also tightly integrated within the Flex Builder IDE and hence developer's can simply drag and drop from a palette, set properties, and connect to the data source. Elixir's controls can be used individually or in combination, alongside other Flex components. It is ideally suited for building business activity monitoring dashboards, data analysis displays, and planning and human resources applications.
Elixir consists of 11 highly Flex graphical components that present data to users so that they can understand the information more clearly, react faster and make better decisions.
3D charts (line, bar, area, etc.)
Gauges and dials (Gauges and dials are fully interactive and designed to be connected to real-time data sources.)
Vector maps (IBM ILOG Elixir makes it easy to add intuitive map displays to your developments)
Organization charts (Quickly navigate through peers and management relationships with stunning animations.)
Gantt resource charts (Create custom planning display for resources (for example, employees, trucks, and factories))
Gantt task charts (Easily create custom project management displays. See what resource performs which task and when, reassign tasks, and manipulate time series data and schedules)
Tree maps (innovative charts for visually detecting trends and outliers in large data sets)
Radar charts (display in a compact way and compare a variety of key performance indicators (KPIs) with multiple data point tool tips)
Calendar (Easily create custom and shared planning applications)
OLAP and Pivot charts (Replace OLAP grids with highly dynamic charts for improved insight and analysis in your custom data)
Heat maps (display how your data is spread over geographies or a web page)
The yFiles FLEX contains a Flex 2 diagramming component that can be easily integrated into a MXML application as well as a comprehensive graph drawing ActionScript 3 library. The yFiles FLEX library lets us easily create custom internet applications that allow to create, visualize, and edit graphs, diagrams and networks. yFilesÂ FLEX makes it easy to integrate sophisticated graph visualization and editing functionality into a rich internet application based on Adobe Flex or Adobe Air. The yFilesÂ FLEX framework also combines our graph drawing software expertise with the rich internet application capabilities of the Adobe Flash player.
Features of yFiles flex:
Highly customizable nodes and edge styles (The style API of yFilesÂ FLEX offers easy to use default style classes as well as a convenient framework to create your own node and edge styles.)
GraphML (Using the yFilesÂ FLEX API, your web client application can parse graph structure and style information given in the human readable GraphML format. The format can be used to communicate with any server software component that can export graphs in GraphML format)
Interaction (The yFilesÂ FLEX framework already includes customizable implementations for creating, moving, and resizing graph items and for providing tool tips and context menus for any objects shown in the view component.)
Animation (yFilesÂ FLEX can create easily customizable morphing animations between different graph layouts)
Remote API (The framework provides convenience classes to facilitate the communication with a yFiles server component)
Reasons of using yFiles Flex:
No browser compatibility issues (yFilesÂ FLEX application will look the same no matter which browser and operating system it runs in)
Full-featured web-based graph viewing, editing and animation (The yFilesÂ FLEX framework allows you to easily create rich internet applications (RIAs) providing the same user experience as regular desktop applications.)
Benefit from our graph drawing software experience
Another Flex Dev : Flex Diagrammer
This library helps us to build our own diagrammers and easily extend nodes and links adding custom functionality. It lets us build data relationships and interactions. Though it is not as much flexible and handy with several features as the YFiles for flex,Â it sufficiently provides the basic functionality for the creation of nodes and links between them.
7 graph layouts (overview)
BlazeDS is the server-based Java remoting and web messaging technology that enables developers to easily connect to back-end distributed data and push data in real-time to Adobe Flex and Adobe AIR applications for more responsive Rich Internet application (RIA) experiences. It has a proxy service that allows for Flex applications to access services outside their domain.
Core parts of BlazeDS:
Remoting (direct communication to Cold Fusion and Java objects)
Proxy (make cross-domain service requests)
Messaging (Asynchronous message pattern, producer-consumer pattern)
Reasons of using BlazeDS:
Easily connect Flex and Adobe AIR applications built using Flex and Ajax to existing Java server logic
High performance data transfer for more responsive applications
Real-time server push over standard HTTP
Full pub/sub messaging that extends existing messaging infrastructure
a declarative graphics framework
licensed under MIT
Degrafa is easy to learn, easily extendable and very powerful. Degrafa aims to offer the quality of static graphics and the flexibility of dynamic graphics via runtime while allowing designers and developers to create dynamic graphics in MXML markup language.
There are different tools that can be used under Degrafa:
Mini Shape Designer
It is an information visualization and visual analytics library. It is a community project to advance the design and development of a comprehensive open source information visualization and visual analytics library for Adobe Flex. It enables users to create multi-dimensional data visualization interfaces for the analysis and presentation of information.
Different visualization and Analysis components in Birdeye are:
TaVis (This library is to provide functionality for time-series, timeline, and chronological data analysis.)
RaVis (It enables users to create complex data visualization interfaces for the analysis of relational data sets such as social networks, organization trees, navigation systems, taxonomies, db schemas, and other link-based phenomena.)
GuVis (The General Utility Library includes UI controls, animation, filters, and multi-use functions for use with any of the Birdeye libraries.)
QaVis (It is focused on conventional and novel approaches to the analysis, interpretation, explanation, and presentation of numerical data.)
GeoVis (It helps in rendering of vector-based maps with control and functions to facilitate analysis of geospatial data.)
MaxMind is an industry-leading provider of geolocation and online fraud detection tools. MaxMind provides its geolocation technology through the GeoIP brand. By accurately pinpointing the location of Internet customers and visitors by country, geographic region, in real-time, MaxMind enables online businesses to have a valuable marketing tool as well as the ability to customize their websites to better serve clients. Their GeoIP databases are 99.8% accurate on a country level, 90% accurate on a state level, and 83% accurate for the US within a 25 mile radius.
Because we were working under the established system, www.taskmind.net along side with BIKALPA, all the dataset required for the Data Mining and Visualization were provided by BIKALPA.
Initially, in addition to materials, Bikalpa also provided the necessary training before we actually plunged into the project. We did small projects like:
system tray applications using flex
converting java code into flex, etc.
Figure 3.1 Critical Chain
An agile approach of design methodology was used for the development of our software. Agile software development refers to a group of software development methodologies based on iterative development. It helps teams respond to the unpredictability of building software through incremental, iterative work, known as sprints.
Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames that typically last from one to four weeks. Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding and testing when a working product is demonstrated to stakeholders. This helps minimize overall risk, and lets the project adapt to changes quickly. Agile methods emphasize face-to-face communication over written documents when the team is all in the same location. When a team works in different locations, they maintain daily contact through videoconferencing, voice, e-mail, etc.
Some of the principles behind the Agile Manifesto are:
Customer satisfaction by rapid, continuous delivery of useful software
Working software is delivered frequently (weeks rather than months)
Working software is the principal measure of progress
Even late changes in requirements are welcomed
Close, daily cooperation between business people and developers
Face-to-face conversation is the best form of communication (co-location)
Projects are built around motivated individuals, who should be trusted
Some of the well known agile development methods are as follows:
AUP (Agile Unified Process)
XP (Extreme Programming)
FDD (Feature Driven Development)
Scrum is an iterative, incremental framework for agile software development. Scrum is characterized by:
A living backlog of prioritized work to be done.
Completion of a largely fixed set of backlog items in a series of short iterations or sprints.
A brief daily meeting (called a scrum), at which progress is explained, upcoming work is described, and obstacles are raised.
A brief planning session in which the backlog items for the sprint will be defined.
A brief heartbeat retrospective, at which all team members reflect about the past sprint.
Each day during the sprint, a project status meeting occurs. This is called a "daily scrum", or "the daily standup". During the meeting, each team member answers three questions:
What have you done since yesterday?
What are you planning to do today?
Do you have any problems preventing you from accomplishing your goal?
Example 1: 1. Read pureMVC framework
2. Continue reading pureMVC
Example 2: 1. Searched how to visualize activity diagram using Ilog Elixir
2. See other libraries for doing it
3. Found Ilog to be difficult to visualize activity diagram
Extreme Programming (XP)
Extreme Programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. Extreme Programming emphasizes teamwork. Managers, customers, and developers are all equal partners in a collaborative team. Extreme Programming improves a software project in five essential ways; communication, simplicity, feedback, respect, and courage.
Figure 3.2 Extreme Programming
User stories are simple, clear and brief descriptions of functionality told from the perspective of a user. User stories in agile and scrum development can be useful to either a user of the software or the customer of the software. A user story is a very high-level definition of a requirement, containing just enough information so that the developers can produce a reasonable estimate of the effort to implement it.
Some examples of user stories used in our project are as follows:
As an admin I should be able to expand each node representing member so as to get deeper information about the member and the task performed.
As admin I should be able to visualize the members of the project as a diagram.
Activity or Sequence Diagram
Interaction diagrams form one the visualization techniques in describing the collaboration of several individual components taking part to complete the given task. In general the interaction diagrams describe how groups of objects collaborate in some behavior there by describing sequences of each step in the process of completion the task. The Unified Modeling Language, UML describes different forms of interaction diagrams, of which the most common is the sequence diagram. Typically, a sequence diagram captures the behavior of a single scenario. It models the flow of logic within a system in a visual manner and hence enables us to document and validate the logic being used to solve any problem or to complete the task.
It can be commonly seen to be used in both analysis and design purposes.Â Talking about the dynamic modeling, here the sequence diagrams constitute as the most popular UML artifact where it primarily focuses on identifying the behavior of the individual components within the system. The diagram shows a number of example objects and the messages that are passed between the objects within the use case.
Obviously the sequence diagram shows the flow of several processes within a system. There are number of objects or entities in the system and the flow of processes show the flow of messages between these objects. In our project we are particularly focused on the task flows in the task mind. Different tasks can have different flow nature and the task states are specific to the task nature. In the task mind, there is a creator of a task, Requester, persons who are supposed to be working of the task, Worker and a task can have several states like Task Created, Task Assigned, Assigned Unconfirmed, Assigned Confirmed, Task Started, etc. and therefore the sequence diagram shows the Requester, Worker and Task as the entities and the change in the task states with the passage of messages between these entities.
Tasks normally flow in the following manner in Taskmind:
Figure 4.1 Flow of Task in Taskmind
Besides tasks may also flow in the following manner:
The requester assigns a certain task to his workers. The workers accept the given task, start to work on it and finish it. The requester then approves the task if it is correctly done.
The workers can finish the task without starting.
The workers can also reject the task.
The workers can reopen the finished task.
The worker can pause the task.
The requester can cancel the in-progress work.
To visualize the flow of activities in any particular task, we had to first create the general algorithm that describes the overall general flow of any task.
To do so, we first created the hand-made sequence diagrams of several test tasks taken as sample tasks from the site itself.
By doing so for several tasks including simpler to complex tasks, we were able to understand the general flow of the tasks and also determine the requirements for the implementation of the sequence diagram.
Finally our understanding was handy to develop the general algorithm for the flow of activities in any task.
We have visualized these aspects of taskmind in three different ways:
Handwritten and Computer Printed
Initially, the activity diagram or sequence diagram were drawn on papers and some were computer printed. Almost every way the tasks can flow in taskmind was visualized. No coding was done for the visualization.
We actually initiated the implementation of the sequence diagram using the library yFiles for flex. The library provided the low level APIs for the creation of nodes and links between them, and also the APIs to label the nodes and the links. By using the low level APIs we have created different nodes at required locations to indicate the different entities as well as the task states and also linked them accordingly to indicate the flow of messages between those entities.
Using Another Flex Dev
Even though we initiated the implementation of the sequence diagram with YFiles for flex, it was a commercial library and was not an affordable one. So with the regard to that we switched our library to an open source library, AnotherFlex. Though it was not as much flexible and handy with several features as the YFiles for flex,Â it sufficiently provided the basic functionality for the creation of nodes and links between them and it was handy to implement the algorithm we developed.
Different people have different moods while doing a work. By this visualization technique, we can visualize the emotions of the users during their work. While doing the work the user presses any one of the four emotion buttons. We have assumed that a user may have four different emotions like:
Sunny (Good mood)
Thunder (Worst mood)
Emotional Seismograph has been implemented in three different ways:
Using Simple Flex Coding
We haven't used any data visualization library for making this part. We have used simple Flex actionscript/MXML coding i.e. we have used Flex Charting Components. Flex has different charting components like: area charts, bubble charts, line charts, column charts, etc. For the purpose of displaying emotions of users, we have used Line Chart (<mx:LineChart/>) component of Adobe Flex. Whenever the user clicks an emotion button, the data is saved in a temporary array collection and is retrieved from it.
Using Degrafa and QaVis
Using Degrafa and QaVis, we visualized the same thing as above but with different look. We have used MicroLineChart component of QaVis.
Using Ilog Elixir
A 3D look was given to the output (though there was not any 3D data, just to know how data could be visualized) using a commercial library Ilog Elixir. The LineChart3D component of IlogCharts3D was used for the visualization. The features like zooming and rotation was also added.
Flow of User
We have also visualized the users who are involved in doing a task. For the implementation of this part we have used Organizational Chart component of Ilog Elixir. We can see the picture, emailed, phone number and many more information in the visualization.
Geo-Location via IP
We have also tried to visualize the location of a user (city) from where he/she online. Initially we implemented it using Php and Flex. As the server of taskmind is made in Java, later on we used Java and Flex.
In this visualization, we have mapped IP addresses to different cities of the world using the database provided by MaxMind (www.maxmind.com) and the city is geolocated on google map using google map API. To use the MaxMind database, MaxMind has provided API's in Java, Python and PHP only. When an IP address is given, the API makes remote call to the database to find the information about the IP address like name of city, latitude, longitude, etc.
Using Php and Flex
Initially the backend was made in PHP and front-end in Flex. The flex client used to send request to the PHP server for any new tasks (IP), every 5 seconds, and once the information about the task assigned location was known, it mapped the city in the Google map. Since the client used to send request every 5 seconds, the server may be overloaded.
Using Java and Flex
Now the final one has Java as backend and Flex as front-end. We have used Apache Tomcat server and BlazeDS is integrated in it. We have a server side interface where we enter the IP address. Once the setip button is clicked the client flies to the location of that IP in google map.
The server of BlazeDS is in producer-consumer pattern. Here the server is the producer and the client is the consumer. When an IP is entered, we can get the geolocation information of the IP by using MaxMind API. The server then sends the geolocation information to the client through a channel defined in messaging-config file of Flex. The consumer waits for the server and after getting the information flies to the location in google map using google map API.
Visualization of Priority of Tasks
A task in taskmind can have three different priorities A (Most Important), B, C (Least Important) and a project can have a number of tasks. So, we have also visualized the number of A, B, C priority tasks in different projects. The visualization has been shown by three different methods. We have used Axiis framework for the visualization.
This visualization seems like pie chart visualization but has two circles: inner circle and outer circle. The inner circle consists of names of the projects and outer circle consists of number of different priority tasks.
The vertical chart consists of different bars laid vertically. The top three bars show the number of A, B and C priority tasks while the forth bar shows the total tasks at once.
The number of A, B and C priority tasks are also visualized using horizontal bars.
Tasks Drill Down
We have named the visualization of number of tasks assigned, number of tasks completed and number of tasks rejected as Tasks Drill Down. We have used line chart, bar chart and pie chart visualization to show the number of tasks. The number of tasks assigned is shown with the help of line chart, number of tasks completed with the help of bar charts (horizontal) and the number of tasks completed and rejected using pie chart. We can see the result for different years (here we have shown year 2008 and 2009) with number of tasks along y-axis and name of month along y-axis.
The results or outputs of our project are as shown below:
Figure 5.1 Main Output
Activity or Sequence Diagrams
Figure 5.2 Normal Flow of Task in Taskmind (Printed)
Figure 5.3 Tasks Assigned to Two Different Persons (Printed)
Figure 5.4 Requester Reopens from Finished
Figure 5.5 Activity Diagram Using yFiles
Figure 5.6 Activity Diagram Using Another Flex Dev
Emotional Seismograph (ES)
Figure 5.7 ES Using Degrafa (Upper) and Simple Flex (Lower)
Figure 5.8 ES Using Ilog Elixir
Flow Of Users
Figure 5.9 Flow of Users
Geo-Location via IP
Figure 5.10 Geo-Location via IP
Visualization Of Priority Of Tasks
Figure 5.11 WedgeStack Graph of Projects
Figure 5.12 Horizontal Chart of Projects
Figure 5.13 Vertical Chart of Projects
Tasks Drill Down
Figure 5.14 Tasks Drill Down
PROBLEMS FACED AND SOLUTIONS
During the making of this project we have faced many problems and searched for solutions which are as follows:
Making of activity or sequence diagram wasn't an easy task. Initially, we couldn't find any flex's visualization components which could visualize the diagrams. As we were known to Ilog Elixir, we tried the organization chart component of it but didn't succeed. Then we found yFiles which contained certain diagramming components that helped us to visualize the activity diagram but it was a trial version. Finally we found Another Flex Dev which was open source and contained components needed to visualize activity diagram.
Similarly for the visualization of location of users, first we visualized it using PHP and Flex but it resulted in the overloading of server so later on we searched for other techniques and finally implemented it in Java and Flex.
We also faced a problem that some codes written in Flex used to run in certain versions of Flex SDK (like Ilog components used to run in Flex SDK 3.4 while some bar chart, line chart components of Flex used to run in Flex SDK 3.1 or less). By searching over the internet, we found a file datavisualization.swc. By using it we were able to run any visualization components of Flex using any version of Flex SDK.
CONCLUSIONS AND FURTHER WORK
Pictures speak better than words. As a result, the importance of visualization of data has now a high demand. "Visualization of the Usage Patterns of Taskmind" has been a good opportunity for us to understand the concepts of data visualization and to know about the different methods of visualizing the data, mainly using Adobe Flex.
In the project, we were concerned of visualizing the different aspects of a developed system known as Taskmind. We were able to be familiar with the Taskmind and visualize many aspects of it. During the making of project, we found many visualization techniques and libraries which we were unknown before doing the project. The visualization techniques and libraries which we studied during the project and used to visualize various aspects of Taskmind will surely help us to visualize any kind of data given to us in the future.
Thus our final year project "Visualization of the Usage Patterns of Taskmind", was completed successfully to the extent we had time to do it. Besides there are a lot of areas where we can improve our project and we are sure that we will be able to develop it as plug-ins to Taskmind.
We have visualized many aspects of Taskmind in our project but there are other aspects of taskmind which are yet to be visualized. By using the above proposed visualizations and frameworks used we can visualize any aspect of Taskmind. After visualizing the important aspects of Taskmind we are aiming to develop it as plug-ins to the Taskmind.