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 |
... |
... |
... |
... |