cancel
Showing results for 
Search instead for 
Did you mean: 

Methodology to build Alfresco application in 10 steps

jck
Champ in-the-making
Champ in-the-making
Hi all,
this post aims at providing the Alfresco developer a methodology to build powerful Alfresco application in 10 steps, and in 10 days. The project developed hereafter to explain this methodology is the track of a real one. Feel free to add new requirements to extend the use case.

Step 1 - Define the requirements 🙂

This tutorial aims at developing a project to attach metadata to scanned or uploaded document through adaptative forms and multi-role workflows. Moreover, according the chosen content-type, used workflows may vary. This application can be used with any scanner (even the one at 40 Euros 🙂 + Alfresco and the resulting application is finally a kind of digitization chain.

All kind of documents may be processed. For the sake of the demonstration, we can imagine to process following kind of documents:
* bills, invoices
* holidays requests

Do you think about other features or content-types?
Any comments?

JC
14 REPLIES 14

edubreil
Champ in-the-making
Champ in-the-making
Hi all,

Step 2 : Stabilize the use case

For this tutorial, our user needs to type, process, share and stock mails.
We finally define five main features:
1 - dematerialize file (scan documents)
2 - store dematerialized documents
3 - type documents (associate meta data to content types)
4 - process documents associated to these content types
5 - file documents in the right place (in the classification scheme)

To address these features we adopt a methodology in three levels:
1 - design contents types and meta data
2 - design forms
3 - design workflows

We are going to work with SIDE-Labs, a graphical IDE based on Eclipse, so following steps will show SIDE-Labs in action.

Any comments?

Stl.

jck
Champ in-the-making
Champ in-the-making
In fact, developing an application is a repetitive scenario in 5 steps:
    * Think (requirements)
    * Input (store and input)
    * Process (workflow)
    * Browse (navigate and view)
    * Analyze (reports and Business Intelligence)

First one has just been answered in previous posts.

mrogers
Star Contributor
Star Contributor
If the point of this tutorial is "methodology", then I'd like to see some mention of iterative development in your process.    I think this is especially important for new users of Alfresco who may fail to implement a big "requirement".     However they would be able to tackle a large task if it were broken down into small but useful steps.

For example "design content types" may become a nightmare if you attempt to define a model for the entire business on a blank sheet of paper.   Following that approach,  you will probably spend a lot of time working on stuff that is never used.     It's probably better to start with a minimal requirement and then refine it later.

jck
Champ in-the-making
Champ in-the-making
Hi,
I completely agree with you. Of course, development process is a repetitive and iterative process.

In this tutorial, we'll only manage one document type knowing that adding other content types is just a matter of iterating on thist first set of steps.

One of the main risk is to try to draw the complete picture and ending with nothing. One way is FDD (Feature Driven Development) which aims at structuring development in little steps you can develop one after the other, so when you end, whatever the reason, at least you have a set of working feature.

JC

edubreil
Champ in-the-making
Champ in-the-making
Hi all,

Step 3 : design content types

We define the following contents types in two diagrams titled "digitization" and "common".

The first one, "digitization", includes following content-types:
- document: label, number, comment, dematerialization and author
- incoming mail: sending date and sender
An "Service" enumeration  is attached to the sender.

The second one, "common", includes following classes:
- company: name, address, phone number
- person: first name, last name, age

You finally get the following diagrams with SIDE-Labs.
[img]http://www.side-labs.org/wiki/images/thumb/4/4e/100000000000035F0000020B6086A27A.jpg/800px-100000000...[/img]

Stl.

jck
Champ in-the-making
Champ in-the-making
Hi,
I post here:
* methodology overview
* requirements diagram
* data diagram

Methodology overview:
[img]http://www.side-labs.org/wiki/images/d/dd/10000201000002BB00000148179B478D.png[/img]

Requirements diagram:
[img]http://www.side-labs.org/wiki/images/7/75/10000000000003A800000291BB24A48D.jpg[/img]

Data diagram:
[img]http://www.side-labs.org/wiki/images/b/be/10000201000002F600000251F9B3F781.png[/img]

The diagrams have been made with SIDE-Labs. The corresponding wiki page can be directly accessed on http://www.side-labs.org/wiki/index.php/Documentation:User:Tutorial-10Steps.

JC

edubreil
Champ in-the-making
Champ in-the-making
Hi all,

Step 4 : Design Form Diagram

The form diagram is built from the class model.
The 'Load Resources' feature enables to retrieve the classes and properties contained in the data model.
For example,'Document' class is composed of three properties : label, a number, a comment …
Moreover, the form modeler enables to organize classes and properties into various forms, either for usage concerns (beginner, normal or expert forms) or visual appearances (horizontal, vertical, tabbed and borderless presentation). On the picture below, you can see the tree model on the left and on the right, the view outline.

[img]http://www.side-labs.org/wiki/images/thumb/c/c1/1000000000000212000002E32A4E333F.jpg/430px-100000000...[/img]

Any questions?

Stl.

edubreil
Champ in-the-making
Champ in-the-making
Hi all,

Step 5 : Test Form

Once the form diagram designed, we have to generate and deploy it with Side-Labs, which can be described as a 'super configurator' for Alfresco.
First, it is nesessary to create an '.application' model to configure the options of generation and deployment.
A complete documentation is available to guide the different scales http://www.side-labs.org/wiki/index.php/Documentation:User:GettingStarted.
As it happens, form has been obtained by choosing for:
*model : data and form models
*generation: KSR400 Form > SIDE Chiba Form Generator for Alfresco and KSR500 Data > SIDE Content Model Generator for Alfresco
*deployment: XForms > SIDE Chiba X-Forms Direct Deployer and > Alfresco > SIDE Alfresco Direct Deployer
The model results can be accessed via an index page which lists links pointing to the different forms produced, as illustrated on the pictures below.

Index forms
[img]http://www.side-labs.org/wiki/images/4/4a/100000000000029C000000FB5CDDEEA0.jpg[/img]

InBoxMails forms
[img]http://www.side-labs.org/wiki/images/c/c0/100000000000027F000001BFBDDDF512.jpg[/img]

Stl.

edubreil
Champ in-the-making
Champ in-the-making
Hi all,

Step 6 : Workflow

Still using Side-Labs, configuration tool for Alfresco, the workflow's modeling involves creating the model of the same name .workflowdi.
As requirements and data models, we have three categories of objects:
*actors: Scanning, Administration, Management
*tasks and properties: CheckTypeDocument, ManageMails, Validate, MoveDocument
*links between different tasks: documentType, ifDocumentType, ifNoDocumentType, manageMails, validationTequest, …   
Moreover, the workflow modeler enables to add 'Actions'. An action fits on a transition by right clicking on it and choosing 'Add an action' > Alfresco. Four choices are possible as :
*send e-mail
*import PDF
*export PDF
*create new content

Workflow model
[img]http://www.side-labs.org/wiki/images/e/e4/100000000000031A0000022D8ADEA4BA.jpg[/img]

For example, the code corresponding to the action 'send e-mail' is ever written, so it is just necessary to click on it in the menu, and the Action's window will open.
Very comfortable !

Stl.