SlideShare a Scribd company logo
1 of 43
Tech Talk Live #65:
Jeff Potts & Richard Esplin & Tjarda Peelen
Agenda
• Who am I?
• Why business reporting?
• What is it about?
• How was it achieved?
• Demo
• Q&A
Who is Tjarda?
• Netherlands
• Incentro (ECM, WCM, BI, Search, Advisory)
• Started Alfresco since v1.4 EE (private 1.2CE)
• Generic Java, Config, Architecture, (Pre)Sales
• Document Management, Publishing, Governement
Incentro
Information is the center
of our approach
Expertise
Agenda
• Who am I
• Why business reporting?
• What is it about?
• How was it achieved?
• Demo
• Q&A
Why Business Reporting
The challenge:
• Alfresco does ‘not really’ support reporting
• Business has reporting needs
• Reporting needs:
– change over time
– can be specific for each business/organization/dept.
My solution
• Based on standard tooling
(Pentaho Report Designer)
• Scheduled execution (no UI for live configuration)
• In a language a business user understands
• Against Alfresco:
– business objects (docs, folders, sites, users, audit)
– metadata/properties
Why Business Reporting
Agenda
• Who am I
• Why business reporting?
• What is it about?
• How was it achieved?
• Demo
• Q&A
What is it about
Harvesting
Business related
objects + metadata
Execution
What is it about - Harvesting
# usage: key = tablename, value=Lucene query
folder=TYPE:"cm:folder" AND NOT TYPE:"st:site" AND NOT
TYPE:"dl:dataList" AND NOT TYPE:"bpm:package" AND NOT
TYPE:"cm:systemfolder" AND NOT TYPE:"fm:forum"
document=TYPE:"cm:content" AND NOT TYPE:"bpm:task"
AND NOT TYPE:"dl:dataListItem" AND NOT
TYPE:"ia:calendarEvent" AND NOT TYPE:"lnk:link" AND
NOT TYPE:"cm:dictionaryModel" AND NOT
ASPECT:"reporting:executionResult"
calendar=TYPE:"ia:calendarEvent"
forum=TYPE:"fm:forum"
link=TYPE:"lnk:link"
site=TYPE:"st:site"
#datalist=TYPE:"dl:dataList"
datalistitem=TYPE:"dl:dataListItem"
What is it about - Execution
ReportingTemplate ReportingRoot
Agenda
• Who am I
• Why business reporting?
• What is it about?
• How it was achieved?
• Demo
• Q&A
Reporting Considerations
• The options
– NoSQL
– XML
– Other
– SQL…
• Considerations:
– Business needs to operate reporting
– Knowledge and experience needs to exist in organizations
– Run in cooperation with existing reporting tooling
Reporting database principles
• Alfresco short-qname becomes column name
– sys:node-dbid  sys_node_dbid
( : and – are not allowed in column/table names)
• Multi value properties are comma separated concat.
• Fixed (thoug configurable) default mapping of
Alfresco types onto database types.
– There are exceptions to the rule, therefore:
• Possibility to override default mapping on a per-
property basis.
– E.g. bt default d:noderefs=VARCHAR(400) but
– Someco_relatedProducts=VARCHAR(800)
Reporting database principles
• alfresco-global.properties settings:
– ‘Blacklist’ properties to hide from reporting db
– Configure to harvest WorkSpace and/or ArchiveSpace
• Module accepts config override in
shared/classes/alfresco/extension
• Module harvests as System user.
‘All stuff is there’. Reporting people are
responsible to behave nicely.
Design decisions
• Scheduled harvesting versus real time
– Performance impact
(need policies/behaviours for everything)
– Started as JavaScript API
– Not all objects to harvest generate events (audit)
• Scheduled execution versus user interaction
– Started as JavaScript API (e.g. no UI)
– Parameterized reports are ‘recent’ development
– UI driven configuration is even more recent
– Manual configuration within UI might be possible (within
limits of report tempate)
• Reporting != auditing
How it was achieved: Harvesting
• Initial principles:
– Metadata of all business objects (incl. customizations)
(Aspects…)
– Harvest only changed objects since last successful run
– Process versions
– JavaScript API to allow flexible execution
• Expanded to
– List of categories (tree-like structure)
– Auditing framework
– Users/Groups/SiteMembers
– UI over JavaScript
Limited number of search results
• Problem: MaxSearchResults
# The maximum time spent pruning results
system.acl.maxPermissionCheckTimeMillis=10000
# The maximum number of results to perform permission checks against
system.acl.maxPermissionChecks=1000
• Solution:
– Limitation is there for a reason. Deal with it.
(although technically (Java only?) you can work around it)
– Search & sort by sys:node-dbid
– Append to query:
"AND @sys:node-dbid:[" + (last_dbid +1) + " TO MAX]";
Model & Search: Nugget
• Why is this feature hidden in the data modelling?
<includedInSuperTypeQuery>
false
</includedInSuperTypeQuery>
• Nice way of hiding custom sub-types from parent
queries (especially config-like types)
Aspects & Associations & Categories
• Strong Alfresco features  flexible & powerful
– Find business objects (by query)
– For each business object:
• Get all properties – push to array
– Respect multi-value (becomes comma separated)
– Resolve tags and categories into labels
• Get all parent-child assocs – push to array
• Get all source-target assocs – push to array
• Derive some meaningful props – push to array
(for example: site name, display path, size)
Push to reporting database
• Tables ‘create ${table} if not exist’
• Named queries from searches
– Named auditing applications
– Category name
– Predefined names for users, groups, sitegroups
• For each batch of results,
– Determine superset of columns (=properties + types)
– ‘Create %{column} if not exist’
• Insert batch into the table
– If date-modified changed, insert new row.
– Insert statement varies depending on number of aspects/assocs
– Set validFrom/validTo/isLatest on current & previous version/row
• One mechanism fits all (also users/groups/categories)
How it was achieved: Execution
• Embed an existing reporting tool in Alfresco.
• Business must be comfortable operating reporting
tool
• Scheduled execution needs no UI. Administrators
can configure, business can use.
zip-like subreports sub-reports by relative path
Credentials
• Does anyone embed Pentaho and use Java API ?
• Username/password stored inside report
– Update all reports when migrating to other source or
from dev  test  prod
• JNDI (delegate credentials to app server)
• Report is self contained (credentials/JNDI)
• JNDI is the only enterprise solution, updating
each and every report is not an option…
– Requires additional config step in alfresco.xml
Parameterization
• Pentaho (and JasperReports) accept parameters
to drive a report.
• Current Alfresco ActionExecuter accepts up to 4
parameters per report
• Used to generate site based reports
• Used to create generic report, and make specific
(e.g. report Sites with non-internal SiteManagers)
Execution Structure
• Reporting Root(s)
– Defines scope for contained containers/templates
– Defines target queries
– Enables/disables scheduled harvesting/execution
– Execute all, harvest all
• Reporting Container(s)
– Contains reports scheduled at same frequency
– Execute all Reporting Templates inside
• Reporting Template(s)
– Actual reporting templates (Pentaho’s prpt’s)
– Enable/disable for automatic execution
– Defines output path (by noderef or relative to ‘target’)
– References target object from query in Reporting Root
UI to tie it together
Troubles along the way
• Little knowledge available about Pentaho and
credentials/authentications using Java API
• mltext-type fields (the name ‘Data Dictionary’ is
not the same in other languages)
– Forces me into ActionHandlers to fix Explorer UI,
– Or in Share development
(needs to be done one point in time)
• EagerContentCleaner cleans Alfresco’s temp
folder. Very eagerly
Troubles along the way
• Max length of sum of column sizes.
(MySQL < 65.000 byte if UTF-8)
– Tweak default mapping (decrease the defaults)
– Make exceptions by property QName
(increase/decrease per prop)
• Auditing framework uses call-back mechanism
different from other services
• Module started as a JavaScript API
• Documentation is ‘a lot of work’
• Finalizing a (side) project is ‘a lot of work’
Challenges
• How to detect changes in Categories/structures
– Currently no incremental updates
• How to detect changes in group structure and
users
– Currently no incremental updates
• If there is no property yet, there is no column
– Can be an issue creating reports
– Prepping the reporting database with empty columns
• Not always possible  configurable?
ToDo
• Allow reporting database multi-vendor
– MyBatis integration in progress
• Allow multilangual Alfresco install’s
– mltext properties bite (Explorer UI)
• UI to Share
– Harvest & Execution in Admin Panel
– Execute parameterized reports on demand?
• Cron jobs cluster aware
• Get rid of JavaScript history (harvesting)
– Script *not* thread-safe, run max 1 instance!
• Mavenize & include more unit tests
Demo
Main report: Select Site
Main report: Select Site
SELECT
`site`.`site`,
`site`.`st_siteVisibility`,
`site`.`cm_title`,
`site`.`cm_description`,
`site`.`cm_owner`
FROM
`site`
WHERE
`site`.`isLatest` = true
AND `site`.`site` = ${sitename}
Sub report: Users per Role
Sub report: Users per Role
SELECT
count(*) as amount,
`siteperson`.`siteRole` as role
FROM
`siteperson`
WHERE `siteperson`.`siteName` = ${sitename}
GROUP BY `siteperson`.`siteRole`
Sub report: Site members
Sub report: Site members
SELECT DISTINCT `siteperson`.`userName`,
`person`.`cm_email`,
`person`.`cm_mobile`,
`person`.`cm_telephone`,
`person`.`cm_firstName`,
`person`.`cm_instantmsg`,
`person`.`cm_lastName`
FROM
`siteperson` INNER JOIN `person` ON `person`.`cm_userName` =
`siteperson`.`userName`
WHERE
`siteperson`.`siteName` = ${sitename}
ORDER BY
`person`.`cm_lastName` ASC,
`person`.`cm_firstName` ASC
Configure in Alfresco
My Best Practices
• Dashlets/Pages are for real-time information
– E.g. workflow progress
• Reporting is for insight that does not have to be
real-time.
• Reporting must be extendible by the customer
• Design for Reporting
– Have metadata available
– accept redundancy and one or two additional
policies/behaviours
Documented
Wiki Blog
Youtube
I like to publish your reporting case on the wiki.
And I have a few books to give away to ‘impressive’ contributions:
[en] [nl]
Your reporting case…
Q&A
Alfresco Business Reporting
Blog:
http://tpeelen.wordpress.com
Code & Wiki:
https://code.google.com/p/alfresco-business-reporting
Youtube:
http://www.youtube.com/user/opensourceecm
LinkedIn:
http://nl.linkedin.com/in/tpeelen
Twitter:
@tpeelen

More Related Content

What's hot

ITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cbormITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cbormOrtus Solutions, Corp
 
Oozie @ Riot Games
Oozie @ Riot GamesOozie @ Riot Games
Oozie @ Riot GamesMatt Goeke
 
SQL on Hadoop: Defining the New Generation of Analytic SQL Databases
SQL on Hadoop: Defining the New Generation of Analytic SQL DatabasesSQL on Hadoop: Defining the New Generation of Analytic SQL Databases
SQL on Hadoop: Defining the New Generation of Analytic SQL DatabasesOReillyStrata
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPOscar Merida
 
Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Paul Jones
 
Scala in practice
Scala in practiceScala in practice
Scala in practiceTomer Gabel
 
Owner - Java properties reinvented.
Owner - Java properties reinvented.Owner - Java properties reinvented.
Owner - Java properties reinvented.Luigi Viggiano
 
Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1PgTraining
 
Avoiding.the.pitfallsof.oracle.migration.2013
Avoiding.the.pitfallsof.oracle.migration.2013Avoiding.the.pitfallsof.oracle.migration.2013
Avoiding.the.pitfallsof.oracle.migration.2013EDB
 
Informatica power center online training
Informatica power center online trainingInformatica power center online training
Informatica power center online trainingSmartittrainings
 
SQL on Hadoop
SQL on HadoopSQL on Hadoop
SQL on Hadoopnvvrajesh
 
Exadata Performance Optimization
Exadata Performance OptimizationExadata Performance Optimization
Exadata Performance OptimizationEnkitec
 
Stockage des données : quel système pour quel usage ?
Stockage des données : quel système pour quel usage ?Stockage des données : quel système pour quel usage ?
Stockage des données : quel système pour quel usage ?Zouheir Cadi
 
Designing and Testing Accumulo Iterators
Designing and Testing Accumulo IteratorsDesigning and Testing Accumulo Iterators
Designing and Testing Accumulo IteratorsJosh Elser
 
Informatica online training from inida
Informatica online training from inidaInformatica online training from inida
Informatica online training from inidaQualitytrainings
 

What's hot (18)

Content Modeling Behavior
Content Modeling BehaviorContent Modeling Behavior
Content Modeling Behavior
 
JS Essence
JS EssenceJS Essence
JS Essence
 
ITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cbormITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cborm
 
Oozie @ Riot Games
Oozie @ Riot GamesOozie @ Riot Games
Oozie @ Riot Games
 
SQL on Hadoop: Defining the New Generation of Analytic SQL Databases
SQL on Hadoop: Defining the New Generation of Analytic SQL DatabasesSQL on Hadoop: Defining the New Generation of Analytic SQL Databases
SQL on Hadoop: Defining the New Generation of Analytic SQL Databases
 
Staying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHPStaying Sane with Drupal NEPHP
Staying Sane with Drupal NEPHP
 
Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)Organinzing Your PHP Projects (2010 Memphis PHP)
Organinzing Your PHP Projects (2010 Memphis PHP)
 
Scala in practice
Scala in practiceScala in practice
Scala in practice
 
Owner - Java properties reinvented.
Owner - Java properties reinvented.Owner - Java properties reinvented.
Owner - Java properties reinvented.
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1
 
Avoiding.the.pitfallsof.oracle.migration.2013
Avoiding.the.pitfallsof.oracle.migration.2013Avoiding.the.pitfallsof.oracle.migration.2013
Avoiding.the.pitfallsof.oracle.migration.2013
 
Informatica power center online training
Informatica power center online trainingInformatica power center online training
Informatica power center online training
 
SQL on Hadoop
SQL on HadoopSQL on Hadoop
SQL on Hadoop
 
Exadata Performance Optimization
Exadata Performance OptimizationExadata Performance Optimization
Exadata Performance Optimization
 
Stockage des données : quel système pour quel usage ?
Stockage des données : quel système pour quel usage ?Stockage des données : quel système pour quel usage ?
Stockage des données : quel système pour quel usage ?
 
Designing and Testing Accumulo Iterators
Designing and Testing Accumulo IteratorsDesigning and Testing Accumulo Iterators
Designing and Testing Accumulo Iterators
 
Informatica online training from inida
Informatica online training from inidaInformatica online training from inida
Informatica online training from inida
 

Viewers also liked

Loadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkitLoadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkitFrederic Descamps
 
Dutch Standard Business Reporting
Dutch Standard Business ReportingDutch Standard Business Reporting
Dutch Standard Business ReportingTertium datur AG
 
Kelly Flowers Business Intelligence Portfolio
Kelly Flowers Business Intelligence PortfolioKelly Flowers Business Intelligence Portfolio
Kelly Flowers Business Intelligence PortfolioDogPound48
 
Business Intelligence (BI): Your Home Care Agency Guide to Reporting & Insights
Business Intelligence (BI): Your Home Care Agency Guide to Reporting & InsightsBusiness Intelligence (BI): Your Home Care Agency Guide to Reporting & Insights
Business Intelligence (BI): Your Home Care Agency Guide to Reporting & InsightsAlayaCare
 
SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...
SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...
SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...Search Engine Journal
 
DIKW and Big Data
DIKW and Big DataDIKW and Big Data
DIKW and Big DataKamil Brzak
 
Big Data Discovery
Big Data DiscoveryBig Data Discovery
Big Data DiscoveryHarald Erb
 
Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)
Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)
Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)Francesco Corti
 
Business Intelligence and Multidimensional Database
Business Intelligence and Multidimensional DatabaseBusiness Intelligence and Multidimensional Database
Business Intelligence and Multidimensional DatabaseRussel Chowdhury
 
Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...
Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...
Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...Optimus BT
 
Tracxn Research — Business Intelligence Landscape, December 2016
Tracxn Research — Business Intelligence Landscape, December 2016Tracxn Research — Business Intelligence Landscape, December 2016
Tracxn Research — Business Intelligence Landscape, December 2016Tracxn
 
Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...
Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...
Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...DATUM LLC
 
GDPR: Is Your Organization Ready for the General Data Protection Regulation?
GDPR: Is Your Organization Ready for the General Data Protection Regulation?GDPR: Is Your Organization Ready for the General Data Protection Regulation?
GDPR: Is Your Organization Ready for the General Data Protection Regulation?DATUM LLC
 
2015 Internet Trends Report
2015 Internet Trends Report2015 Internet Trends Report
2015 Internet Trends ReportIQbal KHan
 
Business Intelligence Presentation (1/2)
Business Intelligence Presentation (1/2)Business Intelligence Presentation (1/2)
Business Intelligence Presentation (1/2)Bernardo Najlis
 
Introduction to Business Intelligence
Introduction to Business IntelligenceIntroduction to Business Intelligence
Introduction to Business IntelligenceAlmog Ramrajkar
 
Business intelligence ppt
Business intelligence pptBusiness intelligence ppt
Business intelligence pptsujithkylm007
 

Viewers also liked (19)

Loadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkitLoadays managing my sql with percona toolkit
Loadays managing my sql with percona toolkit
 
Dutch Standard Business Reporting
Dutch Standard Business ReportingDutch Standard Business Reporting
Dutch Standard Business Reporting
 
Kelly Flowers Business Intelligence Portfolio
Kelly Flowers Business Intelligence PortfolioKelly Flowers Business Intelligence Portfolio
Kelly Flowers Business Intelligence Portfolio
 
1. Product Overview
1. Product Overview1. Product Overview
1. Product Overview
 
Business Intelligence (BI): Your Home Care Agency Guide to Reporting & Insights
Business Intelligence (BI): Your Home Care Agency Guide to Reporting & InsightsBusiness Intelligence (BI): Your Home Care Agency Guide to Reporting & Insights
Business Intelligence (BI): Your Home Care Agency Guide to Reporting & Insights
 
SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...
SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...
SEO Reporting in the Enterprise: Information is Power by AJ Mihalic - #SEJSum...
 
DIKW and Big Data
DIKW and Big DataDIKW and Big Data
DIKW and Big Data
 
Big Data Discovery
Big Data DiscoveryBig Data Discovery
Big Data Discovery
 
Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)
Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)
Content Intelligence on Alfresco with A.A.A.R. (BeeCon 2016)
 
Business Intelligence and Multidimensional Database
Business Intelligence and Multidimensional DatabaseBusiness Intelligence and Multidimensional Database
Business Intelligence and Multidimensional Database
 
Metadata in Business Intelligence
Metadata in Business IntelligenceMetadata in Business Intelligence
Metadata in Business Intelligence
 
Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...
Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...
Business Intelligence, Portals, Dashboards and Operational Matrix with ShareP...
 
Tracxn Research — Business Intelligence Landscape, December 2016
Tracxn Research — Business Intelligence Landscape, December 2016Tracxn Research — Business Intelligence Landscape, December 2016
Tracxn Research — Business Intelligence Landscape, December 2016
 
Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...
Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...
Data Discovery & Search: Making it an Integral Part of Analytics, Compliance ...
 
GDPR: Is Your Organization Ready for the General Data Protection Regulation?
GDPR: Is Your Organization Ready for the General Data Protection Regulation?GDPR: Is Your Organization Ready for the General Data Protection Regulation?
GDPR: Is Your Organization Ready for the General Data Protection Regulation?
 
2015 Internet Trends Report
2015 Internet Trends Report2015 Internet Trends Report
2015 Internet Trends Report
 
Business Intelligence Presentation (1/2)
Business Intelligence Presentation (1/2)Business Intelligence Presentation (1/2)
Business Intelligence Presentation (1/2)
 
Introduction to Business Intelligence
Introduction to Business IntelligenceIntroduction to Business Intelligence
Introduction to Business Intelligence
 
Business intelligence ppt
Business intelligence pptBusiness intelligence ppt
Business intelligence ppt
 

Similar to Alfresco Business Reporting - Tech Talk Live 20130501

2020 07-30 elastic agent + ingest management
2020 07-30 elastic agent + ingest management2020 07-30 elastic agent + ingest management
2020 07-30 elastic agent + ingest managementDaliya Spasova
 
itPage LDC 09 Presentation
itPage LDC 09 PresentationitPage LDC 09 Presentation
itPage LDC 09 PresentationEric Landmann
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratchtutorialsruby
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratchtutorialsruby
 
Interconnect session 1888: Rational Team Concert Process Customization: What ...
Interconnect session 1888: Rational Team Concert Process Customization: What ...Interconnect session 1888: Rational Team Concert Process Customization: What ...
Interconnect session 1888: Rational Team Concert Process Customization: What ...Rosa Naranjo
 
Jethro data meetup index base sql on hadoop - oct-2014
Jethro data meetup    index base sql on hadoop - oct-2014Jethro data meetup    index base sql on hadoop - oct-2014
Jethro data meetup index base sql on hadoop - oct-2014Eli Singer
 
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...garrett honeycutt
 
Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...
Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...
Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...MediaMongrels Ltd
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
Streaming Solutions for Real time problems
Streaming Solutions for Real time problemsStreaming Solutions for Real time problems
Streaming Solutions for Real time problemsAbhishek Gupta
 
SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!Ben Steinhauser
 
06 integrating extra features and looking forward
06   integrating extra features and looking forward06   integrating extra features and looking forward
06 integrating extra features and looking forwardМарина Босова
 
SplunkLive! Advanced Session
SplunkLive! Advanced SessionSplunkLive! Advanced Session
SplunkLive! Advanced SessionSplunk
 
hibernateormfeatures-140223193044-phpapp02.pdf
hibernateormfeatures-140223193044-phpapp02.pdfhibernateormfeatures-140223193044-phpapp02.pdf
hibernateormfeatures-140223193044-phpapp02.pdfPatiento Del Mar
 
Rational Team Concert Process Customization - What you can and cannot do
Rational Team Concert Process Customization - What you can and cannot doRational Team Concert Process Customization - What you can and cannot do
Rational Team Concert Process Customization - What you can and cannot doRalph Schoon
 
PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...moneyjh
 
SFDC Deployments
SFDC DeploymentsSFDC Deployments
SFDC DeploymentsSujit Kumar
 

Similar to Alfresco Business Reporting - Tech Talk Live 20130501 (20)

2020 07-30 elastic agent + ingest management
2020 07-30 elastic agent + ingest management2020 07-30 elastic agent + ingest management
2020 07-30 elastic agent + ingest management
 
Where to save my data, for devs!
Where to save my data, for devs!Where to save my data, for devs!
Where to save my data, for devs!
 
itPage LDC 09 Presentation
itPage LDC 09 PresentationitPage LDC 09 Presentation
itPage LDC 09 Presentation
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratch
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratch
 
Interconnect session 1888: Rational Team Concert Process Customization: What ...
Interconnect session 1888: Rational Team Concert Process Customization: What ...Interconnect session 1888: Rational Team Concert Process Customization: What ...
Interconnect session 1888: Rational Team Concert Process Customization: What ...
 
Jethro data meetup index base sql on hadoop - oct-2014
Jethro data meetup    index base sql on hadoop - oct-2014Jethro data meetup    index base sql on hadoop - oct-2014
Jethro data meetup index base sql on hadoop - oct-2014
 
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
 
Eclipse e4
Eclipse e4Eclipse e4
Eclipse e4
 
Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...
Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...
Efficient working with Databases in LabVIEW - Sam Sharp (MediaMongrels Ltd) -...
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Streaming Solutions for Real time problems
Streaming Solutions for Real time problemsStreaming Solutions for Real time problems
Streaming Solutions for Real time problems
 
Datastage Introduction To Data Warehousing
Datastage Introduction To Data WarehousingDatastage Introduction To Data Warehousing
Datastage Introduction To Data Warehousing
 
SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!SharePoint 2014: Where to save my data, for devs!
SharePoint 2014: Where to save my data, for devs!
 
06 integrating extra features and looking forward
06   integrating extra features and looking forward06   integrating extra features and looking forward
06 integrating extra features and looking forward
 
SplunkLive! Advanced Session
SplunkLive! Advanced SessionSplunkLive! Advanced Session
SplunkLive! Advanced Session
 
hibernateormfeatures-140223193044-phpapp02.pdf
hibernateormfeatures-140223193044-phpapp02.pdfhibernateormfeatures-140223193044-phpapp02.pdf
hibernateormfeatures-140223193044-phpapp02.pdf
 
Rational Team Concert Process Customization - What you can and cannot do
Rational Team Concert Process Customization - What you can and cannot doRational Team Concert Process Customization - What you can and cannot do
Rational Team Concert Process Customization - What you can and cannot do
 
PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...
 
SFDC Deployments
SFDC DeploymentsSFDC Deployments
SFDC Deployments
 

Recently uploaded

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 

Alfresco Business Reporting - Tech Talk Live 20130501

  • 1. Tech Talk Live #65: Jeff Potts & Richard Esplin & Tjarda Peelen
  • 2. Agenda • Who am I? • Why business reporting? • What is it about? • How was it achieved? • Demo • Q&A
  • 3. Who is Tjarda? • Netherlands • Incentro (ECM, WCM, BI, Search, Advisory) • Started Alfresco since v1.4 EE (private 1.2CE) • Generic Java, Config, Architecture, (Pre)Sales • Document Management, Publishing, Governement
  • 4. Incentro Information is the center of our approach Expertise
  • 5. Agenda • Who am I • Why business reporting? • What is it about? • How was it achieved? • Demo • Q&A
  • 6. Why Business Reporting The challenge: • Alfresco does ‘not really’ support reporting • Business has reporting needs • Reporting needs: – change over time – can be specific for each business/organization/dept.
  • 7. My solution • Based on standard tooling (Pentaho Report Designer) • Scheduled execution (no UI for live configuration) • In a language a business user understands • Against Alfresco: – business objects (docs, folders, sites, users, audit) – metadata/properties Why Business Reporting
  • 8. Agenda • Who am I • Why business reporting? • What is it about? • How was it achieved? • Demo • Q&A
  • 9. What is it about Harvesting Business related objects + metadata Execution
  • 10. What is it about - Harvesting # usage: key = tablename, value=Lucene query folder=TYPE:"cm:folder" AND NOT TYPE:"st:site" AND NOT TYPE:"dl:dataList" AND NOT TYPE:"bpm:package" AND NOT TYPE:"cm:systemfolder" AND NOT TYPE:"fm:forum" document=TYPE:"cm:content" AND NOT TYPE:"bpm:task" AND NOT TYPE:"dl:dataListItem" AND NOT TYPE:"ia:calendarEvent" AND NOT TYPE:"lnk:link" AND NOT TYPE:"cm:dictionaryModel" AND NOT ASPECT:"reporting:executionResult" calendar=TYPE:"ia:calendarEvent" forum=TYPE:"fm:forum" link=TYPE:"lnk:link" site=TYPE:"st:site" #datalist=TYPE:"dl:dataList" datalistitem=TYPE:"dl:dataListItem"
  • 11. What is it about - Execution ReportingTemplate ReportingRoot
  • 12. Agenda • Who am I • Why business reporting? • What is it about? • How it was achieved? • Demo • Q&A
  • 13. Reporting Considerations • The options – NoSQL – XML – Other – SQL… • Considerations: – Business needs to operate reporting – Knowledge and experience needs to exist in organizations – Run in cooperation with existing reporting tooling
  • 14. Reporting database principles • Alfresco short-qname becomes column name – sys:node-dbid  sys_node_dbid ( : and – are not allowed in column/table names) • Multi value properties are comma separated concat. • Fixed (thoug configurable) default mapping of Alfresco types onto database types. – There are exceptions to the rule, therefore: • Possibility to override default mapping on a per- property basis. – E.g. bt default d:noderefs=VARCHAR(400) but – Someco_relatedProducts=VARCHAR(800)
  • 15. Reporting database principles • alfresco-global.properties settings: – ‘Blacklist’ properties to hide from reporting db – Configure to harvest WorkSpace and/or ArchiveSpace • Module accepts config override in shared/classes/alfresco/extension • Module harvests as System user. ‘All stuff is there’. Reporting people are responsible to behave nicely.
  • 16. Design decisions • Scheduled harvesting versus real time – Performance impact (need policies/behaviours for everything) – Started as JavaScript API – Not all objects to harvest generate events (audit) • Scheduled execution versus user interaction – Started as JavaScript API (e.g. no UI) – Parameterized reports are ‘recent’ development – UI driven configuration is even more recent – Manual configuration within UI might be possible (within limits of report tempate) • Reporting != auditing
  • 17. How it was achieved: Harvesting • Initial principles: – Metadata of all business objects (incl. customizations) (Aspects…) – Harvest only changed objects since last successful run – Process versions – JavaScript API to allow flexible execution • Expanded to – List of categories (tree-like structure) – Auditing framework – Users/Groups/SiteMembers – UI over JavaScript
  • 18. Limited number of search results • Problem: MaxSearchResults # The maximum time spent pruning results system.acl.maxPermissionCheckTimeMillis=10000 # The maximum number of results to perform permission checks against system.acl.maxPermissionChecks=1000 • Solution: – Limitation is there for a reason. Deal with it. (although technically (Java only?) you can work around it) – Search & sort by sys:node-dbid – Append to query: "AND @sys:node-dbid:[" + (last_dbid +1) + " TO MAX]";
  • 19. Model & Search: Nugget • Why is this feature hidden in the data modelling? <includedInSuperTypeQuery> false </includedInSuperTypeQuery> • Nice way of hiding custom sub-types from parent queries (especially config-like types)
  • 20. Aspects & Associations & Categories • Strong Alfresco features  flexible & powerful – Find business objects (by query) – For each business object: • Get all properties – push to array – Respect multi-value (becomes comma separated) – Resolve tags and categories into labels • Get all parent-child assocs – push to array • Get all source-target assocs – push to array • Derive some meaningful props – push to array (for example: site name, display path, size)
  • 21. Push to reporting database • Tables ‘create ${table} if not exist’ • Named queries from searches – Named auditing applications – Category name – Predefined names for users, groups, sitegroups • For each batch of results, – Determine superset of columns (=properties + types) – ‘Create %{column} if not exist’ • Insert batch into the table – If date-modified changed, insert new row. – Insert statement varies depending on number of aspects/assocs – Set validFrom/validTo/isLatest on current & previous version/row • One mechanism fits all (also users/groups/categories)
  • 22. How it was achieved: Execution • Embed an existing reporting tool in Alfresco. • Business must be comfortable operating reporting tool • Scheduled execution needs no UI. Administrators can configure, business can use. zip-like subreports sub-reports by relative path
  • 23. Credentials • Does anyone embed Pentaho and use Java API ? • Username/password stored inside report – Update all reports when migrating to other source or from dev  test  prod • JNDI (delegate credentials to app server) • Report is self contained (credentials/JNDI) • JNDI is the only enterprise solution, updating each and every report is not an option… – Requires additional config step in alfresco.xml
  • 24. Parameterization • Pentaho (and JasperReports) accept parameters to drive a report. • Current Alfresco ActionExecuter accepts up to 4 parameters per report • Used to generate site based reports • Used to create generic report, and make specific (e.g. report Sites with non-internal SiteManagers)
  • 25. Execution Structure • Reporting Root(s) – Defines scope for contained containers/templates – Defines target queries – Enables/disables scheduled harvesting/execution – Execute all, harvest all • Reporting Container(s) – Contains reports scheduled at same frequency – Execute all Reporting Templates inside • Reporting Template(s) – Actual reporting templates (Pentaho’s prpt’s) – Enable/disable for automatic execution – Defines output path (by noderef or relative to ‘target’) – References target object from query in Reporting Root
  • 26. UI to tie it together
  • 27. Troubles along the way • Little knowledge available about Pentaho and credentials/authentications using Java API • mltext-type fields (the name ‘Data Dictionary’ is not the same in other languages) – Forces me into ActionHandlers to fix Explorer UI, – Or in Share development (needs to be done one point in time) • EagerContentCleaner cleans Alfresco’s temp folder. Very eagerly
  • 28. Troubles along the way • Max length of sum of column sizes. (MySQL < 65.000 byte if UTF-8) – Tweak default mapping (decrease the defaults) – Make exceptions by property QName (increase/decrease per prop) • Auditing framework uses call-back mechanism different from other services • Module started as a JavaScript API • Documentation is ‘a lot of work’ • Finalizing a (side) project is ‘a lot of work’
  • 29. Challenges • How to detect changes in Categories/structures – Currently no incremental updates • How to detect changes in group structure and users – Currently no incremental updates • If there is no property yet, there is no column – Can be an issue creating reports – Prepping the reporting database with empty columns • Not always possible  configurable?
  • 30. ToDo • Allow reporting database multi-vendor – MyBatis integration in progress • Allow multilangual Alfresco install’s – mltext properties bite (Explorer UI) • UI to Share – Harvest & Execution in Admin Panel – Execute parameterized reports on demand? • Cron jobs cluster aware • Get rid of JavaScript history (harvesting) – Script *not* thread-safe, run max 1 instance! • Mavenize & include more unit tests
  • 31. Demo
  • 33. Main report: Select Site SELECT `site`.`site`, `site`.`st_siteVisibility`, `site`.`cm_title`, `site`.`cm_description`, `site`.`cm_owner` FROM `site` WHERE `site`.`isLatest` = true AND `site`.`site` = ${sitename}
  • 34. Sub report: Users per Role
  • 35. Sub report: Users per Role SELECT count(*) as amount, `siteperson`.`siteRole` as role FROM `siteperson` WHERE `siteperson`.`siteName` = ${sitename} GROUP BY `siteperson`.`siteRole`
  • 36. Sub report: Site members
  • 37. Sub report: Site members SELECT DISTINCT `siteperson`.`userName`, `person`.`cm_email`, `person`.`cm_mobile`, `person`.`cm_telephone`, `person`.`cm_firstName`, `person`.`cm_instantmsg`, `person`.`cm_lastName` FROM `siteperson` INNER JOIN `person` ON `person`.`cm_userName` = `siteperson`.`userName` WHERE `siteperson`.`siteName` = ${sitename} ORDER BY `person`.`cm_lastName` ASC, `person`.`cm_firstName` ASC
  • 39. My Best Practices • Dashlets/Pages are for real-time information – E.g. workflow progress • Reporting is for insight that does not have to be real-time. • Reporting must be extendible by the customer • Design for Reporting – Have metadata available – accept redundancy and one or two additional policies/behaviours
  • 41. I like to publish your reporting case on the wiki. And I have a few books to give away to ‘impressive’ contributions: [en] [nl] Your reporting case…
  • 42. Q&A
  • 43. Alfresco Business Reporting Blog: http://tpeelen.wordpress.com Code & Wiki: https://code.google.com/p/alfresco-business-reporting Youtube: http://www.youtube.com/user/opensourceecm LinkedIn: http://nl.linkedin.com/in/tpeelen Twitter: @tpeelen