Todd Appleton - May 5, 2014

ToddAppleton

NOTE: This blog post refers to software that is no longer available.

DreamTeam was originally developed in 2005 and was the first application on the Salesforce.com AppExchange. Since then, over 20,000 companies have used DreamTeam for project and document management, resource management, collaborative calendaring, time & expense management, and project portfolio reporting. We’re excited to announce that you can now run DreamTeam on the DreamFactory Services Platform. This is a great example of a rich client application that takes full advantage of our REST API platform to deliver enterprise-grade capabilities for project and document management.

Installation Instructions

The DreamTeam application can be downloaded from GitHub, we have included the link below. Follow the instructions in the README file to import the application and associated schema into your DSP. DreamTeam uses the DreamFactory Player as a rich-client front end. The backend database and document store are hosted on your DSP.

You can run DreamTeam directly from the Admin Console. You may also want to create some users and make sure they have access rights to the DreamTeam schema. After that, people can access DreamTeam from a desktop browser. We have provided a landing page for this purpose. You will need to paste the URL for your DSP along with a username and password into the landing page. These values are remembered for return visits.

Schema Management

You can import, modify, and export the schema required by your apps. In the case of DreamTeam there are over 15 different database tables many of which are related. For example each DreamTeam project can have any number of child tasks. To implement this each child task has a reference field that links it to the parent project. DreamTeam takes full advantage of this capability by using one-to-one, one-to-many, and many-to-many relationships.  The following diagram shows the relationships between the core DreamTeam tables.

DreamTeam tables
  • Each project can have one or more resources
  • Each project can have one or more highlights
  • Each project can have one or more tasks
  • Each project can have one or more issues/risks
  • Each task can have one or more issues/risks
  • Each task can have one or more action items
  • Each issue/risk can have one or more action items

You get the idea: this is an enterprise-class project management solution! DreamFactory provides great capabilities for working with SQL databases. We can manage and use all of these relationships to create complex projects with many linked objects. You can even load a project with all of the related Tasks and Resources in a single REST request. Here is a picture of a Gantt Chart from the Project Manager Interface.

toddblog

Local MySQL Database

You can connect your DSP to many different types of databases, but the default database is a local MySQL setup. You can manage the database with tools like PhpMyAdmin or directly via the REST API. It’s a full fledged relational database that you can use for whatever you want. DreamTeam uses it to store all of its data for projects, tasks, and resources. Also when it comes to document management, we store searchable information on each document in the database. This can include things like name, created and modified dates, created by user, size, description, and keywords. The relational nature of the MySQL database is perfect for DreamTeam.

Comprehensive REST API

Each DSP has a REST API that communicates with the client using your choice of JSON or XML. This makes performing CRUD operations on any database table a breeze. You can also use the REST API to manage system resources and database schema. DreamTeam makes heavy use of the ability to GET, POST, PUT/PATCH, and DELETE database records and uses a SQL-like query syntax for complex logical operations. The API also allows for querying related data and then updating all related records in a single call. It works the same on the local database and any database you configure as a service, effectively adding a REST API to any SQL or NoSQL database. As an example, here is how you could query all tasks that belong to a particular project, such as the project with id = 37.

GET /rest/db/DFDT_Task__c?filter=Project_Link__c=37

You should encode the filter string so what you really want is

GET /rest/db/DFDT_Task__c?filter=Project_Link__c%3D37

The DreamTeam Project Calendar must load and display a variety of different tables but only for the current user, and only for a specific date range. Here is an example of a complex filter string with date comparisons from the Calendar:

OwnerId=55 and Date__c>=2012-08-05 and Date__c<=2012-08-11
toddblog2

Role-Based Permissions

You can assign each user a role that grants them access to specific apps and services. Using this method you could set up DreamTeam so that certain database tables are read-only for some users and full access for others.

Easy Authentication

When you start up DreamTeam on DSP it inherits the session information from the current session, often the DSP admin console. Your apps can do this too, or you can provide your own authentication using the REST API. We also support OAuth login via providers like Facebook and GitHub.

Try it Out!

These are just some of the DSP features used by DreamTeam that set DSP apart from the other platform offerings currently out there. We’re pleased to support the DreamTeam Suite on DSP and look forward to seeing what apps you can build. Go to www.dreamfactory.com to get started. And we’re here to help! We’d love to hear your questions or comments. If you need help you can reach us at [email protected]