alfresco devcon 2011. implementing egov portal. powered by alfresco and orbeon
DESCRIPTION
TRANSCRIPT
![Page 1: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/1.jpg)
Implementing eGovernment PortalPowered by Alfresco and Orbeon
Oksana Kurysheva Alexey Ermakov
![Page 2: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/2.jpg)
AgendaPart 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
![Page 3: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/3.jpg)
Part I:Problems faced and approach chosen
![Page 4: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/4.jpg)
The aim
Make government services available for citizens and businesses online in electronic form
![Page 5: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/5.jpg)
The aim
Make government services available for citizens and businesses online in electronic form
• Information about government services and ways of obtaining
![Page 6: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/6.jpg)
Typical local eGov portal: information web siteStatic information about eGov services is available
![Page 7: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/7.jpg)
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
![Page 8: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/8.jpg)
Main problems to address
Convert existing paper forms into electronic format
Establish workflows to execute submitted forms
![Page 9: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/9.jpg)
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
![Page 10: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/10.jpg)
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
![Page 11: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/11.jpg)
Electronic forms management: finding the tool
What Alfresco is:
• Document management
• Forms storage and management
• Workflow automation platform (discussed further)
• Open and flexible ECM that creates the basis for future inter-agency cooperation and systems integration
What Alfresco is not:
• Form authoring tool that allows non-technical users to create complicated forms visually
Approach: integrate Alfresco and Orbeon
![Page 12: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/12.jpg)
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
![Page 13: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/13.jpg)
Form definition creation in Orbeon BuilderVisual form definition editor
![Page 14: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/14.jpg)
Form definition creation in Orbeon BuilderAdding auto-checking rules to control
![Page 15: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/15.jpg)
Form definition creation in Orbeon Builder
Uploading PDF template for printing according with local regulation (prepared in usual OpenOffice.org/LibreOffice)
![Page 16: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/16.jpg)
Published formexample
![Page 17: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/17.jpg)
Solution: forms authoring and submission
![Page 18: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/18.jpg)
Addressing workflows: basic diagram
![Page 19: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/19.jpg)
Addressing workflows: basic diagram
The issue:Step 8 is actually a monstrous non-formalized process
![Page 20: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/20.jpg)
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
![Page 21: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/21.jpg)
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
![Page 22: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/22.jpg)
Solution: complete architecture
![Page 23: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/23.jpg)
Part II:Implementation details
![Page 24: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/24.jpg)
Orbeon Integration: Approach
![Page 25: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/25.jpg)
Orbeon Integration: Implementation
![Page 26: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/26.jpg)
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
![Page 27: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/27.jpg)
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>
![Page 28: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/28.jpg)
PUT Requestpersistence.put.js
// create/get filevar 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();
![Page 29: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/29.jpg)
Persistence API problems
• Forms definitions are stored in eXist
• Content-type mismatch problem
![Page 30: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/30.jpg)
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>
![Page 31: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/31.jpg)
Orbeon Integration: Persistence Layer Complete
![Page 32: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/32.jpg)
Submitted forms execution
• Content model to store form metadata
• Workflow to automate form execution
• Java class to send e-mails to client
![Page 33: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/33.jpg)
Content model <type name="form:formType">
<title>Content class representing submitted form</title>
<parent>cm:content</parent>
<properties>
<property name="form:id">
<type>d:text</type>
<mandatory>true</mandatory>
</property>
<property name="form:submitDate">...
<property name="form:checkDate">...
<property name="form:isCorrect">...
<property name="form:executeDate">...
<property name="form:checker">...
<property name="form:executor“>
</properties>
</type>
![Page 34: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/34.jpg)
Workflow
![Page 35: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/35.jpg)
Workflow model
<type name="formwf:checkTask">
<parent>bpm:workflowTask</parent>
<overrides>
<property name="bpm:packageItemActionGroup">
<default>read_package_item_actions</default>
</property>
</overrides>
<mandatory-aspects>
<aspect>formwf:formaspect</aspect>
<aspect>formwf:assignee</aspect>
<aspect>formwf:commentAspect</aspect>
</mandatory-aspects>
</type>
formWorkflowModel.xml: type definition
![Page 36: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/36.jpg)
Workflow model
<aspect name="formwf:formaspect">
<properties>
<property name="formwf:email">
<type>d:text</type>
</property> <property name="formwf:checker">...
<property name="formwf:previewlink">...
<property name="formwf:statuslink">...
</properties>
</aspect>
formWorkflowModel.xml: form aspect definition
![Page 37: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/37.jpg)
Workflow model
<aspect name="formwf:commentAspect“>
<properties>
<property name="formwf:comments">
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>false</multiple>
</property>
</properties>
</aspect>
formWorkflowModel.xml: comment aspect definition
![Page 38: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/38.jpg)
Workflow model
<aspect name="formwf:assignee“>
<associations>
<association name="formwf:assignee">
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>cm:person</class>
<mandatory>false</mandatory>
<many>false</many>
</target>
</association>
</associations>
</aspect>
formWorkflowModel.xml: assignee aspect definition
![Page 39: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/39.jpg)
Java mailer
public class Notifier extends BaseProcessorExtension {
...
public boolean send(String to, String subject, String content) {
...
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
...
Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
...
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
transport.connect();
transport.send(message);
transport.close();
}
}
![Page 40: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/40.jpg)
Orbeon Integration: Workflows Complete
![Page 41: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/41.jpg)
Additional Alfresco extensions developed
• Custom file uploader
• Related workflows extension
![Page 42: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/42.jpg)
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
![Page 43: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/43.jpg)
Custom file uploader
![Page 44: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/44.jpg)
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
![Page 45: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/45.jpg)
Related workflows
![Page 46: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/46.jpg)
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
![Page 47: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/47.jpg)
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
![Page 48: Alfresco DevCon 2011. Implementing eGov Portal. Powered by Alfresco and Orbeon](https://reader033.vdocuments.mx/reader033/viewer/2022042623/549004f6b479599d2d8b4ded/html5/thumbnails/48.jpg)
You can find this presentation and more details about this implementation on blog.ossgeeks.org
Contact us at [email protected] and [email protected]
And follow us on twitter: @aviriel and @fufler