Overview Edit
Peltas can process different Alfresco sources and output the data to a normalised structure.
Peltas is a “No ETL” tool for Alfresco. It is based on robust and known frameworks such as Spring Boot, Spring Batch and Spring Integrations. We offer an innovative way of processing Alfresco Audit entries and Alfresco live nodes, in order to write them to a database, a flat file, eleastic search, a custom REST API or any other target.
Peltas is made to work with the out of the box Alfresco audit (alfresco-access) application and is easily configurable to work with any custom Alfresco audit applications if required.
With us you can easily and rapidly gain insights in your Alfresco data.
Alfresco (Audit or Live workspace) data sources are configured with the same configuration. However, only one source can be processed at once. This means that one source can be accessed with one Peltas instance and that you would need to run several Peltas instances in order to access two or more different sources. For its safe execution, Peltas needs a database and therfore it requires a JDBC connection.
Getting Started Edit
Peltas for Alfresco can be configured to process Alfresco Audit data or Alfresco live workspace data sources.
Alfresco Audit nodes extraction
Alfresco live workspace data processing and extraction
Custom Alfresco audit applications processing
Write results to any JDBC database or any other custom target such as Elastic Search, flat files or REST APIs.
Peltas entry points are “evaluators”, which triggers the processing of an entry. After the trigger has been recognized we process the mapped properties and store them to the target storage with different executions.
peltas
documentcreated
evaluator: /alfresco-access/transaction/action=CREATE
mapper
property
action.data: /alfresco-access/transaction/action
user.data: /alfresco-access/transaction/user
execution: batch_bi_case
executions
batch_bi_case
insert: insert into batch_bi_case (creator, created, ...) values(:user, :audit.time, ...)
peltas.documentcreated.evaluator=/alfresco-access/transaction/action=CREATE
peltas.documentcreated.mapper.property.action.data=/alfresco-access/transaction/action
peltas.documentcreated.mapper.property.user.data=/alfresco-access/transaction/user
peltas.documentcreated.execution=batch_bi_case
peltas.documentcreated.executions.batch_bi_case.insert=insert into batch_bi_case (creator, created, ...) values(:user, :audit.time, ...)
peltas.datasource.url= jdbc:...
peltas.datasource.driverClassName= ..
peltas.datasource.username= ...
peltas.datasource.password= ...
Authentication Edit
Standard Basic HTTP Authtentication.
HTTPS => Basic HTTP over SSL.
Kerberos Authentication
X.509 Certificate Authentication.
For Alfresco Audit audit, we use the same authentication that you already have in your Alfresco autehntication chain. And for Alfresco live workspace data, we use the authentication mechanism you have in place between SOLR and Alfresco.
peltas.auth.type=basicauth|x509
peltas.auth.basic.username=YOUR_username
peltas.auth.basic.password=YOUR_password
peltas.ssl.keystoreType=JCEKS
peltas.ssl.trustStore=PATH...
peltas.ssl.trustStorePass=xxxx
peltas.ssl.hostVerify=false
TBD
peltas.auth.x509.keyStore=PATH...
peltas.auth.x509.keyStorePass=xxxx
peltas.auth.x509.keystoreType=JCEKS
Transactions Edit
Transactions are handled by batch job chunks. Peltas handles in a safe manner where the last job has left and once Peltas is restarted the new job will continue its processing from the correct entry.
peltas.chunksize=10
Action evaluator Edit
An evaluator is used in order to check if an entry should be processed.
Once the condition is satisfied the extraction will start in Peltas and all the mapping properties will be processed.
Evaluators could be combined with an “|” (pipe charachter) operator, which represents an “AND”.
peltas.documentcreated.evaluator=/alfresco-access/transaction/action=CREATE
peltas.documentcreated.evaluator=/alfresco-access/transaction/action=CREATE|/alfresco-access/transaction/type=cm:content
peltas.documentcreated.evaluator=/alfresco-access/transaction/aspects/add=contains<>{http://www.alfresco.org/model/content/1.0}versionable
{
"id": 77,
"application": "alfresco-access",
"user": "admin",
"time": "2018-05-26T17:16:36.371+02:00",
"values":
{
"/alfresco-access/transaction/action": "CREATE",
"/alfresco-access/transaction/type": "cm:content"
}
}
Properties Edit
Property mapping
Any Alfresco property or aspect can be tracked and mapped. While a single valued property is easily understood, a property with a list of values would need extra configuration in order to map the data. Therefor, Peltas offers processing of data collections too.
This is how we can map/format an audit property and/or an Alfresco property. Also note, that a property could converted to another Java type, a Date for instance.
peltas.documentcreated.mapper.property.path.data=/alfresco-access/transaction/path
peltas.documentcreated.mapper.property.creator.data=/alfresco-access/transaction/properties/add@{http://www.alfresco.org/model/content/1.0}creator
peltas.documentcreated.mapper.property.author.data=/alfresco-access/transaction/properties/add@{http://www.alfresco.org/model/content/1.0}author
peltas.documentcreated.mapper.property.nodeRef.format=%s://%s/%s
peltas.documentcreated.mapper.property.nodeRef.data=/alfresco-access/transaction/properties/add@{http://www.alfresco.org/model/system/1.0}store-protocol,/alfresco-access/transaction/properties/add@{http://www.alfresco.org/model/system/1.0}store-identifier,/alfresco-access/transaction/properties/add@{http://www.alfresco.org/model/system/1.0}node-uuid
peltas.documentcreated.mapper.property.created.data=/alfresco-access/transaction/properties/add@{http://www.alfresco.org/model/content/1.0}created
peltas.documentcreated.mapper.property.created.type=java.util.Date
peltas.documentcreated.mapper.property.description.data=/alfresco-access/transaction/properties/add@{http://www.alfresco.org/model/content/1.0}description
peltas.documentcreated.mapper.property.description.type=java.util.HashMap
{
"id": 77,
"application": "alfresco-access",
"user": "admin",
"time": "2018-05-26T17:16:36.371+02:00",
"values":
{
"...": "...",
"/alfresco-access/transaction/path":"/app:company_home/cm:Flow Reporting Data Spec.xlsx",
"/alfresco-access/transaction/properties/add":"{{http://www.alfresco.org/model/content/1.0}creator=admin,{http://www.alfresco.org/model/content/1.0}created=Mon May 28 10:24:42 CEST 2018}"
}
}
{
"values":
{
"...": "...",
"/alfresco-access/transaction/path":"/app:company_home/cm:Flow Reporting Data Spec.xlsx",
"/alfresco-access/transaction/properties/add":"{{http://www.alfresco.org/model/system/1.0}node-uuid=86b50e20-9bb1-4942-bd2d-96f83c4a7843, {http://www.alfresco.org/model/system/1.0}store-protocol=workspace, {http://www.alfresco.org/model/system/1.0}store-identifier=SpacesStore"
}
}
Expressions Edit
Expression property mapping
Peltas expressions can be seen as virtual properties. Where an expression property always references a mapped property and provides a facility to change the format or convert the data value. The property has to be prefixed with prop: in oprder to be considered as an expression and it has to reference a preivously configured property.
peltas.documentcreated.mapper.property.createdFormatted.data=prop:created
peltas.documentcreated.mapper.property.createdFormatted.format=yyyyMMdd
peltas.documentcreated.mapper.property.createdFormatted.type=java.lang.String
Executions Edit
Execution configuration
An execution is a command that will be used to write the data to the target storage. Peltas supports different type of targets such as databases, SOLR, Elastic Search, CSV files, flat files, etc …
Each data writer consist of its own specific configuration
Executions could be chained and each previous execution data is available in the next one (i.e. for referential integrity).
Below you can see our database writer configuration sample.
peltas.documentcreated.execution=bi_case
peltas.documentcreated.executions.bi_case.insert=insert into bi_case (path, creator, created) values(:path, :user, :audit.time)
peltas.documentcreated.execution=bi_case,bi_case_action
peltas.documentcreated.executions.bi_case.insert=insert into bi_case (path, creator, created) values(:path, :user, :audit.time)
peltas.documentcreated.executions.bi_case_action.insert=insert into batch_bi_case_action (case_id, type, action, "user", "time") values(:bi_case.id, :type, :action, :audit.user, :audit.time)
Aspects Edit
Aspects and collection values mapping
List of aspects can be seen as any Alfresco multi valued property and that is how Peltas access such data. A collection is configurable from within an execution.
peltas.documentcreated.executions.bi_case_action.collections.aspect.key=/alfresco-access/transaction/aspects/add
peltas.documentcreated.executions.bi_case_action.collections.aspect.insert= insert into bi_case_action_aspect (action_id, aspect) values(:bi_case_action.id, :aspect)
peltas.documentcreated.executions.bi_case_action.collections.myMultiProperty.key=/alfresco-access/transaction/properties/add@{http://www.acme.org/model/1.0}multiValue
peltas.documentcreated.executions.bi_case_action.collections.myMultiProperty.insert= insert into bi_case_action_aspect (action_id, aspect) values(:bi_case_action.id, :myMultiProperty)