SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Automating Business Processes in Denver

          A Technical Case Study"
    "   "   "Eric Harper   "   "   "    "Zia Consulting"    "   "eharper@ziaconsulting.com"
    "   "   "Paul Lungu    "   "   "City & County of Denver "   " paul.lungu@denvergov.org"
Who are we?"
Eric Harper
    •  Zia Consulting"
    •  Architect/PM/Developer"

Paul Lungu
  •  City & County of Denver"
  •  Associate Developer"
Who is Zia?

A firm with deep technical expertise & strategic insight, coupled with our Agile
software methodology, provides numerous benefits to our customers"

                       Enterprise Content Management (ECM)
                        An ECM is a cultivation of knowledge -- one of the most valuable assets to any
 Our	
  Partners	
  
                        organization. A proper ECM system ensures content has integrity through proper
                        version control, allows producers to easily create content and publish it to a variety of
                        mediums, and it automates processes, streamlining the review, approval and
                        distribution of content across an organization.  Zia's ECM offerings provide all of these
                        benefits, and more, in a manner tailored to the client's business needs. 

                       Enterprise 2.0 Solutions
                       The focus of technology should always be on people. Zia enables our customers to gain
                       tremendous competitive advantage by allowing their team to collaborate more
                       effectively, respond more quickly to changes, and make better decisions. Adopters of
                       Enterprise 2.0 solutions will find they have a more productive, engaged and informed
                       team.
                       Enterprise Mobile Applications
                        Mobile workforce enablement is an increasing trend for Zia s enterprise customers.
                        Zia s Fresh Docs ECM application is available for iPhone, iPad and Android platforms.
                        The newly released Fresh Xpense application is a simple expense and receipt capture
                        tool for the iPhone that integrates with Xpenser.com.

                       Zia s Agile Solution Methodology
                       At its heart, our Agile-based methodology is centered on a close collaborative approach to
                       maximizing value for our customers. Constant client communication is necessary to ensure
                       that each development iteration addresses features with the highest business value, even if
                       those features were unknown at the launch of the project.
Some Facts about Denver                      "




        The City"
           •    Founded in 1858!
           •    Strong Mayor form of government, consolidated City-County!
           •    Population of 600,000!
           •    16th largest metro area in the United States!
           •    10th largest central business district in the United States!
           •    250,000 households!
           •    One of the fittest and most highly educated cities in the nation!
           •    11,000 city employees!
           •    $1+ billion annual budget!


        Denver Technology Services"
           •    Formed in 2005!
           •    Previously federated organizational model!
           •    300 IT employees!
           •    $48M yearly budget!
Denverʼs Many Content Management
Systems"
         Poor	
  UI	
  	
  
                                                       Meager	
  search	
  capability	
  

       Manual	
  load	
  of	
  metadata	
                               Slow	
  Performance	
  


        Memory	
  Leaks	
  	
  

                                                Nightly	
  Server	
  Reboots	
  


       One	
  security	
  role	
  	
                 14	
  disconnected	
  
                                                   Doc	
  Mgmt	
  	
  systems	
  
       Poor	
  audi=ng	
  &	
  
        RM	
  capability	
  	
  

                                              LiFle	
  Staff	
  Exper=se	
  
Turned to Alfresco + Zia Consulting"
Phase 1: Scanned Documents (2010)
   •     Contracts & Financial Records"
   •     Migrated off Liberty IMS to Alfresco + KOFAX"
        •    Implemented rules-based workflow"


Phase 2: CMIS Integrations (2010)
   •     Document Repository for PeopleSoft CRM and Financials"
   •     iOS App for City 311 Help Center"

Phase 3: Automated Contracting Process (2011)
   •     Customized Advanced Workflow"
        •    Web Service integration with PeopleSoft"
        •    Supports full lifecycle of contracting process"


Phase 4: Human Services Case Management (2011)
   •     Ephesoft Imaging front end"
   •     Repository Integration with custom apps"
Contracting Workflow Process"

Lifecycle
  •    RFP or Contract Request"
  •    Staff Reviews"
  •    Contract Drafting"
  •    Vendor Negotiation & Signature"
  •    City Council Ordinance Process"
  •    City Signatures"

Integration
  •  PeopleSoft Financials (Requisition/Purchase Order)"
  •  SIRE Legislative Information System (Ordinance)"
  •  Oracle OBIEE (Reporting)"
Contracting Workflow Process"

Customized Features
  •    SOAP Web Service for workflow initiation"
  •    Task Email Notification"
  •    Delegation"
  •    “Connected” Workflow"
  •    Rules-driven task assignment"
  •    Automated PDF transformation/generation"
  •    UI Customizations"
  •    Electronic Signature"
  •    Management Dashboard"
Demo"
Customizations"

Web Services                         UI Customizations
  •  Workflow Initiation"               •  Simple (& Non-Simple)
  •  Other apps interfacing "             Filtered Association Gen"
      with Alfresco"                   •  Content Upload"
                                       •  Wiring webscripts with JSF"
Workflow Features
  •    Action Classes"               Custom Actions on Spaces
  •    Delegation"
                                     Custom Core Services
  •    Electronic Signature (PIN)"
  •    Rules-driven Assignment"      Testing
  •    PDF Generation"                 •  Workflow Testing"
                                       •  Unit testing actions, web
                                          services"
Web Service example"
Things you may want to do with web services
(Some of this can be done using CMIS WS API)
  •    Search the repo for docs and meta-data"
  •    Initiate workflow"
  •    Put docs into repo"
  •    Why not just use CMIS API?"
Web Service example (continued)

Exposing servlet-based web services using JAX-WS"
Spring Wiring
<jaxws:endpoint id="fadService" address="/ccd/FadWebService" implementor="#fadWebService">
</jaxws:endpoint>
<bean name="fadWebService" class="us.co.denver.webservice.FADWebServiceImpl">
   <property name="nodeService" ref="NodeService" />
   <property name="searchService" ref="SearchService" />
   <property name="fileFolderService" ref="FileFolderService" />
   <property name="namespaceService" ref="NamespaceService" />
   <property name="transactionService" ref="TransactionService" />
   <property name="repositoryHelper" ref="repositoryHelper"/>
</bean>
Java Code (Annotation Driven)
@WebService
public interface FADWebService{
   public Object[] getDocumentInfo(Criteria [] c) throws FaultMsg;
   public String removeDocument(String uuid) throws FaultMsg;
   public String updateDocument(String uuid) throws FaultMsg;
Custom Workflow Wiring Example"
web-client-application-custom-context.xml – define the web-client-config-custom-wf.xml


web-client-config-custom-wf.xml – defines the properties that will be displayed in your workflow

workflow_def.xml – defines the flow of your work flow


workflow_model.xml – defines the tasks in your workflow

workflow-messages.properties – defines labels in workflow
Workflow Action Example"
Inserting page templates into the workflow
<task-node name="signature-generation">
   <event type="node-enter">
       <script>
           <variable name="contractStage" access="write" />
           <expression><![CDATA[contractStage = "stage4";]]></expression>
       </script>
       <action class="us.co.denver.repo.workflow.jbpm.GenerateContractAction">
                <method>insertVendorSignatureTemplate</method>
       </action>
       <action class="us.co.denver.repo.workflow.jbpm.GenerateContractAction">
                   <method>insertCharterSignatureTemplate</method>
       </action>
   </event>
   <task name="gawf:signatureGenerationTask">
       <assignment class="us.co.denver.repo.workflow.jbpm.assignment.DelegatableAssignment">
              <actor>#{ccdwf_attorney}</actor>
       </assignment>
   </task>
   <transition name="done" to="generate-signature-draft"/>
</task-node>
Filtered Association Generator Example"
Avoid this sort of thing. It is convoluted and complicated. Every time I
  look at it, I think how did I do this?

This is an good example of why Share is better
   •  Faces"
     •    faces-config-custom.xml - to configure the managed bean – the bean that is controlled by
          faces frame work"
     • 
      "   web-client-config-custom-wf.xml - to configure UI property sheet"
   •  Workflow"
     •    FilteredAssociationGenerator.java – sets up the Component"
     •    UIFilteredAssociationEditor.java – does heavy lifting with alfresco API (associates groups
          with UI component)"
     • 
      "   workflow_model.xml"
   •  Spring"
     • 
      "   web-client-application-custom-context.xml – tell spring from where to load the faces config
          property sheet"
Custom Core Services Example"
Extending the service registry - Wiring up JDBC service

custom-web-context.xml
Create the serivce
<bean id="CCDJDBCService" class="us.co.denver.repo.service.CCDJDBCServiceImpl">
<property name="workFlowNameMappingDAO" ref="workFlowNameMappingDAO" />
<property name="ServiceRegistry" ref="CCDServiceRegistry"/>
</bean>
Create DAO to use JDBC template
<bean id="workFlowNameMappingDAO" class="us.co.denver.repo.dao.WorkFlowNameMappingDAOImpl">
<property name="simpleJdbcTemplate" ref="simpleJdbcTemplate" />
</bean>
Extend the Alfresco service registry
<bean id="CCDServiceRegistry" class="us.co.denver.repo.service.CCDServiceDescriptorRegistry" parent="ServiceRegistry">
</bean>
Wire up Spring's simple JDBC template to query the DB
<bean id="simpleJdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<constructor-arg ref="defaultDataSource" />
</bean>
Workflow Testing Example"
Base Test
  •  Initialize Spring!
   new ClassPathXmlApplicationContext("classpath:alfresco/application-context.xml");
   serviceRegistry = (ServiceRegistry) _context.getBean(ServiceRegistry.SERVICE_REGISTRY);



Abstract Workflow Test
  •  Set up workflow"
  •  EndAssignedTaskByName"

Workflow Test
  •  Define path for workflow test"
  •  Task Completion Methods – update properties and end task"
  •  Start with the happy path, incorporate revision paths incrementally"
Unit Testing Example"
Dependencies
   •    Not easy to mock dependencies"
   •    Easy to load Spring container"
                  new ClassPathXmlApplicationContext("classpath:alfresco/application-context.xml");

You can also use the context config annotation
        "@ContextConfiguration(locations={"classpath:alfresco/application-context.xml","classpath:us/co/denver/fads/
        webservice/fad-service-test-context.xml"})
   Don’t use @RunWith (SpringJUnit4ClassRunner.class)


Get Service Registry and then test classes
   serviceRegistry = (ServiceRegistry) context.getBean(ServiceRegistry.SERVICE_REGISTRY);



Setup and Create tests
   @Before
   public void setup(){


   @Test
   public void testGetDocumentInfoWhenYEqualsX(){
Jetty Embedded"
We use Jetty for development
  •      Allows projects in workspace to run without building war
  •      Starts fast, less restarts
  •      Set up projects to build as AMPS
  •      Easy to configure new projects to use Jetty
  •      Easy to configure different startup setups depending on projects
  •      Point jetty at config and classes dir in your project

       <Set name="extraClasspath">
       <Call class="org.apache.commons.lang.StringUtils" name="join">
       <Arg>
       <Array type="java.lang.String">
       <Item>../CCDCore/build/classes</Item>
       <Item>../CCDCore/config</Item>
       <Item>../ContractingAutomation/build/classes</Item>
       <Item>../ContractingAutomation/config</Item>
Lessons Learned"
 •     Long workflows difficult to get right (both design and implement)
 •     Better to start simple and build incrementally
 •     Testing is difficult (build infrastructure as you go)
 •     Use web scripts when possible for UI modifications
 •     J2EE servers can be difficult
 •     Indexing Clustering issues
 •     Alfresco configs
      •    LDAP
      •    JODConverter
      •    Fileservers
      •    Don’t forget Zero Day config

 •  Test Performance!
It helps to know"
Java, Javascript, Faces, Spring

Spring Framework
  • Spring patterns - DI/IoC, Interface, Marker, Factory"
  • Spring initialization life-cycle"

Alfresco API
  • Service based architecture"
  • Not very intuitive"
  • Consider getting properties from a node. You would expect to be able to get
   properties with a noderef. Instead you must use the node service."

Xpath
  • For complex queries use xpath and searchservice"
  • For simple queries use FileFolderService and simpleSearch"
Q&A"

Más contenido relacionado

La actualidad más candente

Codestrong 2012 breakout session the role of cloud services in your next ge...
Codestrong 2012 breakout session   the role of cloud services in your next ge...Codestrong 2012 breakout session   the role of cloud services in your next ge...
Codestrong 2012 breakout session the role of cloud services in your next ge...
Axway Appcelerator
 
Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...
Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...
Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...
Chris McNulty
 
Fishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick Start
Fishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick StartFishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick Start
Fishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick Start
Kim Negaard
 
Gulf Computers Presentation
Gulf Computers PresentationGulf Computers Presentation
Gulf Computers Presentation
harish_kris
 
All Covered National Brochure
All Covered National BrochureAll Covered National Brochure
All Covered National Brochure
ScottSvehlak
 
Oracle - Document Life - 6apr2012
Oracle - Document Life - 6apr2012Oracle - Document Life - 6apr2012
Oracle - Document Life - 6apr2012
Agora Group
 

La actualidad más candente (19)

Codestrong 2012 breakout session the role of cloud services in your next ge...
Codestrong 2012 breakout session   the role of cloud services in your next ge...Codestrong 2012 breakout session   the role of cloud services in your next ge...
Codestrong 2012 breakout session the role of cloud services in your next ge...
 
A Guide to Scalable SharePoint Governance
A Guide to Scalable SharePoint GovernanceA Guide to Scalable SharePoint Governance
A Guide to Scalable SharePoint Governance
 
NESPUG - 5 ways SP can benefit the PMO
NESPUG - 5 ways SP can benefit the PMONESPUG - 5 ways SP can benefit the PMO
NESPUG - 5 ways SP can benefit the PMO
 
See Beyond the Numbers - Data Visualization and Business Intelligence in Shar...
See Beyond the Numbers - Data Visualization and Business Intelligence in Shar...See Beyond the Numbers - Data Visualization and Business Intelligence in Shar...
See Beyond the Numbers - Data Visualization and Business Intelligence in Shar...
 
SharePoint Conference Recap - Social
SharePoint Conference Recap - SocialSharePoint Conference Recap - Social
SharePoint Conference Recap - Social
 
Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...
Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...
Australia SharePoint Conference 2012 - SharePoint Performance - Tales from th...
 
Migration to Microsoft Online Services from Exchange and Non-Microsoft Platforms
Migration to Microsoft Online Services from Exchange and Non-Microsoft PlatformsMigration to Microsoft Online Services from Exchange and Non-Microsoft Platforms
Migration to Microsoft Online Services from Exchange and Non-Microsoft Platforms
 
Rover trac final
Rover trac finalRover trac final
Rover trac final
 
Why portal jsf - Srest
Why portal jsf - SrestWhy portal jsf - Srest
Why portal jsf - Srest
 
Fishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick Start
Fishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick StartFishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick Start
Fishbowl Solutions Mobile ECM Webinar Presentation: iPad Quick Start
 
Extranets webinar 2011_12_14
Extranets webinar 2011_12_14Extranets webinar 2011_12_14
Extranets webinar 2011_12_14
 
Gulf Computers Presentation
Gulf Computers PresentationGulf Computers Presentation
Gulf Computers Presentation
 
Today's Unified Communications: To upgrade, coexist, or go 'all in' with the ...
Today's Unified Communications: To upgrade, coexist, or go 'all in' with the ...Today's Unified Communications: To upgrade, coexist, or go 'all in' with the ...
Today's Unified Communications: To upgrade, coexist, or go 'all in' with the ...
 
All Covered National Brochure
All Covered National BrochureAll Covered National Brochure
All Covered National Brochure
 
Catapult k2 partner event oct 12 2011
Catapult k2 partner event oct 12 2011Catapult k2 partner event oct 12 2011
Catapult k2 partner event oct 12 2011
 
Sod Profile
Sod ProfileSod Profile
Sod Profile
 
Oracle - Document Life - 6apr2012
Oracle - Document Life - 6apr2012Oracle - Document Life - 6apr2012
Oracle - Document Life - 6apr2012
 
AIS SharePoint & BI Presentation 24th july 2012
AIS SharePoint & BI Presentation 24th july 2012AIS SharePoint & BI Presentation 24th july 2012
AIS SharePoint & BI Presentation 24th july 2012
 
SharePoint Conference Recap - Business Process Automation Session
SharePoint Conference Recap - Business Process Automation SessionSharePoint Conference Recap - Business Process Automation Session
SharePoint Conference Recap - Business Process Automation Session
 

Destacado

Alfresco day madrid jeff potts - community
Alfresco day madrid   jeff potts - communityAlfresco day madrid   jeff potts - community
Alfresco day madrid jeff potts - community
Alfresco Software
 

Destacado (6)

Alfresco day madrid jeff potts - community
Alfresco day madrid   jeff potts - communityAlfresco day madrid   jeff potts - community
Alfresco day madrid jeff potts - community
 
PLAT-4 Understanding the SOLR Integration
PLAT-4 Understanding the SOLR IntegrationPLAT-4 Understanding the SOLR Integration
PLAT-4 Understanding the SOLR Integration
 
CUST-13 What’s New in Share Extras
CUST-13 What’s New in Share ExtrasCUST-13 What’s New in Share Extras
CUST-13 What’s New in Share Extras
 
John Newton - Government Without Walls
John Newton - Government Without WallsJohn Newton - Government Without Walls
John Newton - Government Without Walls
 
Community vision and plan webinar 7 july2011
Community vision and plan webinar 7 july2011Community vision and plan webinar 7 july2011
Community vision and plan webinar 7 july2011
 
The Shift to Business Solutions
The Shift to Business SolutionsThe Shift to Business Solutions
The Shift to Business Solutions
 

Similar a CASE-4 Automating Business Processes in Denver: A Technical Case Study

"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware
"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware
"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware
investorrelation
 
Armedia Case Management with Alfresco ECM
Armedia Case Management with Alfresco ECMArmedia Case Management with Alfresco ECM
Armedia Case Management with Alfresco ECM
Armedia LLC
 
Mobilizing Microsoft SharePoint Server: An MBaaS PErspective
Mobilizing Microsoft SharePoint Server: An MBaaS PErspectiveMobilizing Microsoft SharePoint Server: An MBaaS PErspective
Mobilizing Microsoft SharePoint Server: An MBaaS PErspective
kidozen
 

Similar a CASE-4 Automating Business Processes in Denver: A Technical Case Study (20)

Keynote - Integrating the OSGi Service-Oriented Architecture into the Enterpr...
Keynote - Integrating the OSGi Service-Oriented Architecture into the Enterpr...Keynote - Integrating the OSGi Service-Oriented Architecture into the Enterpr...
Keynote - Integrating the OSGi Service-Oriented Architecture into the Enterpr...
 
DevOps Cardiff - Monitoring Automation for DevOps
DevOps Cardiff - Monitoring Automation for DevOpsDevOps Cardiff - Monitoring Automation for DevOps
DevOps Cardiff - Monitoring Automation for DevOps
 
Business and Online Services - Ben Kepes
Business and Online Services - Ben KepesBusiness and Online Services - Ben Kepes
Business and Online Services - Ben Kepes
 
ON event - May 2010
ON event - May 2010ON event - May 2010
ON event - May 2010
 
"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware
"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware
"Oracle Insight for Investors" Educational Webcast - Oracle Fusion Middleware
 
Evolving your Architecture to MicroServices
Evolving your Architecture to MicroServicesEvolving your Architecture to MicroServices
Evolving your Architecture to MicroServices
 
PLAT-17 Alfresco iOS Mobile Application Details and Design
PLAT-17 Alfresco iOS Mobile Application Details and DesignPLAT-17 Alfresco iOS Mobile Application Details and Design
PLAT-17 Alfresco iOS Mobile Application Details and Design
 
Microservices Journey NYC
Microservices Journey NYCMicroservices Journey NYC
Microservices Journey NYC
 
Microservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applicationsMicroservices - Hitchhiker's guide to cloud native applications
Microservices - Hitchhiker's guide to cloud native applications
 
Armedia Case Management with Alfresco ECM
Armedia Case Management with Alfresco ECMArmedia Case Management with Alfresco ECM
Armedia Case Management with Alfresco ECM
 
Mobilizing Microsoft SharePoint Server: An MBaaS PErspective
Mobilizing Microsoft SharePoint Server: An MBaaS PErspectiveMobilizing Microsoft SharePoint Server: An MBaaS PErspective
Mobilizing Microsoft SharePoint Server: An MBaaS PErspective
 
Automating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native MeetupAutomating Applications with Habitat - Sydney Cloud Native Meetup
Automating Applications with Habitat - Sydney Cloud Native Meetup
 
Ibm xamarin gtruty
Ibm xamarin gtrutyIbm xamarin gtruty
Ibm xamarin gtruty
 
A Microservice Journey
A Microservice JourneyA Microservice Journey
A Microservice Journey
 
Changes in Application Architecture
Changes in Application ArchitectureChanges in Application Architecture
Changes in Application Architecture
 
(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide(Updated) SharePoint & jQuery Guide
(Updated) SharePoint & jQuery Guide
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
 
Achieving a Serverless Development Experience
Achieving a Serverless Development ExperienceAchieving a Serverless Development Experience
Achieving a Serverless Development Experience
 
4.4.2013 Software, System, & IT Architecture - Good Design is Good Business:...
4.4.2013  Software, System, & IT Architecture - Good Design is Good Business:...4.4.2013  Software, System, & IT Architecture - Good Design is Good Business:...
4.4.2013 Software, System, & IT Architecture - Good Design is Good Business:...
 
Securing the Cloud Native stack
Securing the Cloud Native stackSecuring the Cloud Native stack
Securing the Cloud Native stack
 

Más de Alfresco Software

Más de Alfresco Software (20)

Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossier
 
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management application
 
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
 
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
 
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of Alfresco
 
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
 
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
 
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
 
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
 
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest API
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
 
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
 
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
 
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
 
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
 
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
 
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
 
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

CASE-4 Automating Business Processes in Denver: A Technical Case Study

  • 1. Automating Business Processes in Denver
 A Technical Case Study" " " "Eric Harper " " " "Zia Consulting" " "eharper@ziaconsulting.com" " " "Paul Lungu " " "City & County of Denver " " paul.lungu@denvergov.org"
  • 2. Who are we?" Eric Harper •  Zia Consulting" •  Architect/PM/Developer" Paul Lungu •  City & County of Denver" •  Associate Developer"
  • 3. Who is Zia?
 A firm with deep technical expertise & strategic insight, coupled with our Agile software methodology, provides numerous benefits to our customers" Enterprise Content Management (ECM) An ECM is a cultivation of knowledge -- one of the most valuable assets to any Our  Partners   organization. A proper ECM system ensures content has integrity through proper version control, allows producers to easily create content and publish it to a variety of mediums, and it automates processes, streamlining the review, approval and distribution of content across an organization.  Zia's ECM offerings provide all of these benefits, and more, in a manner tailored to the client's business needs. Enterprise 2.0 Solutions The focus of technology should always be on people. Zia enables our customers to gain tremendous competitive advantage by allowing their team to collaborate more effectively, respond more quickly to changes, and make better decisions. Adopters of Enterprise 2.0 solutions will find they have a more productive, engaged and informed team. Enterprise Mobile Applications Mobile workforce enablement is an increasing trend for Zia s enterprise customers. Zia s Fresh Docs ECM application is available for iPhone, iPad and Android platforms. The newly released Fresh Xpense application is a simple expense and receipt capture tool for the iPhone that integrates with Xpenser.com. Zia s Agile Solution Methodology At its heart, our Agile-based methodology is centered on a close collaborative approach to maximizing value for our customers. Constant client communication is necessary to ensure that each development iteration addresses features with the highest business value, even if those features were unknown at the launch of the project.
  • 4. Some Facts about Denver " The City" •  Founded in 1858! •  Strong Mayor form of government, consolidated City-County! •  Population of 600,000! •  16th largest metro area in the United States! •  10th largest central business district in the United States! •  250,000 households! •  One of the fittest and most highly educated cities in the nation! •  11,000 city employees! •  $1+ billion annual budget! Denver Technology Services" •  Formed in 2005! •  Previously federated organizational model! •  300 IT employees! •  $48M yearly budget!
  • 5. Denverʼs Many Content Management Systems" Poor  UI     Meager  search  capability   Manual  load  of  metadata   Slow  Performance   Memory  Leaks     Nightly  Server  Reboots   One  security  role     14  disconnected   Doc  Mgmt    systems   Poor  audi=ng  &   RM  capability     LiFle  Staff  Exper=se  
  • 6. Turned to Alfresco + Zia Consulting" Phase 1: Scanned Documents (2010) •  Contracts & Financial Records" •  Migrated off Liberty IMS to Alfresco + KOFAX" •  Implemented rules-based workflow" Phase 2: CMIS Integrations (2010) •  Document Repository for PeopleSoft CRM and Financials" •  iOS App for City 311 Help Center" Phase 3: Automated Contracting Process (2011) •  Customized Advanced Workflow" •  Web Service integration with PeopleSoft" •  Supports full lifecycle of contracting process" Phase 4: Human Services Case Management (2011) •  Ephesoft Imaging front end" •  Repository Integration with custom apps"
  • 7. Contracting Workflow Process" Lifecycle •  RFP or Contract Request" •  Staff Reviews" •  Contract Drafting" •  Vendor Negotiation & Signature" •  City Council Ordinance Process" •  City Signatures" Integration •  PeopleSoft Financials (Requisition/Purchase Order)" •  SIRE Legislative Information System (Ordinance)" •  Oracle OBIEE (Reporting)"
  • 8. Contracting Workflow Process" Customized Features •  SOAP Web Service for workflow initiation" •  Task Email Notification" •  Delegation" •  “Connected” Workflow" •  Rules-driven task assignment" •  Automated PDF transformation/generation" •  UI Customizations" •  Electronic Signature" •  Management Dashboard"
  • 10. Customizations" Web Services UI Customizations •  Workflow Initiation" •  Simple (& Non-Simple) •  Other apps interfacing " Filtered Association Gen" with Alfresco" •  Content Upload" •  Wiring webscripts with JSF" Workflow Features •  Action Classes" Custom Actions on Spaces •  Delegation" Custom Core Services •  Electronic Signature (PIN)" •  Rules-driven Assignment" Testing •  PDF Generation" •  Workflow Testing" •  Unit testing actions, web services"
  • 11. Web Service example" Things you may want to do with web services (Some of this can be done using CMIS WS API) •  Search the repo for docs and meta-data" •  Initiate workflow" •  Put docs into repo" •  Why not just use CMIS API?"
  • 12. Web Service example (continued)
 Exposing servlet-based web services using JAX-WS" Spring Wiring <jaxws:endpoint id="fadService" address="/ccd/FadWebService" implementor="#fadWebService"> </jaxws:endpoint> <bean name="fadWebService" class="us.co.denver.webservice.FADWebServiceImpl"> <property name="nodeService" ref="NodeService" /> <property name="searchService" ref="SearchService" /> <property name="fileFolderService" ref="FileFolderService" /> <property name="namespaceService" ref="NamespaceService" /> <property name="transactionService" ref="TransactionService" /> <property name="repositoryHelper" ref="repositoryHelper"/> </bean> Java Code (Annotation Driven) @WebService public interface FADWebService{ public Object[] getDocumentInfo(Criteria [] c) throws FaultMsg; public String removeDocument(String uuid) throws FaultMsg; public String updateDocument(String uuid) throws FaultMsg;
  • 13. Custom Workflow Wiring Example" web-client-application-custom-context.xml – define the web-client-config-custom-wf.xml web-client-config-custom-wf.xml – defines the properties that will be displayed in your workflow workflow_def.xml – defines the flow of your work flow workflow_model.xml – defines the tasks in your workflow workflow-messages.properties – defines labels in workflow
  • 14. Workflow Action Example" Inserting page templates into the workflow <task-node name="signature-generation"> <event type="node-enter"> <script> <variable name="contractStage" access="write" /> <expression><![CDATA[contractStage = "stage4";]]></expression> </script> <action class="us.co.denver.repo.workflow.jbpm.GenerateContractAction"> <method>insertVendorSignatureTemplate</method> </action> <action class="us.co.denver.repo.workflow.jbpm.GenerateContractAction"> <method>insertCharterSignatureTemplate</method> </action> </event> <task name="gawf:signatureGenerationTask"> <assignment class="us.co.denver.repo.workflow.jbpm.assignment.DelegatableAssignment"> <actor>#{ccdwf_attorney}</actor> </assignment> </task> <transition name="done" to="generate-signature-draft"/> </task-node>
  • 15. Filtered Association Generator Example" Avoid this sort of thing. It is convoluted and complicated. Every time I look at it, I think how did I do this? This is an good example of why Share is better •  Faces" •  faces-config-custom.xml - to configure the managed bean – the bean that is controlled by faces frame work" •  " web-client-config-custom-wf.xml - to configure UI property sheet" •  Workflow" •  FilteredAssociationGenerator.java – sets up the Component" •  UIFilteredAssociationEditor.java – does heavy lifting with alfresco API (associates groups with UI component)" •  " workflow_model.xml" •  Spring" •  " web-client-application-custom-context.xml – tell spring from where to load the faces config property sheet"
  • 16. Custom Core Services Example" Extending the service registry - Wiring up JDBC service custom-web-context.xml Create the serivce <bean id="CCDJDBCService" class="us.co.denver.repo.service.CCDJDBCServiceImpl"> <property name="workFlowNameMappingDAO" ref="workFlowNameMappingDAO" /> <property name="ServiceRegistry" ref="CCDServiceRegistry"/> </bean> Create DAO to use JDBC template <bean id="workFlowNameMappingDAO" class="us.co.denver.repo.dao.WorkFlowNameMappingDAOImpl"> <property name="simpleJdbcTemplate" ref="simpleJdbcTemplate" /> </bean> Extend the Alfresco service registry <bean id="CCDServiceRegistry" class="us.co.denver.repo.service.CCDServiceDescriptorRegistry" parent="ServiceRegistry"> </bean> Wire up Spring's simple JDBC template to query the DB <bean id="simpleJdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate"> <constructor-arg ref="defaultDataSource" /> </bean>
  • 17. Workflow Testing Example" Base Test •  Initialize Spring! new ClassPathXmlApplicationContext("classpath:alfresco/application-context.xml"); serviceRegistry = (ServiceRegistry) _context.getBean(ServiceRegistry.SERVICE_REGISTRY); Abstract Workflow Test •  Set up workflow" •  EndAssignedTaskByName" Workflow Test •  Define path for workflow test" •  Task Completion Methods – update properties and end task" •  Start with the happy path, incorporate revision paths incrementally"
  • 18. Unit Testing Example" Dependencies •  Not easy to mock dependencies" •  Easy to load Spring container" new ClassPathXmlApplicationContext("classpath:alfresco/application-context.xml"); You can also use the context config annotation "@ContextConfiguration(locations={"classpath:alfresco/application-context.xml","classpath:us/co/denver/fads/ webservice/fad-service-test-context.xml"}) Don’t use @RunWith (SpringJUnit4ClassRunner.class) Get Service Registry and then test classes serviceRegistry = (ServiceRegistry) context.getBean(ServiceRegistry.SERVICE_REGISTRY); Setup and Create tests @Before public void setup(){ @Test public void testGetDocumentInfoWhenYEqualsX(){
  • 19. Jetty Embedded" We use Jetty for development •  Allows projects in workspace to run without building war •  Starts fast, less restarts •  Set up projects to build as AMPS •  Easy to configure new projects to use Jetty •  Easy to configure different startup setups depending on projects •  Point jetty at config and classes dir in your project <Set name="extraClasspath"> <Call class="org.apache.commons.lang.StringUtils" name="join"> <Arg> <Array type="java.lang.String"> <Item>../CCDCore/build/classes</Item> <Item>../CCDCore/config</Item> <Item>../ContractingAutomation/build/classes</Item> <Item>../ContractingAutomation/config</Item>
  • 20. Lessons Learned" •  Long workflows difficult to get right (both design and implement) •  Better to start simple and build incrementally •  Testing is difficult (build infrastructure as you go) •  Use web scripts when possible for UI modifications •  J2EE servers can be difficult •  Indexing Clustering issues •  Alfresco configs •  LDAP •  JODConverter •  Fileservers •  Don’t forget Zero Day config •  Test Performance!
  • 21. It helps to know" Java, Javascript, Faces, Spring Spring Framework • Spring patterns - DI/IoC, Interface, Marker, Factory" • Spring initialization life-cycle" Alfresco API • Service based architecture" • Not very intuitive" • Consider getting properties from a node. You would expect to be able to get properties with a noderef. Instead you must use the node service." Xpath • For complex queries use xpath and searchservice" • For simple queries use FileFolderService and simpleSearch"
  • 22. Q&A"