2. Agenda
Part I – Problem definition and brief overview of the approach
• Local eGovernment Portals – Russian experience – current state
and the most challenging problems
• Technical requirements – what do we need, what Alfresco provided
and where 3rd party solution help was required
• Overall architecture of the system based on Alfresco and Orbeon
Part II – Implementation details
• Integrating Alfresco and Orbeon in less then a month – detailed
architecture, configs, key sources snippets
• Workflows implementation – theory and practice – what we needed
in real life in addition to Alfresco out-of-the-box capabilities
4. The aim
Make government services available for citizens
and businesses online in electronic form
5. The aim
Make government services available for citizens
and businesses online in electronic form
• Information about government services and ways of obtaining
6. Typical local eGov portal: information web site
Static information about eGov services is available
7. The aim
Make government services available for citizens
and businesses online in electronic form
• Information about government services and ways of obtaining
• Ability to submit a request to receive government services online
• Full back-office integration, including inter-agency cooperation
8. Main problems to address
Convert existing paper forms into electronic format
Establish workflows to execute submitted forms
9. Addressing electronic forms creation
Creating forms sounds simple. But it is not:
• Forms can be really huge and complicated
• Forms change time to time (monthly update for some of them)
• List of forms to be available online is not fixed — it is regulated by
federal and local laws, updates happen few times a year
• Each agency has its own requirements
Bottom line: there is no way to create forms definitions once
10. Addressing electronic forms creation
The only possible solution: government employees can create
and edit forms definitions themselves
• It means creation and editing of dozens of complicated forms by
non-technical users (including auto-checking configuration, mapping
to templates for printing, etc)
We need visual form authoring tool
11. Electronic forms management: finding the tool
What Alfresco is: What Alfresco is not:
• Document management • Form authoring tool that
• Forms storage and allows non-technical users to
management create complicated forms
visually
• Workflow automation
platform (discussed further)
• Open and flexible ECM that
creates the basis for future
inter-agency cooperation
and systems integration
Approach: integrate Alfresco and Orbeon
12. What is Orbeon?
• Orbeon Forms – open source forms solution
• Based on XForms and Ajax
• Implemented in Java
• Integration-friendly (discussed further)
• Orbeon consists of 2 modules:
• Forms Builder – visual form authoring tool
• Forms Runner – runtime for deployed forms
15. Form definition creation in Orbeon Builder
Uploading PDF template for printing according with local
regulation (prepared in usual OpenOffice.org/LibreOffice)
20. Addressing workflows
The issue: internal workflows are not fixed strictly
• Each basic 'atomic' internal workflow can be described in details but
throughout form execution can not:
• There are a lot of optional stages that can be included or not
• Single form execution can trigger lots of internal processes to request
additional papers, approvals, notifications an so on
• Each sub-process can trigger even more child processes
• Yeh, Russia is a very bureaucratic country after all
21. Addressing workflows
Solution: create workflows relations
• Create basic 'atomic' workflows definitions
• Allow users to associate these simple workflows with each other to
build complex processes on demand
26. Persistence API Implementation
REST Web Scripts
• PUT: add new file to repository
• GET: return file from repository
• POST: perform a search in repository
• DELETE: remove file from repository
27. PUT Request
persistence.put.desc.xml
<webscript>
<shortname>Persistence Layer</shortname>
<description>Web script implementing Orbeon Forms
Persistence Layer put request</description>
<url>/persistence/crud/{app_name}/{form_name}/data/
{form_data_id}/{file_name}</url>
<authentication runas="orbeon">user</authentication>
<transaction>required</transaction>
<format default="html">argument</format>
</webscript>
28. PUT Request
persistence.put.js
// create/get file
var file = folder.childByNamePath(file_name);
if (!file && folder.hasPermission("CreateChildren")){
file = folder.createNode(file_name, "form:formType");
file.addAspect("cm:versionable");
file.addAspect("cm:auditable");
file.properties["cm:created"] = new Date();
...
file.properties["form:id"] = form_data_id;
}
else
file.properties["cm:modified"] = new Date();
file.save();
var copy = file.checkout();
copy.properties.content.write(requestbody);
file = copy.checkin("modified by orbeon forms", true);
file.mimetype = requestbody.mimetype;
file.save();
29. Persistence API problems
• Forms definitions are stored in eXist
• Content-type mismatch problem
30. Problem: content type mismatch
Solution: define two different scripts
<!-- web script to return application/octet-stream -->
<webscript kind="org.alfresco.repository.content.stream">
...
<url>/persistence/crud/{app_name}/{form_name}/data/
{form_data_id}/{file_name}.pdf</url>
<format default="">argument</format>
...
</webscript>
<!-- web script to return application/xml -->
<webscript>
...
<url>/persistence/crud/{app_name}/{form_name}/data/
{form_data_id}/{file_name}.xml</url>
<format default="_xml">argument</format>
</webscript>
42. Custom file uploader
• Attach files from local drive directly to workflow
• Intuitive 'Google-style' end-user experience
• Uses YUI Uploader: no third party libraries are needed
44. Related workflows
• Creates relations between workflows
• Start new workflow from task edit page
• View all related workflows of current task from task page
• Easy to see which process blocks current task
• Easy to get process «dependencies» for stats
• Bottom line: no «mega workflow» is required, allows to
build execution paths from «basic blocks» on demand
46. Summary: Current project state
• Orbeon and Alfresco integration allows non-technical
users to create and edit form definitions easily
• Forms are stored and processed in Alfresco, creating a
basement for managing all documents in one system
• Forms execution became more intuitive and simple
compared with legacy document management system
47. Roadmap: Features planned
• Statistics module to report on workflows execution for
management
• Organizational chart extension to pick employees from
orgchart, assign tasks to organizational roles, manage
tasks access control, get statistics on departments
• Replace eXist completely, move everything to Alfresco
48. You can find this presentation and more details about this
implementation on blog.ossgeeks.org
Contact us at
okurysheva@vdel.com and aermakov@vdel.com
And follow us on twitter: @aviriel and @fufler