05 April, 2009 / Using TargetProcess SOAP API in Ruby Application
It is quite easy to access TargetProcess SOAP API via Ruby.
Install soap4r
First thing you need to install soap4r. SOAP4R is a Ruby library for accessing Web Services via SOAP.
gem install soap4r --include-dependencies
Generate Classes From WSDL
For example, you want to use ProjectService API. You have to generate some classes using wsdl2ruby.
[path_to_wdsl2ruby]wsdl2ruby.rb --wsdl [targetprocess_url]/Services/ProjectService.asmx?WSDL --type client
Real command may look like:
/Library/Ruby/Gems/1.8/gems/soap4r-1.5.8/bin/wsdl2ruby.rb --wsdl http://localhost/targetprocess2/Services/ProjectService.asmx?WSDL --type client
This command will generate 4 classes. You may rename them if you want, in this example we use them as is.
default.rb
defaultDriver.rb
defaultMappingRegistry.rb
ProjectServiceClient.rb
Authentication
TargetProcess uses WSE, so it is required to provide correct authentication. First, create the following class in wsse_authentication.rb file in lib folder. Specify correct login and password. You may use System User credentials (login into TargetProcess and navigate to Admin section to set them).
require 'soap/header/simplehandler'
class WsseAuthHeader < SOAP::Header::SimpleHandler
NAMESPACE = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'
USERNAME = 'admin'
PASSWORD = 'admin_password'
def initialize()
super(XSD::QName.new(NAMESPACE, 'Security'))
end
def on_simple_outbound
{"UsernameToken" => {"Username" => USERNAME, "Password" => PASSWORD}}
end
end
Usage
Let's assume you have DashboardController in your application and want to show specific project name. Here is the code that will extract project name via web services.
require "defaultDriver.rb" require 'wsse_authentication.rb'
class DashboardController < ApplicationController def index driver = ProjectServiceSoap.new
#Add authentication driver.headerhandler << WsseAuthHeader.new()
# Print project name project = driver.getByID(:id => 2) @project_name = project.getByIDResult.name end end Labels: API, ruby, soap, web services
01 April, 2009 / TargetProcess Announced v.2.14 Release With Full Waterfall Support
We are extremely happy to announce the full Waterfall support in TargetProcess. No wonder it has the reputation of being the most flexible agile project management software on the market! New v.2.14 (special edition) will include features like:
Gantt Charts On All Levels
You will at least see nice and accurate Gantt charts in project, release and even iteration scope. Now you may define and manage Critical Path painlessly. Do you know your real iteration end date? With Critical Path you can predict it with 105% probability with minimal effort.
Extensive Dependencies Management
Dependencies management on tasks level is a really complex thing for any project. Now with TargetProcess you may pretty easy define all dependent tasks. Why stop there? TargetProcess is smart enough to generate potentially dependent tasks for you.
Waterfall Life-cycle Process Support
As you already know, TargetProcess has unique concept of Process. You may tune it to support your development process. Now it is possible with Waterfall as well! You may define all important project phases like Requirements, Design, Implementation, Verification, Maintenance.
Also you may enable such valuable practices as Big Design Up Front, Requirements Freeze and Fixed Budget. User interface adopted for the current project phase. For example, during Implementation phase you can't add defects and run test cases. During Requirements phase you can't commit code into repository. This forces development team to strictly follow Waterfall process which is definitely the very right road to the project success.
Micro-management Support
Micro-management is a very important thing in software development projects. You just can't spent time procrastinating or learning new technologies. Developers should focus on code only, every minute is important! Software development is hard and complex adaptive system in its core; you should do your best to complete project on time and under budget.
Now with TargetProcess you may estimate tasks down to minutes! That powers another extremely valuable metric – individual velocity. You can control everything and that is just great!
TargetProcess development teams hopes you'll enjoy new innovative functionality that we are providing with this special Waterfall-edition release. Please leave your comments! Labels: agile, release, waterfall
26 March, 2009 / ASP.NET 2.0 AJAX, Safari and Scroll Offset Tricks
Couple days ago, I faced odd bug with DragDropManager at Microsoft.Web.Preview.dll. It doesn’t work correctly if the page is scrolled down in Chrome and Safari browsers. Google did not help. Debugging did not help as well (DragDropManager file is really huge). The last way was to use reflector tool to dig into sources.
The first odd thing was classes hierarchy. Two classes were the most interesting to me: Sys.Preview.UI.IEDragDropManager and Sys.Preview.UI.GenericDragDropManager.
And the following declarations:
Sys.Preview.UI.IEDragDropManager.registerClass('Sys.Preview.UI.IEDragDropManager', Sys.Component);
Sys.Preview.UI.GenericDragDropManager.registerClass('Sys.Preview.UI.GenericDragDropManager', Sys.Preview.UI.IEDragDropManager);
The fuzzy thing is that GenericDragDropManager derives IEDragDropManager . It sounds like abstract class derives from concrete class. I truly believe such naming obscures readability. Gutting the code, I figured out that getScrollOffset method is overridden in for Safari browser (and it means for Chrome as well).
if (Sys.Browser.agent === Sys.Browser.Safari) {
Sys.Preview.UI.GenericDragDropManager.__loadSafariCompatLayer =
function Sys$Preview$UI$GenericDragDropManager$__loadSafariCompatLayer(ddm) {
ddm._getScrollOffset = ddm.getScrollOffset;
ddm.getScrollOffset = function ddm$getScrollOffset(element, recursive) {
return { x: 0, y: 0 };
Sounds like code owners just didn’t care about scroll offset. What to do? All what I needed to do is just to prohibit override for Safari to allow base class IEDragDropManager to handle the scroll offset for Safari.
Sys.Preview.UI.IEDragDropManager.prototype.getScrollOffset = function () {
var left = element.scrollLeft;
var top = element.scrollTop;
if (recursive) {
var parent = element.parentNode;
while (parent != null && parent.scrollLeft != null) {
left += parent.scrollLeft;
top += parent.scrollTop;
if (parent == document.body && (left != 0 && top != 0))
break;
parent = parent.parentNode;
}
}
return { x: left, y: top };
}
The hack:
Sys.Preview.UI.DragDropManager._getInstance().getScrollOffset = Sys.Preview.UI.IEDragDropManager.prototype.getScrollOffset
Another annoying issue is auto scroll to the top during drag operation. The hack is as trivial as just an empty handler:
Sys.Preview.UI.DragDropManager._getInstance()._autoScroll = function() { }
The full hack for both issues looks quite strange:
if (Sys.Browser.agent === Sys.Browser.Safari) {
Sys.Preview.UI.DragDropManager._getInstance().getScrollOffset =
Sys.Preview.UI.IEDragDropManager.prototype.getScrollOffset
Sys.Preview.UI.DragDropManager._getInstance()._autoScroll = function() { }
}
The only excuse to ASP.NET Ajax development team is that it was RC build... Labels: ajax, asp.net, JavaScript
24 February, 2009 / TargetProcess v.2.13 released: Help Desk improvements
Yesterday we've released TargetProcess v.2.13. The release is fully dedicated to Help Desk improvements.
In short, we've improved Help Desk user experience and made some actions easier. Some usage patterns:
Action | Old way | New way |
| Check for unprocessed requests | Navigate to requests list, sort by date. Then sort by last comment date. Filter out ideas to see just issues and questions. | Navigate to Issues Queue |
| Reply to typical request | Find similar request using search, navigate to it, find appropriate comment, copy this comment and add to the new request. | Click Attach Solution, select required solution. |
| Maintain conversation | Open request, try to find latest comment in the messy comments thread, edit comments to remove bad formatting and redundant information | Open request and read clean comments thread. |
Labels: email integration, help desk, issues, release, support
16 February, 2009 / Developing TargetProcess v.3.0: Navigation (Tabs or Tree?)
First thing we are going to change in v.3.0 is navigation. First discussion was quite general and first solution most likely is not ideal. We rightly identified two major different areas: inside and outside of a project. Initially we wanted to separate navigation outside of a project and inside of a project, thus having two completely different menus. But what if we can unite these areas?
Indeed, there are lot of similarities. We may just create global filter by project. If you select a specific project, you will be inside the project and, for example, Help Desk will show requests from this project. But if you select All Projects value then Help Desk will contain all requests from all your projects. This approach has several nice advantages:
- Main menu does not change, only sub-menu is different inside and outside of a project. It gives better perception and better learning curve.
- Global project filter is an easy-to-adopt concept. You always know where you are.
- When you switch project, you will remain in the same area. For example, now you are in the backlog of project Alpha. You change project and appeared in the backlog of project Beta.
It may look like this:
Option 1. Tabs
We've received several requests to add left panel with a tree navigation. I never thought it was a good idea, but you never know till try.
Option 2. Tree
The question is do you like tabs or tree? It seems both approaches has own advantages and it is really hard to select the best one. We are looking for your opinion! Labels: design, developing, navigation, UI, usability
11 February, 2009 / New Help Desk Portal. Issues.
Let's finalize new Help Desk Portal concept. We are starting development next week, so you have a little time to provide valuable feedback :)
Issues List
Contains all issues with filtering option. State of the each issue is highly visible. It shows whether bug created from the issue and when it will be fixed. Also if someone knows solution, he may attach solution to the issue right away.
Post Issue
When someone post an issue, Help Desk Portal checks on the fly whether similar issues already exist and display the list on the right. Moreover, it displays possible solutions (nothing special, just keyword search with results ranking). It will help to avoid issues duplication and in some cases will save people time.
 Labels: design, developing, help desk, helpdesk, UI, usability
10 February, 2009 / New Help Desk Portal. My Requests
Continue posting mock-ups of the upcoming Help Desk Portal. Definitely there should be a place where people may see all posted ideas, issues and questions. In this list user should focus on what is going on and get quick answers to the questions like:
- "Should I reply to something to help with problem resolution?"
- "When will the bug for the request XXX be fixed?"
- "Are there any interesting discussions around my ideas?"
The My Requests list has nice right column that shows exact state of the each idea and issue. Think support forgot about you and your problem? Just click nudge link :)
 Labels: design, developing, help desk, helpdesk, UI, usability
09 February, 2009 / New Help Desk Portal. Ideas and Issues.
We are thinking about Issues and Ideas separation. They are quite different and needs separate lists, views, etc. based on our analysis. People have different goals when working with ideas and issues, and this should be reflected in the dHelp Desk Portal design.
What is important for person who looks at idea? And what is important for person who looks at issue?
| Idea |
Issue |
- Discuss idea
- Add attachments
- When it will be implemented?
- Is this idea important?
- How can I vote for it?
- Tag the idea
|
- Discuss issue
- Add attachments to the issue
- When it will be resolved?
- Do I need to provide more info?
- Are there any ready solutions to my issue?
|
Here is what we have so far.
Issue View
Idea View
 Labels: design, developing, help desk, helpdesk, ideas, issues, UI
06 February, 2009 / New Help Desk Portal. Moving Forward.
Finally, I may share ideas/stories/requests that will be implemented in the new release of Help Desk Portal.
We have selected about 20 customers' requests and improvements (all are reasonable and most of them improve usability). Here is the list that includes the most interesting requests.
- Search by ID
- View Help Desk Request Number (#) in Requests Lists
- Add a "Vote" mechanism to the request detail in the help desk.
- Filter by Project/Product
- Better Notifications (new comment added)
- Improve Help Desk User experience (Tag Cloud)
- Disable state change
- Filter by Request state (open/closed)
- Attach file when posting a request
- User profile management
- Customer should see all related user stories, features and bugs created from requests in one place
- Sorts: by last-updated, by last-comment, by votes
- Easy customization (promoted in the latest blog post)
As you may expect, we have own ideas as well:
- Separate ideas and issues
- Dashboard with recent requests, top requests, etc.
- Solutions (a part of self-service)
Some mockups should help you to get the new Help Desk portal look and feel.
Help Desk Portal Dashboard
Dashboard is a first page for the new users and it should be crystal clear what can be done in Help Desk Portal. Also it includes latest ideas and request as well as top ideas.
Ideas List
Ideas list obviously shows ideas. It is possible to filter ideas by state ad by tags, sort ideas.
This is a work and progress and your comments are welcome! Labels: design, developing, help desk, usability
02 February, 2009 / Developing TargetProcess v.3.0: New Help Desk Portal
Help Desk Portal is quite important application. It allows our customers to interact with us. Also it allows customers of our customers to interact with our customers (weird assertion, but it's true :). We've collected quite many requests for Help Desk Portal improvements and finally decided to push it forward.
Here is the first mockup of the home page. It is still a work in progress, so comments/changes/advices are welcome.

There are some ideas behind the Help Desk Portal re-design:
- When someone has a problem, he should be able to find existing solution easily (if any). If there is no solution, it should be straightforward how to post a request
- Ideas and Issues should be separated. They have quite different flows and expectation. If someone post an issue it should be resolved quickly. Idea can live in the backlog for years.
- People may use search or tags to find relevant ideas and requests.
The next step may be to add more social networking into Help Desk Portal (self-service is a great thing if you can encourage other customers to provide solutions and answer the questions). However this is just an idea so far. Labels: design, developing, help desk, UI, usability, v.3.0
|
|
We are developing TargetProcess agile project management software and blogging about our progress.
Try TargetProcess
TargetProcess quick tour
|