| 1 |
Artifacts |
must |
extension |
available in package form that either supports installing from command line, via build tools or as drop-in, or uploading into Alfresco data dictionary at runtime |
| 2 |
Artifacts |
should |
extension |
provide AMP/JAR for installation via build tool |
| 3 |
Artifacts |
should |
extension |
provide AMP for installation via command line (MMT) |
| 4 |
Artifacts |
should |
extension |
provide JAR for drop-in |
| 5 |
Artifacts |
should |
extension |
provide ACP for upload into Alfresco data dictionary at runtime |
| 6 |
Artifacts |
must |
tooling |
available in package form that either supports platform-standard install tools, custom automated install or simple archive extraction into final runnable state |
| 7 |
Artifacts |
must not |
any |
require build from source level |
| 8 |
Artifacts |
may |
any |
externalize optional features in separate artifacts / packages |
| 9 |
Artifacts |
must not |
any |
require manual copying / editing of configuration files apart from alfresco-global.properties / share-config-custom.xml |
| 10 |
Build |
should |
any |
source provided with build tooling |
| 11 |
Build |
must |
any |
build tooling produces result identical to pre-built artifacts for unchanged source |
| 12 |
Build |
should |
extension |
use Maven to build AMP/JAR |
| 13 |
Configuration |
must |
extension |
use either (web-)extension, module context, META-INF (in JAR) or customization approach to add addon-specific configuration files |
| 14 |
Configuration |
must not |
extension |
override Alfresco configuration files in the deployed web application |
| 15 |
Configuration |
must not |
extension |
override Alfresco out-of-the-box Spring beans / configuration sections without explicit and detailed documentation of changes and user interaction |
| 16 |
Configuration |
must not |
Repository extension |
override Alfresco out-of-the-box properties without documentation and user interaction |
| 17 |
Configuration |
should |
Repository extension |
provide addon-specific properties to configure functionality |
| 18 |
Configuration |
should |
Share extension |
support configuration of functionality using configuration sections / Surf extension modules |
| 19 |
Configuration |
should |
Share extension |
support configuration of functionality using configuration sections / Surf extension modules (struck as duplicat of #18) |
| 20 |
API |
should |
extension |
use Public Java or Script API primarily |
| 21 |
API |
should |
Repository extension |
use public Alfresco service beans |
| 22 |
API |
must |
Repository extension |
use runAs() instead of unsecured private service beans to execute code with elevated privileges or as substitute for other users |
| 23 |
API |
must not |
extension |
require existence of super user called "admin" (e.g. runAs(work, "admin")) |
| 24 |
API |
should |
Repository extension |
provide own services using proper interfaces and private/public bean separation |
| 25 |
API |
should |
Repository extension |
use automatic transaction management over user transactions |
| 26 |
API |
should |
extension |
use Alfresco Full Text Search (FTS) syntax and query operations over Lucene |
| 27 |
API |
should |
Repository extension |
use database-bound queries for transactional data retrieval (FTS with query consistency or selectNodes) |
| 28 |
Misc / Java |
must not |
extension |
create or manipulate threads directly (e.g. sleep / interrupt) |
| 29 |
Misc / Java |
must not |
extension |
re-package Alfresco class files or otherwise hide / override them based on classpath loader behaviour |
| 30 |
Misc / Java |
must not |
extension |
require bytecode instrumentation except for experimental features |
| 31 |
Misc / Java |
should not |
extension |
re-package Alfresco JavaScript, Freemarker or static web asset files or otherwise hide / ovveride them based on classpath loader behaviour |
| 32 |
Configuration |
should |
extension |
support end user / customer override of web scripts via (web-)extension approach |
| 33 |
... |
... |
... |
... |