[TYPO3-50-general] Questions about FLOW3

Robert Lemke robert at typo3.org
Tue Mar 17 10:20:14 CET 2009


Hi Timo,

Am 17.03.2009 um 02:09 schrieb Timo A. Hummel:

> while working for quite some time on Project "JerryMouse", a project
> similar to FLOW3,

It's not this, is it? http://www.jerrymouse.com/
SQNR

> - Enable developers to write applications which run independent of the
> used front end; that means, the base application should not be need to
> rewritten if the user decides to switch from a web front end to an
> AJAX/AJAJ front end. This is very important for new technologies like
> Adobe AIR [1].

The base application (ie. the business logic, including Domain Model,
Services etc.) is completely independent from the controller / view.
All data (ie. domain objects residing in the content repository) will
be accessible through REST services and it's very easy to write your
own REST controllers (or old-school SOAP / XML-RPC services).

However, from my experience, different frontends require different  
application
flows and therefore need their own controller / view anyway.

> - Enable integration of business processes at virtually every point.  
> For
> example, an administrator could setup a business process which hooks
> into the user management, and automatically performs specified tasks
> when a new user is created.

FLOW3 comes with a Signal Slot based mechanism which can be used as a
more powerful alternative to hooks.

> - Enable applications based on the framework to be integrated together
> into a solution. In case of FLOW3 and TYPO3, this would mean that a
> solution provider can take TYPO3 and combine it with a FLOW3-based  
> shop
> and probably a FLOW3-based CRM solution and deploy that in a single
> solution for a specific customer.

That's a very important goal we follow: Use your code for standalone
FLOW3 based applications, or in combination with TYPO3, or only with
TYPO3, or ...

> - Enable one front end to  fit all applications. One thing I really  
> hate
> is to switch from one front end to another, even if the solution is
> integrated. For example, if I work in the content management, I should
> be able to switch to the CRM inside the front end, and not to open
> another front end somewhere else.

The only frontend we currently develop is TYPO3 (where it is called  
backend ...).
I imagine that the TYPO3 backend will be so versatile and powerful that
it will be used even without the CMS part and therefore acts as a common
UI for many FLOW3 based applications.

> - Enable solutions to run distributed. Taking the solution example  
> from
> above, the FLOW3-based CRM solution runs at the company, along with
> other FLOW3-based business tools like accounting. The FLOW3-based shop
> and TYPO3 run at a web server (or multiple web servers).

We have that in mind but it's not the top goal for our first throw.

Also remember Martin Fowler's First Law of Distributed Object Design:
Don’t distribute your objects!

Anyway, I believe that FLOW3 is decoupled and flexible enough to be  
split
up onto different servers. We also have concrete plans for a first class
staging support (from dev server to production server etc.).

> - Enable rapid application development for customer-specific projects.
> This means that a developer should be able to create a new kind of
> application in a very simple, efficient way and is aided by tools to
> make development easier. While this is not a requirement for the  
> initial
> version, it is much more important once the framework is spread.

This is the very first reason why we started developing FLOW3.

Look at this (Fluid-based) HTML form:

	<f3:form method="post" action="create">
		<label for="name">Name</label>
		<f3:form.textbox name="newBlog[name]" property="name" />
		<label for="description">Description</label>
		<f3:form.textarea name="newBlog[description]"  
property="description" />
		<f3:form.submit>Create</f3:form.submit>
	</f3:form>

On submitting the form you end up in this action method:

	/**
	 * Creates a new blog
	 *
	 * @param F3\Blog\Domain\Model\Blog $newBlog A fresh Blog object  
which has not yet been added to the repository
	 * @return void
	 * @author Robert Lemke <robert at typo3.org>
	 */
	public function createAction(\F3\Blog\Domain\Model\Blog $newBlog) {
		$this->blogRepository->add($newBlog);
		$this->redirect('index');
	}

That's all you need to create a new blog. The arguments of your action  
method
and their type are detected and the incoming POST data is validated and
transformed into an object. The security framework makes sure that  
you're
allowed to create new blogs.

You only have to take care of the business logic and application flow.

> Since I believe that it's time to prove that PHP is enterprise-ready,
> and PHP-based applications should be enterprise-ready, too, it's
> exciting that you guys already did quite much work on the FLOW3  
> project
> and I hope that my goals are compatible with the goals of FLOW3. I  
> hope
> you can give me some feedback!

I hope that I could give you some more insights.

Cheers,
robert





More information about the TYPO3-project-5_0-general mailing list