Qualipso factory

21
QualiPSo Factory mardi 5 octobre 2010

description

A presentation of the Qualipso Factory, as done in OWF.

Transcript of Qualipso factory

Page 1: Qualipso factory

QualiPSo Factory

mardi 5 octobre 2010

Page 2: Qualipso factory

2

Context

Forge is an on-line service that allows to instantiate, compose and manage collaborative services.

Collaborative services are traditionally Version Control Systems, Bug Trackers, Forums, Mailing list, Wikis etc.

mardi 5 octobre 2010

Page 3: Qualipso factory

3

Motivations

Many forges are available today Gforge, Trac, Launchpad, Codendi,

FusionForge, Sourceforge, GoogleCode, CodePlex, etc.

Very hard to bootstrap an eco-system

mardi 5 octobre 2010

Page 4: Qualipso factory

4

Factory User Story

The targeted user of the QualiPSo Factory is the developer of a new forge service

A forge service developer must be able to create a new collaborative service very easily

mardi 5 octobre 2010

Page 5: Qualipso factory

5

Qualipso Factory Architecture

The QualiPSo Factory is based on a component model

Core services are provided by the forge Authentication, access control, binding,

events, indexation, semantic Forge service developers reuse core/

existing services to develop new collaborative services

mardi 5 octobre 2010

Page 6: Qualipso factory

6

Qualipso Factory Architecture

Technologies used: Java EJB3 Web-fragment (Servlet 3.0 specification) GWT (Google Web Toolkit)

Tools used Maven Eclipse JBoss

mardi 5 octobre 2010

Page 7: Qualipso factory

7

Authenticationprovider

Client

BrowsingService

Service 1

Service 2WS-binding

WS-binding

WS-binding

WS-binding

Forge API

CoreService

SecurityService

Binding

Notification

Indexation

Factory Assembly

Service 3Abstract Service 1 Abstract Service 2 Abstract Service 3

mardi 5 octobre 2010

Page 8: Qualipso factory

8

Factory Benefits

The factory core is a kernel to bootstrap an eco-system The kernel is maintainable, dependable and usable.

The QualiPSo Factory allows composition of services i.e. the workflow service orchestrate project

creation. The QualiPSo Factory allows composition of

resources i.e. create complex resource by composing simple resource. i.e. a “File” resource can be child of a “Forum”

resource or a “Issue” resource.

mardi 5 octobre 2010

Page 9: Qualipso factory

9

/p1 : project

/p1/svn1 : svn repo

/p1/q1 : index queue

/p1/buc1 : s3 bucket

/p1/b1 : bugtracker

/users/u1/a1 : activity feed

FactoryResourceIdentifiersubversion:repository:http://svn.qualipso.org/svn/repo1Service Name Resource Name External ID

Triple expression for rules : Security : (/users/u1,read,/p1/svn1) Notification : (*,commit,/p1/svn1) Semantic: (/users/u1, a, /factory#user)

Sample Factory Instance

/users : folder

/users/u1 : profile

/

mardi 5 octobre 2010

Page 10: Qualipso factory

Developing Factory Services

mardi 5 octobre 2010

Page 11: Qualipso factory

11

Creating a new Abstract Service

Steps for adding factory services

1. Instantiate an empty project with maven archetype

2. Define Service Interface3. Implements Service4. Test service locally5. Publish your Service

6. Assemble your new service with existing ones7. Deploy your assembly8. Run external service tests

ServiceDeveloper

FactoryAdministrator

mardi 5 octobre 2010

Page 12: Qualipso factory

12

Authenticationprovider

Client

BrowsingService

Service 1

Service 2WS-binding

WS-binding

WS-binding

WS-binding

Forge API

CoreService

SecurityService

Binding

Notification

Indexation

New Factory Assembly

Service 3Abstract Service 1 Abstract Service 2 Abstract Service 3

StorageService

WS-binding

Amazon S3

mardi 5 octobre 2010

Page 13: Qualipso factory

13

Results

The developer of a new forge service is the targeted user of the QualiPSo Factory

A forge service developer is able to create a new collaborative service very easily by following the provided methodology

This QualiPSo Factory component model allows to fulfill these objectives

mardi 5 octobre 2010

Page 14: Qualipso factory

Developing Factory Services UI

mardi 5 octobre 2010

Page 15: Qualipso factory

15

Objectives

Extrapolate the same component model, but on the UI side

Use the same tools, the same language, the same methodology, the same model

mardi 5 octobre 2010

Page 16: Qualipso factory

16

Building UI Component

Steps to develop a new UI Component

1. Create new service UI using maven archetype 2. Define components Views3. Define components Events4. Implements component Views5. Implements server communication6. Test server communication and UI locally7. Assemble your new service with existing services8. Deploy your assembly9. Run external tests (selenium)

ServiceDeveloper

FactoryAdministrator

mardi 5 octobre 2010

Page 17: Qualipso factory

17

Assemble Factory UI Components

Authenticationprovider

BrowsingService

CoreService

S3Service

SecurityService

Web Container

Event Bus

Security component

Core service component

Browsing component

Forge API

Web browser

OPContainer

S3 component

Core service UI part

Browsing UI part

S3 UI part

Security UI part

Web Container

mardi 5 octobre 2010

Page 18: Qualipso factory

18

Results

Created a component model based on GWT allowingseparated component development and cold assembly

UI Components are maven-based as abstract services

Same language for abstract services and UI components

Complete development process can be done in the same IDE

Integration in a Single Page Composite Interface

mardi 5 octobre 2010

Page 19: Qualipso factory

19

Conclusion

The kernel component model gives developers the ability to contribute easily writing server side and also client side (UI) extensions in a uniform way

QualiPSo Factory aims to promote the emergence of a forge eco-system

mardi 5 octobre 2010

Page 20: Qualipso factory

20

Open Source

LPGL Sources : https://gforge.inria.fr/projects/qualipso/

Contribution of 2 open-sources libraries for GWT: OpenParts (loadable components) QGWT (Qualipso Graphical Widget

Toolkit)

http://qualipso.orgmardi 5 octobre 2010

Page 21: Qualipso factory

Demo(screencast)

mardi 5 octobre 2010