Heinous merge from HEAD. Seems to basically work. Be on guard however.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4137 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-10-18 02:24:36 +00:00
parent 6441f470f5
commit 111296d4dc
156 changed files with 18940 additions and 14167 deletions

View File

@@ -285,6 +285,9 @@
<property name="serviceRegistry">
<ref bean="ServiceRegistry"></ref>
</property>
<property name="headerEncoding">
<value>${mail.header}</value>
</property>
</bean>
<bean id="set-property-value" class="org.alfresco.repo.action.executer.SetPropertyValueActionExecuter" parent="action-executer">

View File

@@ -1,181 +1,202 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Default Audit Configuration -->
<Audit xmlns="http://www.alfresco.org/model/audit/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" enabled="false" auditInternal="false" mode="all">
<!-- -->
<!-- Global options -->
<!-- -->
<!-- Do not record any additional information -->
<RecordOptions>
<recordPath>false</recordPath>
<recordFilters>false</recordFilters>
<recordSerializedReturnValue>false</recordSerializedReturnValue>
<recordSerializedExceptions>false</recordSerializedExceptions>
<recordSerializedMethodArguments>false</recordSerializedMethodArguments>
<recordSerializedKeyPropertiesBeforeInvocation>false</recordSerializedKeyPropertiesBeforeInvocation>
<recordSerializedKeyPropertiesAferInvocation>false</recordSerializedKeyPropertiesAferInvocation>
</RecordOptions>
<!-- -->
<!-- Specific service options -->
<!-- -->
<Service name="ServiceRegistry" mode="none" enabled="false"/>
<!-- The action service -->
<Service name="ActionService" mode="none">
<Method name="executeAction" mode="all" auditInternal="true"/>
<Method name="saveAction" mode="all"/>
<Method name="removeAction" mode="all"/>
<Method name="removeAllActions" mode="all"/>
</Service>
<!-- The COCI Service -->
<Service name="CheckOutCheckInService"/>
<!-- The DictionaryService -->
<!-- There are no audtiable methods in the data dictionary service -->
<Service name="DictionaryService" mode="none" enabled="false"/>
<!-- The Lock Service -->
<Service name="LockService"/>
<!-- The File/Folder Service -->
<Service name="FileFolderService" mode="none">
<Method name="rename" mode="all"/>
<Method name="move" mode="all"/>
<Method name="copy" mode="all"/>
<Method name="create" mode="all"/>
<Method name="delete" mode="all"/>
<Method name="makeFolders" mode="all"/>
<Method name="getWriter" mode="all"/>
</Service>
<Service name="ContentService" mode="none">
<Method name="getWriter" mode="all"/>
</Service>
<Service name="CopyService" mode="none">
<Method name="copy" mode="all"/>
</Service>
<!-- The MimetypeService -->
<!-- There are no audtiable methods in the mime type service -->
<Service name="MimetypeService" mode="none" enabled="false"/>
<Service name="NodeService" mode="none">
<Method name="createStore" mode="all"/>
<Method name="createNode" mode="all"/>
<Method name="moveNode" mode="all"/>
<Method name="setChildAssociationIndex" mode="all"/>
<Method name="setType" mode="all"/>
<Method name="addAspect" mode="all"/>
<Method name="removeAspect" mode="all"/>
<Method name="deleteNode" mode="all"/>
<Method name="addChild" mode="all"/>
<Method name="removeChild" mode="all"/>
<Method name="setProperties" mode="all"/>
<Method name="setProperty" mode="all"/>
<Method name="createAssociation" mode="all"/>
<Method name="removeAssociation" mode="all"/>
<Method name="restoreNode" mode="all"/>
</Service>
<Service name="ScriptService"/>
<Service name="TemplateService"/>
<Service name="RuleService" mode="none">
<Method name="disableRules" mode="all"/>
<Method name="enableRules" mode="all"/>
<Method name="disableRule" mode="all"/>
<Method name="enableRule" mode="all"/>
<Method name="createRule" mode="all"/>
<Method name="saveRule" mode="all"/>
<Method name="removeRule" mode="all"/>
<Method name="removeAllRules" mode="all"/>
</Service>
<Service name="CategoryService" mode="none">
<Method name="createClassifiction" mode="all"/>
<Method name="createRootCategory" mode="all"/>
<Method name="createCategory" mode="all"/>
<Method name="deleteClassification" mode="all"/>
<Method name="deleteCategory" mode="all"/>
</Service>
<Service name="SearchService" mode="none" enabled="false"/>
<Service name="AuthenticationService" mode="none">
<Method name="createAuthentication" mode="all"/>
<Method name="updateAuthentication" mode="all"/>
<Method name="setAuthentication" mode="all"/>
<Method name="deleteAuthentication" mode="all"/>
<Method name="setAuthenticationEnabled" mode="all"/>
<Method name="authenticate" mode="all"/>
<Method name="authenticateAsGuest" mode="all"/>
<Method name="authenticationExists" mode="all"/>
<Method name="invalidateUserSession" mode="all"/>
<Method name="invalidateTicket" mode="all"/>
<Method name="validate" mode="all"/>
<Method name="clearCurrentSecurityContext" mode="all"/>
</Service>
<Service name="AuthorityService" mode="none">
<Method name="createAuthority" mode="all"/>
<Method name="addAuthority" mode="all"/>
<Method name="removeAuthority" mode="all"/>
<Method name="deleteAuthority" mode="all"/>
</Service>
<Service name="OwnableService" mode="none">
<Method name="setOwner" mode="all"/>
<Method name="takeOwnership" mode="all"/>
</Service>
<Service name="PermissionService" mode="none">
<Method name="deletePermissions" mode="all"/>
<Method name="clearPermission" mode="all"/>
<Method name="deletePermission" mode="all"/>
<Method name="setPermission" mode="all"/>
<Method name="setInheritParentPermissions" mode="all"/>
</Service>
<Service name="PersonService" mode="none">
<Method name="setCreateMissingPeople" mode="all"/>
<Method name="setPersonProperties" mode="all"/>
<Method name="createPerson" mode="all"/>
<Method name="deletePerson" mode="all"/>
</Service>
<Service name="VersionService" mode="none">
<Method name="createVersion" mode="all"/>
<Method name="revert" mode="all"/>
<Method name="restore" mode="all"/>
<Method name="deleteVersionHistory" mode="all"/>
</Service>
<Service name="ExporterService"/>
<Service name="ImporterService"/>
<Service name="RepositoryExporterService"/>
<Service name="DescriptorService" mode="none" enabled="false"/>
<Service name="LicenseService" mode="none" enabled="false"/>
<Service name="NamespaceService" mode="none" enabled="false"/>
<Service name="TransactionService" mode="none" enabled="false"/>
<?xml version='1.0' encoding='UTF-8'?>
<!-- Default Audit Configuration -->
<Audit xmlns="http://www.alfresco.org/model/audit/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" enabled="false" auditInternal="false" mode="all">
<!-- -->
<!-- Global options -->
<!-- -->
<!-- Do not record any additional information -->
<RecordOptions>
<recordPath>false</recordPath>
<recordFilters>false</recordFilters>
<recordSerializedReturnValue>false</recordSerializedReturnValue>
<recordSerializedExceptions>false</recordSerializedExceptions>
<recordSerializedMethodArguments>false</recordSerializedMethodArguments>
<recordSerializedKeyPropertiesBeforeInvocation>false</recordSerializedKeyPropertiesBeforeInvocation>
<recordSerializedKeyPropertiesAferInvocation>false</recordSerializedKeyPropertiesAferInvocation>
</RecordOptions>
<!-- -->
<!-- Specific service options -->
<!-- -->
<Service name="ServiceRegistry" mode="none" enabled="false"/>
<!-- The action service -->
<Service name="ActionService" mode="none">
<Method name="executeAction" mode="all" auditInternal="true"/>
<Method name="saveAction" mode="all"/>
<Method name="removeAction" mode="all"/>
<Method name="removeAllActions" mode="all"/>
</Service>
<!-- The COCI Service -->
<Service name="CheckOutCheckInService">
<Method name="getWorkingCopy" mode="none"/>
</Service>
<!-- The DictionaryService -->
<!-- There are no audtiable methods in the data dictionary service -->
<Service name="DictionaryService" mode="none" enabled="false"/>
<!-- The Lock Service -->
<Service name="LockService">
<Method name="getLockStatus" mode="none"/>
<Method name="getLockType" mode="none"/>
<Method name="getLocks" mode="none"/>
</Service>
<!-- The File/Folder Service -->
<Service name="FileFolderService" mode="none">
<Method name="rename" mode="all"/>
<Method name="move" mode="all"/>
<Method name="copy" mode="all" auditInternal="true"/>
<Method name="create" mode="all"/>
<Method name="delete" mode="all"/>
<Method name="makeFolders" mode="all"/>
<Method name="getWriter" mode="all"/>
</Service>
<Service name="ContentService" mode="none">
<Method name="getWriter" mode="all"/>
</Service>
<Service name="CopyService" mode="none">
<Method name="copy" mode="all" auditInternal="true"/>
</Service>
<!-- The MimetypeService -->
<!-- There are no audtiable methods in the mime type service -->
<Service name="MimetypeService" mode="none" enabled="false"/>
<Service name="NodeService" mode="none">
<Method name="createStore" mode="all"/>
<Method name="createNode" mode="all"/>
<Method name="moveNode" mode="all"/>
<Method name="setChildAssociationIndex" mode="all"/>
<Method name="setType" mode="all"/>
<Method name="addAspect" mode="all"/>
<Method name="removeAspect" mode="all"/>
<Method name="deleteNode" mode="all"/>
<Method name="addChild" mode="all"/>
<Method name="removeChild" mode="all"/>
<Method name="setProperties" mode="all"/>
<Method name="setProperty" mode="all"/>
<Method name="createAssociation" mode="all"/>
<Method name="removeAssociation" mode="all"/>
<Method name="restoreNode" mode="all"/>
</Service>
<Service name="ScriptService" auditInternal="true"/>
<Service name="TemplateService" auditInternal="true">
<Method name="getTemplateProcessor" mode="none"/>
</Service>
<Service name="RuleService" mode="none" auditInternal="true">
<Method name="disableRules" mode="all"/>
<Method name="enableRules" mode="all"/>
<Method name="disableRule" mode="all"/>
<Method name="enableRule" mode="all"/>
<Method name="createRule" mode="all"/>
<Method name="saveRule" mode="all"/>
<Method name="removeRule" mode="all"/>
<Method name="removeAllRules" mode="all"/>
</Service>
<Service name="CategoryService" mode="none">
<Method name="createClassifiction" mode="all"/>
<Method name="createRootCategory" mode="all"/>
<Method name="createCategory" mode="all"/>
<Method name="deleteClassification" mode="all"/>
<Method name="deleteCategory" mode="all"/>
</Service>
<Service name="SearchService" mode="none" enabled="false"/>
<Service name="AuthenticationService" mode="none">
<Method name="createAuthentication" mode="all"/>
<Method name="updateAuthentication" mode="all"/>
<Method name="setAuthentication" mode="all"/>
<Method name="deleteAuthentication" mode="all"/>
<Method name="setAuthenticationEnabled" mode="all"/>
<Method name="authenticate" mode="all"/>
<Method name="authenticateAsGuest" mode="all"/>
<Method name="authenticationExists" mode="all"/>
<Method name="invalidateUserSession" mode="all"/>
<Method name="invalidateTicket" mode="all"/>
<Method name="validate" mode="all"/>
<Method name="clearCurrentSecurityContext" mode="all"/>
</Service>
<Service name="AuthorityService" mode="none">
<Method name="createAuthority" mode="all"/>
<Method name="addAuthority" mode="all"/>
<Method name="removeAuthority" mode="all"/>
<Method name="deleteAuthority" mode="all"/>
</Service>
<Service name="OwnableService" mode="none">
<Method name="setOwner" mode="all"/>
<Method name="takeOwnership" mode="all"/>
</Service>
<Service name="PermissionService" mode="none">
<Method name="deletePermissions" mode="all"/>
<Method name="clearPermission" mode="all"/>
<Method name="deletePermission" mode="all"/>
<Method name="setPermission" mode="all"/>
<Method name="setInheritParentPermissions" mode="all"/>
</Service>
<Service name="PersonService" mode="none">
<Method name="setCreateMissingPeople" mode="all"/>
<Method name="setPersonProperties" mode="all"/>
<Method name="createPerson" mode="all"/>
<Method name="deletePerson" mode="all"/>
</Service>
<Service name="VersionService" mode="none">
<Method name="createVersion" mode="all"/>
<Method name="revert" mode="all"/>
<Method name="restore" mode="all"/>
<Method name="deleteVersionHistory" mode="all"/>
</Service>
<Service name="ExporterService"/>
<Service name="ImporterService"/>
<Service name="RepositoryExporterService"/>
<Service name="DescriptorService" mode="none" enabled="false"/>
<Service name="LicenseService" mode="none" enabled="false"/>
<Service name="NamespaceService" mode="none" enabled="false"/>
<Service name="TransactionService" mode="none" enabled="false"/>
<Service name="WorkflowService" auditInternal="true">
<Method name="isDefinitionDeployed" mode="none"/>
<Method name="getDefinitions" mode="none"/>
<Method name="getDefinitionById" mode="none"/>
<Method name="getDefinitionByName" mode="none"/>
<Method name="getActiveWorkflows" mode="none"/>
<Method name="getWorkflowPaths" mode="none"/>
<Method name="getTasksForWorkflowPath" mode="none"/>
<Method name="getTaskById" mode="none"/>
<Method name="getAssignedTasks" mode="none"/>
<Method name="getPooledTasks" mode="none"/>
</Service>
</Audit>

View File

@@ -204,8 +204,12 @@
<!--
<bean id="authenticationComponentImpl" class="org.alfresco.repo.security.authentication.SimpleAcceptOrRejectAllAuthenticationComponentImpl">
<property name="accept">
<value>true</value>
</property>
</bean>
-->
@@ -237,12 +241,6 @@
<property name="storeUrl">
<value>${spaces.store}</value>
</property>
<!-- The path to the company home space, used to set the -->
<!-- default home space for users that are created if -->
<!-- missing. -->
<property name="companyHomePath">
<value>/${spaces.company_home.childname}</value>
</property>
<!-- Some authentication mechanisms may need to create people -->
<!-- in the repository on demand. This enables that feature. -->
<!-- If dsiabled an error will be generated for missing -->
@@ -260,6 +258,88 @@
</property>
</bean>
<bean name="homeFolderManager" class="org.alfresco.repo.security.person.HomeFolderManager">
<property name="nodeService">
<ref bean="nodeService" />
</property>
<property name="policyComponent">
<ref bean="policyComponent" />
</property>
<property name="defaultProvider">
<ref bean="personalHomeFolderProvider" />
</property>
</bean>
<bean name="companyHomeFolderProvider" class="org.alfresco.repo.security.person.ExistingPathBasedHomeFolderProvider">
<property name="serviceRegistry">
<ref bean="ServiceRegistry" />
</property>
<property name="path">
<value>/${spaces.company_home.childname}</value>
</property>
<property name="storeUrl">
<value>${spaces.store}</value>
</property>
<property name="homeFolderManager">
<ref bean="homeFolderManager" />
</property>
</bean>
<bean name="guestHomeFolderProvider" class="org.alfresco.repo.security.person.ExistingPathBasedHomeFolderProvider">
<property name="serviceRegistry">
<ref bean="ServiceRegistry" />
</property>
<property name="path">
<value>/${spaces.company_home.childname}/${spaces.guest_home.childname}</value>
</property>
<property name="storeUrl">
<value>${spaces.store}</value>
</property>
<property name="homeFolderManager">
<ref bean="homeFolderManager" />
</property>
<property name="userPemissions">
<set>
<value>Consumer</value>
</set>
</property>
</bean>
<bean name="bootstrapHomeFolderProvider" class="org.alfresco.repo.security.person.BootstrapHomeFolderProvider">
<property name="homeFolderManager">
<ref bean="homeFolderManager" />
</property>
</bean>
<bean name="personalHomeFolderProvider" class="org.alfresco.repo.security.person.UIDBasedHomeFolderProvider">
<property name="serviceRegistry">
<ref bean="ServiceRegistry" />
</property>
<property name="path">
<value>/${spaces.company_home.childname}</value>
</property>
<property name="storeUrl">
<value>${spaces.store}</value>
</property>
<property name="homeFolderManager">
<ref bean="homeFolderManager" />
</property>
<property name="inheritsPermissionsOnCreate">
<value>false</value>
</property>
<property name="ownerPemissionsToSetOnCreate">
<set>
<value>All</value>
</set>
</property>
<property name="userPemissions">
<set>
<value>All</value>
</set>
</property>
</bean>
<!-- The ticket component. -->
<!-- Used for reauthentication -->
<bean id="ticketComponent" class="org.alfresco.repo.security.authentication.InMemoryTicketComponentImpl">

View File

@@ -157,6 +157,35 @@
</property>
</bean>
<bean id="workflowBootstrap" parent="workflowDeployer">
<property name="workflowDefinitions">
<list>
<props>
<prop key="engineId">jbpm</prop>
<prop key="location">alfresco/workflow/review_processdefinition.xml</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">true</prop>
</props>
<props>
<prop key="engineId">jbpm</prop>
<prop key="location">alfresco/workflow/adhoc_processdefinition.xml</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">true</prop>
</props>
</list>
</property>
<property name="models">
<list>
<value>alfresco/model/workflowModel.xml</value>
</list>
</property>
<property name="labels">
<list>
<value>alfresco/workflow/workflow-messages</value>
</list>
</property>
</bean>
<!-- Descriptor Service -->
<bean id="descriptorComponent" class="org.alfresco.repo.descriptor.DescriptorServiceImpl">

View File

@@ -24,6 +24,7 @@
<cm:email></cm:email>
<cm:organizationId></cm:organizationId>
<cm:homeFolder>/${spaces.company_home.childname}</cm:homeFolder>
<cm:homeFolderProvider>bootstrapHomeFolderProvider</cm:homeFolderProvider>
</cm:person>
<!-- Guest needs to read their own person information -->
<cm:person view:childName="cm:person">
@@ -39,10 +40,11 @@
<cm:email></cm:email>
<cm:organizationId></cm:organizationId>
<cm:homeFolder>/${spaces.company_home.childname}/${spaces.guest_home.childname}</cm:homeFolder>
<cm:homeFolderProvider>bootstrapHomeFolderProvider</cm:homeFolderProvider>
</cm:person>
</sys:children>
</sys:container>
<cm:folder view:childName="${system.workflow_container.childname}"/>
<sys:container view:childName="${system.workflow_container.childname}"/>
</sys:children>
</sys:container>

View File

@@ -2,24 +2,12 @@
xmlns:cm="http://www.alfresco.org/model/content/1.0"
xmlns:app="http://www.alfresco.org/model/application/1.0">
<!--
<cm:folder>
<app:uifacets />
<cm:name>${tutorial.space.name}</cm:name>
<cm:description>${tutorial.space.description}</cm:description>
<app:icon>space-icon-doc</app:icon>
<cm:contains>
-->
<cm:content>
<app:uifacets />
<cm:name>${tutorial.document.name}</cm:name>
<cm:title>${tutorial.document.title}</cm:title>
<cm:description>${tutorial.document.description}</cm:description>
<cm:content>contentUrl=classpath:alfresco/bootstrap/${tutorial.document.name}|mimetype=application/pdf|size=|encoding=</cm:content>
</cm:content>
<!--
</cm:contains>
</cm:folder>
-->
<cm:content>
<app:uifacets />
<cm:name>${tutorial.document.name}</cm:name>
<cm:title>${tutorial.document.title}</cm:title>
<cm:description>${tutorial.document.description}</cm:description>
<cm:content>contentUrl=classpath:alfresco/bootstrap/Alfresco-Tutorial.pdf|mimetype=application/pdf|size=|encoding=</cm:content>
</cm:content>
</view:view>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,38 @@
// Main action
function runAction()
{
out.println("Dump request details :-");
out.println(" Folder node = " + deskParams.getFolderNode());
var folder = deskParams.getFolder();
out.println(" Folder path = " + folder.getFullName());
out.println(" Number of targets = " + deskParams.numberOfTargetNodes());
if ( deskParams.numberOfTargetNodes() > 0) {
out.println(" Targets:");
for ( var i = 0; i < deskParams.numberOfTargetNodes(); i++) {
var target = deskParams.getTarget( i);
out.println(" Type = " + target.getTypeAsString() + ", path = " + target.getTarget());
out.println(" Node = " + target.getNode());
}
}
}
// Run the action
//
// Response :-
// Success - no return or return 0, or "0,<message>"
// For error or control response then return a string :-
// Error - "1,<error message>"
// FileNotFound - "2,<message>"
// AccessDenied - "3,<message>"
// BadParameter - "4,<message>
// NotWorkingCopy - "5,<message>"
// NoSuchAction - "6,<message>
// LaunchURL - "7,<URL>"
// CommandLine - "8,<commandline>"
runAction();
var response = "0,Javascript completed successfully";
response;

View File

@@ -0,0 +1,38 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Forces the reindexing of nodes where content may have been missing before -->
<!--
This component can be triggered at intervals where asynchronous content sharing
between clustered servers has been set up.
-->
<bean id="missingContentReindexTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
<bean class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.node.index.IndexRecoveryJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="indexRecoveryComponent">
<ref bean="missingContentReindexComponent" />
</entry>
</map>
</property>
</bean>
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<!-- Give the server 5 minutes and then check for missing content -->
<property name="startDelayMinutes">
<value>5</value>
</property>
<property name="repeatCount">
<value>0</value>
</property>
</bean>
</beans>

View File

@@ -0,0 +1,463 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- DAO that rejects changes - LDAP is read only at the moment -->
<bean id="alfDaoImpl" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyInterfaces">
<value>org.alfresco.repo.security.authentication.MutableAuthenticationDao</value>
</property>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<bean class="org.alfresco.repo.security.authentication.ntlm.NullMutableAuthenticationDao" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">${server.transaction.mode.default}</prop>
</props>
</property>
</bean>
<!-- LDAP authentication configuration -->
<!--
You can also use JAAS authentication for Kerberos against Active Directory or NTLM if you also require single sign on from the
web browser. You do not have to use LDAP authentication to synchronise groups and users from an LDAP store if it supports other
authentication routes, like Active Directory.
-->
<bean id="authenticationComponentImpl" class="org.alfresco.repo.security.authentication.ldap.LDAPAuthenticationComponentImpl">
<property name="LDAPInitialDirContextFactory">
<ref bean="ldapInitialDirContextFactory"/>
</property>
<property name="userNameFormat">
<!--
This maps between what the user types in and what is passed through to the underlying LDAP authentication.
"%s" - the user id is passed through without modification.
Used for LDAP authentication such as DIGEST-MD5, anything that is not "simple".
"cn=%s,ou=London,dc=company,dc=com" - If the user types in "Joe Bloggs" the authentricate as "cn=Joe Bloggs,ou=London,dc=company,dc=com"
Usually for simple authentication.
-->
<value>%s</value>
</property>
</bean>
<!--
This bean is used to support general LDAP authentication. It is also used to provide read only access to users and groups
to pull them out of the LDAP reopsitory
-->
<bean id="ldapInitialDirContextFactory" class="org.alfresco.repo.security.authentication.ldap.LDAPInitialDirContextFactoryImpl">
<property name="initialDirContextEnvironment">
<map>
<!-- The LDAP provider -->
<entry key="java.naming.factory.initial">
<value>com.sun.jndi.ldap.LdapCtxFactory</value>
</entry>
<!-- The url to the LDAP server -->
<!-- Note you can use space separated urls - they will be tried in turn until one works -->
<!-- This could be used to authenticate against one or more ldap servers (you will not know which one ....) -->
<entry key="java.naming.provider.url">
<value>ldap://openldap.domain.com:389</value>
</entry>
<!-- The authentication mechanism to use -->
<!-- Some sasl authentication mechanisms may require a realm to be set -->
<!-- java.naming.security.sasl.realm -->
<!-- The available options will depend on your LDAP provider -->
<entry key="java.naming.security.authentication">
<value>DIGEST-MD5</value>
</entry>
<!-- The id of a user who can read group and user information -->
<!-- This does not go through the pattern substitution defined above and is used "as is" -->
<entry key="java.naming.security.principal">
<value>reader</value>
</entry>
<!-- The password for the user defined above -->
<entry key="java.naming.security.credentials">
<value>secret</value>
</entry>
</map>
</property>
</bean>
<!-- Ldap Syncronisation support -->
<!--
There can be more than one stack of beans that import users or groups. For example, it may be easier
to have a version of ldapPeopleExportSource, and associated beans, for each sub-tree of your ldap directory
from which you want to import users. You could then limit users to be imported from two or more sub tress and ignore
users found else where. The same applies to the import of groups.
The defaults shown below are for OpenLDAP.
-->
<!-- Extract user information from LDAP and transform this to XML -->
<bean id="ldapPeopleExportSource" class="org.alfresco.repo.security.authentication.ldap.LDAPPersonExportSource">
<!--
The query to select objects that represent the users to import.
For Open LDAP, using a basic schema, the following is probably what you want:
(objectclass=inetOrgPerson)
For Active Directory:
(objectclass=user)
-->
<property name="personQuery">
<value>(objectclass=inetOrgPerson)</value>
</property>
<!--
The seach base restricts the LDAP query to a sub section of tree on the LDAP server.
-->
<property name="searchBase">
<value>dc=alfresco,dc=org</value>
</property>
<!--
The unique identifier for the user.
THIS MUST MATCH WHAT THE USER TYPES IN AT THE LOGIN PROMPT
For simple LDAP authentication this is likely to be "cn" or, less friendly, "distinguishedName"
In OpenLDAP, using other authentication mechanisms "uid", but this depends on how you map
from the id in the LDAP authentication request to search for the inetOrgPerson against which
to authenticate.
In Active Directory this is most likely to be "sAMAccountName"
This property is mandatory and must appear on all users found by the query defined above.
-->
<property name="userIdAttributeName">
<value>uid</value>
</property>
<!-- Services -->
<property name="LDAPInitialDirContextFactory">
<ref bean="ldapInitialDirContextFactory"/>
</property>
<property name="personService">
<ref bean="personService"></ref>
</property>
<property name="namespaceService">
<ref bean="namespaceService"/>
</property>
<!--
The path to the location of a space to use as the default home folder.
This folder should be readable by all users, or a group to which all imported users belong.
-->
<property name="defaultHomeFolder">
<value>/app:company_home</value>
</property>
<!--
This property defines a mapping between attributes held on LDAP user objects and
the properties of user objects held in the repository. The key is the QName of an attribute in
the repository, the value is the attribute name from the user/inetOrgPerson/.. object in the
LDAP repository.
-->
<property name="attributeMapping">
<map>
<entry key="cm:userName">
<!-- Must match the same attribute as userIdAttributeName -->
<value>uid</value>
</entry>
<entry key="cm:firstName">
<!-- OpenLDAP: "givenName" -->
<!-- Active Directory: "givenName" -->
<value>givenName</value>
</entry>
<entry key="cm:lastName">
<!-- OpenLDAP: "sn" -->
<!-- Active Directory: "sn" -->
<value>sn</value>
</entry>
<entry key="cm:email">
<!-- OpenLDAP: "mail" -->
<!-- Active Directory: "???" -->
<value>mail</value>
</entry>
<entry key="cm:organizationId">
<!-- OpenLDAP: "o" -->
<!-- Active Directory: "???" -->
<value>o</value>
</entry>
</map>
</property>
</bean>
<!-- Extract group information from LDAP and transform this to XML -->
<bean id="ldapGroupExportSource" class="org.alfresco.repo.security.authentication.ldap.LDAPGroupExportSource">
<!--
The query to select objects that represent the groups to import.
For Open LDAP, using a basic schema, the following is probably what you want:
(objectclass=groupOfNames)
For Active Directory:
(objectclass=group)
-->
<property name="groupQuery">
<value>(objectclass=groupOfNames)</value>
</property>
<!--
The seach base restricts the LDAP query to a sub section of tree on the LDAP server.
-->
<property name="searchBase">
<value>dc=alfresco,dc=org</value>
</property>
<!--
The unique identifier for the user. This must match the userIdAttributeName on the ldapPeopleExportSource bean above.
-->
<property name="userIdAttributeName">
<value>uid</value>
</property>
<!--
An attribute that is a unique identifier for each group found.
This is also the name of the group with the current group implementation.
This is mandatory for any groups found.
OpenLDAP: "cn" as it is mandatory on groupOfNames
Active Directory: "cn"
-->
<property name="groupIdAttributeName">
<value>cn</value>
</property>
<!--
The objectClass attribute for group members.
For each member of a group, the distinguished name is given.
The object is looked up by its DN. If the object is of this class it is treated as a group.
-->
<property name="groupType">
<value>groupOfNames</value>
</property>
<!--
The objectClass attribute for person members.
For each member of a group, the distinguished name is given.
The object is looked up by its DN. If the object is of this class it is treated as a person.
-->
<property name="personType">
<value>inetOrgPerson</value>
</property>
<property name="LDAPInitialDirContextFactory">
<ref bean="ldapInitialDirContextFactory"/>
</property>
<property name="namespaceService">
<ref bean="namespaceService"/>
</property>
<!--
The repeating attribute on group objects (found by query or as sub groups)
used to define membership of the group. This is assumed to hold distinguished names of
other groups or users/people; the above types are used to determine this.
OpenLDAP: "member" as it is mandatory on groupOfNames
Active Directory: "member"
-->
<property name="memberAttribute">
<value>member</value>
</property>
<property name="authorityDAO">
<ref bean="authorityDAO"/>
</property>
</bean>
<!-- Job definitions to import LDAP people and groups -->
<!-- The triggers register themselves with the scheduler -->
<!-- You may comment in the default scheduler to enable these triggers -->
<!-- If a cron base trigger is what you want seee scheduled-jobs-context.xml for examples. -->
<!-- Trigger to load poeple -->
<!-- Note you can have more than one initial (context, trigger, import job and export source) set -->
<!-- This would allow you to load people from more than one ldap store -->
<bean id="ldapPeopleTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
<bean id="ldapPeopleJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.importer.ImporterJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="bean">
<ref bean="ldapPeopleImport"/>
</entry>
</map>
</property>
</bean>
</property>
<!-- Start after 30 seconds of starting the repository -->
<property name="startDelay">
<value>30000</value>
</property>
<!-- Repeat every hour -->
<property name="repeatInterval">
<value>3600000</value>
</property>
<!-- Commented out to disable
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
-->
</bean>
<bean id="ldapGroupTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
<bean id="ldapGroupJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.importer.ImporterJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="bean">
<ref bean="ldapGroupImport"/>
</entry>
</map>
</property>
</bean>
</property>
<!-- Start after 30 seconds of starting the repository -->
<property name="startDelay">
<value>30000</value>
</property>
<!-- Repeat every hour -->
<property name="repeatInterval">
<value>3600000</value>
</property>
<!-- Commented out to disable
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
-->
</bean>
<!-- The bean that imports xml describing people -->
<bean id="ldapPeopleImport" class="org.alfresco.repo.importer.ExportSourceImporter">
<property name="importerService">
<ref bean="importerComponent"/>
</property>
<property name="transactionService">
<ref bean="transactionComponent"/>
</property>
<property name="authenticationComponent">
<ref bean="authenticationComponent"/>
</property>
<property name="exportSource">
<ref bean="ldapPeopleExportSource"/>
</property>
<!-- The store that contains people - this should not be changed -->
<property name="storeRef">
<value>${spaces.store}</value>
</property>
<!-- The location of people nodes within the store defined above - this should not be changed -->
<property name="path">
<value>/${system.system_container.childname}/${system.people_container.childname}</value>
</property>
<!-- If true, clear all existing people before import, if false update/add people from the xml -->
<property name="clearAllChildren">
<value>false</value>
</property>
<property name="nodeService">
<ref bean="nodeService"/>
</property>
<property name="searchService">
<ref bean="searchService"/>
</property>
<property name="namespacePrefixResolver">
<ref bean="namespaceService"/>
</property>
<property name="caches">
<set>
<ref bean="permissionsAccessCache"/>
</set>
</property>
</bean>
<!-- The bean that imports xml descibing groups -->
<bean id="ldapGroupImport" class="org.alfresco.repo.importer.ExportSourceImporter">
<property name="importerService">
<ref bean="importerComponent"/>
</property>
<property name="transactionService">
<ref bean="transactionComponent"/>
</property>
<property name="authenticationComponent">
<ref bean="authenticationComponent"/>
</property>
<property name="exportSource">
<ref bean="ldapGroupExportSource"/>
</property>
<!-- The store that contains group information - this should not be changed -->
<property name="storeRef">
<value>${alfresco_user_store.store}</value>
</property>
<!-- The location of group information in the store above - this should not be changed -->
<property name="path">
<value>/${alfresco_user_store.system_container.childname}/${alfresco_user_store.authorities_container.childname}</value>
</property>
<!-- If true, clear all existing groups before import, if false update/add groups from the xml -->
<property name="clearAllChildren">
<value>true</value>
</property>
<property name="nodeService">
<ref bean="nodeService"/>
</property>
<property name="searchService">
<ref bean="searchService"/>
</property>
<property name="namespacePrefixResolver">
<ref bean="namespaceService"/>
</property>
<!-- caches to clear on import of groups -->
<property name="caches">
<set>
<ref bean="userToAuthorityCache"/>
<ref bean="permissionsAccessCache"/>
</set>
</property>
<!-- userToAuthorityCache -->
</bean>
</beans>

View File

@@ -50,6 +50,7 @@
<!-- URL - launches a URL via the Windows shell -->
<!-- CmdLine - launches the Notepad application -->
<!-- CheckInOut - checks files in/out, drag and drop files onto the application -->
<!-- JavaScript - run a server-side script -->
<!--
<desktopActions>
<global>
@@ -76,6 +77,15 @@
<name>CheckInOut</name>
<filename>__AlfrescoCheckInOut.exe</filename>
</action>
<action>
<class>org.alfresco.filesys.smb.server.repo.desk.JavaScriptDesktopAction</class>
<name>JavaScript</name>
<filename>__AlfrescoScript.exe</filename>
<script>alfresco/desktop/dumpRequest.js</script>
<attributes>anyFiles, multiplePaths , allowNoParams</attributes>
<preprocess>confirm, copyToTarget</preprocess>
</action>
</desktopActions>
-->

View File

@@ -53,6 +53,47 @@
<ref bean="ownableService" />
</property>
</bean>
<bean id="importerComponentWithBehaviour" class="org.alfresco.repo.importer.ImporterComponent">
<!-- For now, hard-wire the view parser -->
<property name="namespaceService">
<ref bean="NamespaceService" />
</property>
<property name="dictionaryService">
<ref bean="DictionaryService" />
</property>
<property name="nodeService">
<ref bean="NodeService" />
</property>
<property name="contentService">
<ref bean="ContentService" />
</property>
<property name="ruleService">
<ref bean="RuleService" />
</property>
<property name="permissionService">
<ref bean="PermissionService" />
</property>
<property name="authorityService">
<ref bean="AuthorityService" />
</property>
<property name="authenticationService">
<ref bean="AuthenticationService" />
</property>
<property name="viewParser">
<ref bean="viewParser" />
</property>
<property name="behaviourFilter">
<ref bean="unboundPolicyBehaviourFilter" />
</property>
<property name="searchService">
<ref bean="searchService" />
</property>
<property name="ownableService">
<ref bean="ownableService" />
</property>
</bean>
<bean id="exporterComponent" class="org.alfresco.repo.exporter.ExporterComponent">
<property name="namespaceService">

View File

@@ -4,10 +4,10 @@
<beans>
<bean id="indexRecoveryComponentBase" abstract="true" >
<property name="sessionFactory">
<ref bean="sessionFactory" />
<property name="authenticationComponent">
<ref bean="authenticationComponentImpl" />
</property>
<property name="transactionService">
<property name="transactionComponent">
<ref bean="transactionComponent" />
</property>
<property name="indexer">
@@ -22,62 +22,33 @@
<property name="nodeService">
<ref bean="nodeService" />
</property>
<property name="nodeDaoService">
<ref bean="nodeDaoService" />
</property>
</bean>
<!-- full node index recovery -->
<bean id="indexRecoveryComponent" class="org.alfresco.repo.node.index.FullIndexRecoveryComponent" parent="indexRecoveryComponentBase">
<!-- Properties controlling full index rebuilding / tracking -->
<property name="executeFullRecovery">
<value>false</value> <!-- enable this to start the full index recovery -->
</property>
<property name="runContinuously">
<value>false</value> <!-- ensure the index is up to date and then stop -->
</property>
<property name="waitTime">
<value>1000</value> <!-- milliseconds to wait between checks for new transactions -->
</property>
<property name="l2CacheMode">
<value>NORMAL</value> <!-- normal L2 cache usage (database is changed by this server only) -->
</property>
</bean>
<!-- attempt to reindex content that was missing before -->
<!-- index recovery and validation -->
<!--
<bean id="missingContentReindexComponent" class="org.alfresco.repo.node.index.MissingContentReindexComponent" parent="indexRecoveryComponentBase">
<property name="runContinuously">
<value>false</value>
</property>
<property name="waitTime">
<value>300000</value>
Recovery types are:
NONE: Ignore
VALIDATE: Checks that the last transaction for each store is represented in the indexes
AUTO: Validates and auto-recovers if validation fails
FULL: Full index rebuild, processing all transactions in order. The server is temporarily suspended.
-->
<bean
id="indexRecoveryComponent"
class="org.alfresco.repo.node.index.FullIndexRecoveryComponent"
parent="indexRecoveryComponentBase">
<property name="recoveryMode">
<value>${index.recovery.mode}</value>
</property>
</bean>
<bean id="missingContentReindexTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
<bean id="IndexRecoveryJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.node.index.IndexRecoveryJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="missingContentReindexComponent">
<ref bean="missingContentReindexComponent" />
</entry>
</map>
</property>
</bean>
</property>
<property name="startDelay">
<value>60000</value>
</property>
<property name="repeatCount">
<value>0</value>
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
</bean>
-->
<!-- Bean that attempts to index content that was previously missing -->
<bean
id="missingContentReindexComponent"
class="org.alfresco.repo.node.index.MissingContentReindexComponent"
parent="indexRecoveryComponentBase">
</bean>
</beans>

View File

@@ -10,14 +10,14 @@ bpm_businessprocessmodel.transition.description=Done
# Base Task
bpm_businessprocessmodel.type.bpm_task.title=Task
bpm_businessprocessmodel.type.bpm_task.description=Task
bpm_businessprocessmodel.property.bpm_taskId.title=Task Identifier
bpm_businessprocessmodel.property.bpm_taskId.description=Task Identifier
bpm_businessprocessmodel.property.bpm_startDate.title=Task Start Date
bpm_businessprocessmodel.property.bpm_startDate.description=Task Start Date
bpm_businessprocessmodel.property.bpm_completionDate.title=Task Completion Date
bpm_businessprocessmodel.property.bpm_completionDate.description=Task Completion Date
bpm_businessprocessmodel.property.bpm_dueDate.title=Task Due Date
bpm_businessprocessmodel.property.bpm_dueDate.description=Task Due Date
bpm_businessprocessmodel.property.bpm_taskId.title=Identifier
bpm_businessprocessmodel.property.bpm_taskId.description=Identifier
bpm_businessprocessmodel.property.bpm_startDate.title=Start Date
bpm_businessprocessmodel.property.bpm_startDate.description=Start Date
bpm_businessprocessmodel.property.bpm_completionDate.title=Completion Date
bpm_businessprocessmodel.property.bpm_completionDate.description=Completion Date
bpm_businessprocessmodel.property.bpm_dueDate.title=Due Date
bpm_businessprocessmodel.property.bpm_dueDate.description=Due Date
bpm_businessprocessmodel.property.bpm_status.title=Status
bpm_businessprocessmodel.property.bpm_status.description=Status
bpm_businessprocessmodel.property.bpm_priority.title=Priority
@@ -36,7 +36,9 @@ bpm_businessprocessmodel.property.bpm_workflowInstanceId.title=Workflow Instance
bpm_businessprocessmodel.property.bpm_workflowInstanceId.description=Workflow Instance Id
bpm_businessprocessmodel.property.bpm_context.title=Task Context
bpm_businessprocessmodel.property.bpm_context.description=The context within which this task has been assigned
bpm_businessprocessmodel.property.bpm_outcome.title=Task Outcome
bpm_businessprocessmodel.property.bpm_description.title=Description
bpm_businessprocessmodel.property.bpm_description.description=Description of what needs to be achieved
bpm_businessprocessmodel.property.bpm_outcome.title=Outcome
bpm_businessprocessmodel.property.bpm_outcome.description=Decision made on completing Task
bpm_businessprocessmodel.property.bpm_completedItems.title=Completed Items
bpm_businessprocessmodel.property.bpm_completedItems.description=Package items marked as complete
@@ -48,3 +50,15 @@ bpm_businessprocessmodel.association.bpm_package.title=Content Package
bpm_businessprocessmodel.association.bpm_package.description=The collection of content routed through the workflow
bpm_businessprocessmodel.aspect.bpm_workflowPackage.title=Workflow Package
bpm_businessprocessmodel.aspect.bpm_workflowPackage.description=The collection of content routed through the workflow
# Workflow Start Task
bpm_businessprocessmodel.type.bpm_startTask.title=Workflow Start Task
bpm_businessprocessmodel.type.bpm_startTask.description=Task used to collect information required for initiating Workflow
bpm_businessprocessmodel.property.bpm_workflowDescription.title=Description
bpm_businessprocessmodel.property.bpm_workflowDescription.description=Description
bpm_businessprocessmodel.property.bpm_workflowDueDate.title=Workflow Due Date
bpm_businessprocessmodel.property.bpm_workflowDueDate.description=Workflow Due Date
bpm_businessprocessmodel.property.bpm_workflowPriority.title=Workflow Priority
bpm_businessprocessmodel.property.bpm_workflowPriority.description=Workflow Priority
bpm_businessprocessmodel.association.bpm_assignee.title=Workflow Assignee
bpm_businessprocessmodel.association.bpm_assignee.description=Workflow Assignee

View File

@@ -1,4 +1,10 @@
# Content-related messages
content.content_missing=The node''s content is missing: \n node: {0} \n reader: {1} \n Please contact your system administrator.
content.runtime_exec.property_moved=The property ''errorCodes'' has moved down onto the RuntimeExec class
content.runtime_exec.property_moved=The property ''errorCodes'' has moved down onto the RuntimeExec class
index.recovery.store_not_up_to_date=The indexes for store ''{0}'' are not synchronized with the database.
index.recovery.starting=Index recovery started: {0} transactions.
index.recovery.complete=Index recovery completed.
index.recovery.progress=\t{0} % complete.
index.recovery.terminated=Index recovery terminated.

View File

@@ -10,6 +10,7 @@
<entry><family>Presentation</family><string>impress_pdf_Export</string></entry>
<entry><family>Spreadsheet</family><string>calc_pdf_Export</string></entry>
<entry><family>Text</family><string>writer_pdf_Export</string></entry>
<entry><family>Html</family><string>writer_web_pdf_Export</string></entry>
</export-filters>
</document-format>
@@ -26,7 +27,8 @@
- 1. additional files may be generated for images and this would require extra care in a servlet environment
- 2. output quality does not seem to be very good in many cases
-->
<document-format><name>HTML</name>
<document-format><name>Html</name>
<family>Html</family>
<mime-type>text/html</mime-type>
<file-extension>html</file-extension>
<export-filters>
@@ -44,6 +46,7 @@
<file-extension>odt</file-extension>
<export-filters>
<entry><family>Text</family><string>writer8</string></entry>
<entry><family>Html</family><string>writerweb8_writer</string></entry>
</export-filters>
</document-format>

File diff suppressed because it is too large Load Diff

View File

@@ -1,17 +1,17 @@
# Data Type Index Analyzers
d_dictionary.datatype.d_any.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_text.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_content.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_any.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_text.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_content.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_int.analyzer=org.alfresco.repo.search.impl.lucene.analysis.IntegerAnalyser
d_dictionary.datatype.d_long.analyzer=org.alfresco.repo.search.impl.lucene.analysis.LongAnalyser
d_dictionary.datatype.d_float.analyzer=org.alfresco.repo.search.impl.lucene.analysis.FloatAnalyser
d_dictionary.datatype.d_double.analyzer=org.alfresco.repo.search.impl.lucene.analysis.DoubleAnalyser
d_dictionary.datatype.d_date.analyzer=org.alfresco.repo.search.impl.lucene.analysis.DateAnalyser
d_dictionary.datatype.d_datetime.analyzer=org.alfresco.repo.search.impl.lucene.analysis.DateAnalyser
d_dictionary.datatype.d_boolean.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_qname.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_guid.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_category.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_noderef.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_path.analyzer=org.apache.lucene.analysis.standard.StandardAnalyzer
d_dictionary.datatype.d_boolean.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_qname.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_guid.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_category.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_noderef.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser
d_dictionary.datatype.d_path.analyzer=org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser

View File

@@ -19,17 +19,17 @@
<data-types>
<data-type name="d:any">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>java.lang.Object</java-class>
</data-type>
<data-type name="d:text">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>java.lang.String</java-class>
</data-type>
<data-type name="d:content">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>org.alfresco.service.cmr.repository.ContentData</java-class>
</data-type>
@@ -64,37 +64,37 @@
</data-type>
<data-type name="d:boolean">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>java.lang.Boolean</java-class>
</data-type>
<data-type name="d:qname">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>org.alfresco.service.namespace.QName</java-class>
</data-type>
<data-type name="d:noderef">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>org.alfresco.service.cmr.repository.NodeRef</java-class>
</data-type>
<data-type name="d:childassocref">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>org.alfresco.service.cmr.repository.ChildAssociationRef</java-class>
</data-type>
<data-type name="d:assocref">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>org.alfresco.service.cmr.repository.AssociationRef</java-class>
</data-type>
<data-type name="d:path">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>org.alfresco.service.cmr.repository.Path</java-class>
</data-type>
<data-type name="d:category">
<analyser-class>org.apache.lucene.analysis.standard.StandardAnalyzer</analyser-class>
<analyser-class>org.alfresco.repo.search.impl.lucene.analysis.AlfrescoStandardAnalyser</analyser-class>
<java-class>org.alfresco.service.cmr.repository.NodeRef</java-class>
</data-type>

View File

@@ -63,11 +63,48 @@
<!-- Convenient groupings of low level permissions -->
<!-- ============================================= -->
<permissionGroup name="Read" expose="true" allowFullControl="false" />
<permissionGroup name="Write" expose="true" allowFullControl="false" />
<permissionGroup name="Delete" expose="true" allowFullControl="false" />
<permissionGroup name="AddChildren" expose="true" allowFullControl="false" />
<permissionGroup name="Execute" allowFullControl="false" expose="false"/>
<permissionGroup name="Read" expose="true" allowFullControl="false">
<includePermissionGroup type="sys:base" permissionGroup="ReadProperties"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadContent"/>
</permissionGroup>
<permissionGroup name="Write" expose="true" allowFullControl="false">
<includePermissionGroup type="sys:base" permissionGroup="WriteProperties"/>
<includePermissionGroup type="sys:base" permissionGroup="WriteContent"/>
</permissionGroup>
<permissionGroup name="Delete" expose="true" allowFullControl="false">
<includePermissionGroup type="sys:base" permissionGroup="DeleteNode"/>
<includePermissionGroup type="sys:base" permissionGroup="DeleteChildren"/>
</permissionGroup>
<permissionGroup name="AddChildren" expose="true" allowFullControl="false">
<includePermissionGroup type="sys:base" permissionGroup="CreateChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="LinkChildren"/>
</permissionGroup>
<permissionGroup name="Execute" allowFullControl="false" expose="false">
<includePermissionGroup type="sys:base" permissionGroup="ExecuteContent"/>
</permissionGroup>
<!-- Groups for low level permissions -->
<permissionGroup name="ReadProperties" expose="true" allowFullControl="false" />
<permissionGroup name="ReadChildren" expose="true" allowFullControl="false" />
<permissionGroup name="WriteProperties" expose="true" allowFullControl="false" />
<permissionGroup name="ReadContent" expose="false" allowFullControl="false" />
<permissionGroup name="WriteContent" expose="false" allowFullControl="false" />
<permissionGroup name="ExecuteContent" expose="false" allowFullControl="false" />
<permissionGroup name="DeleteNode" expose="true" allowFullControl="false" />
<permissionGroup name="DeleteChildren" expose="true" allowFullControl="false" />
<permissionGroup name="CreateChildren" expose="true" allowFullControl="false" />
<permissionGroup name="LinkChildren" expose="true" allowFullControl="false" />
<permissionGroup name="DeleteAssociations" expose="true" allowFullControl="false" />
<permissionGroup name="ReadAssociations" expose="true" allowFullControl="false" />
<permissionGroup name="CreateAssociations" expose="true" allowFullControl="false" />
<permissionGroup name="ReadPermissions" expose="true" allowFullControl="false" />
<permissionGroup name="ChangePermissions" expose="true" allowFullControl="false" />
<!-- =========== -->
<!-- Permissions -->
@@ -78,13 +115,13 @@
<!-- The properties of a node may ony be read if there is read access to the parent -->
<!-- node. ReadChildren access to the parent node is recursive for all nodes from -->
<!-- which the node inherits permissions. Access is required down the permission -->
<!-- tree at all pioints. -->
<!-- tree at all points. -->
<!-- -->
<permission name="ReadProperties" expose="true" >
<grantedToGroup permissionGroup="Read" />
<permission name="_ReadProperties" expose="false" >
<grantedToGroup permissionGroup="ReadProperties" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
@@ -94,10 +131,10 @@
<!-- all of the parent nodes from which this node inherits permissions -->
<!-- -->
<permission name="ReadChildren" expose="true" >
<grantedToGroup permissionGroup="Read" />
<permission name="_ReadChildren" expose="false" >
<grantedToGroup permissionGroup="ReadChildren" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
@@ -107,10 +144,10 @@
<!-- a property. -->
<!-- -->
<permission name="WriteProperties" expose="true" >
<grantedToGroup permissionGroup="Write" />
<permission name="_WriteProperties" expose="false" >
<grantedToGroup permissionGroup="WriteProperties" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
@@ -125,42 +162,42 @@
<!-- The permission to read content. -->
<permission name="ReadContent" expose="false">
<grantedToGroup permissionGroup="Read"/>
<permission name="_ReadContent" expose="false">
<grantedToGroup permissionGroup="ReadContent"/>
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
<!-- The permission to write content. -->
<permission name="WriteContent" expose="false">
<grantedToGroup permissionGroup="Write" />
<permission name="_WriteContent" expose="false">
<grantedToGroup permissionGroup="WriteContent" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
<!-- Execute permission on content. -->
<permission name="ExecuteContent" expose="false">
<grantedToGroup permissionGroup="Execute" />
<permission name="_ExecuteContent" expose="false">
<grantedToGroup permissionGroup="ExecuteContent" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
<permission name="DeleteNode" expose="true" >
<grantedToGroup permissionGroup="Delete" />
<permission name="_DeleteNode" expose="false" >
<grantedToGroup permissionGroup="DeleteNode" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="DeleteChildren" implies="false"/>
<requiredPermission on="node" name="DeleteChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_DeleteChildren" implies="false"/>
<requiredPermission on="node" name="_DeleteChildren" implies="false"/>
-->
<!-- Remove the recursive check for now for performance -->
<!-- TODO: have one permission to check for delete on an item and one to check -->
<!-- child permissions when delete is called on the node service -->
<!-- <requiredPermission on="children" name="DeleteNode" implies="false"/> -->
<!-- <requiredPermission on="children" name="_DeleteNode" implies="false"/> -->
</permission>
@@ -168,52 +205,55 @@
<!-- -->
<!-- At the moment this includes both unlink and delete -->
<!-- -->
<permission name="DeleteChildren" expose="true" >
<grantedToGroup permissionGroup="Delete" />
<permission name="_DeleteChildren" expose="false" >
<grantedToGroup permissionGroup="DeleteChildren" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
<!-- The permission to create new nodes -->
<permission name="CreateChildren" expose="true" >
<grantedToGroup permissionGroup="AddChildren" />
<permission name="_CreateChildren" expose="false" >
<grantedToGroup permissionGroup="CreateChildren" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false" />
<requiredPermission on="parent" name="_ReadChildren" implies="false" />
-->
</permission>
<!-- The permission to link nodes -->
<permission name="LinkChildren" expose="true" >
<grantedToGroup permissionGroup="AddChildren" />
<permission name="_LinkChildren" expose="false" >
<grantedToGroup permissionGroup="LinkChildren" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
<!-- The permission to delte associations between nodes (not children) -->
<permission name="DeleteAssociations" expose="true" >
<permission name="_DeleteAssociations" expose="false" >
<grantedToGroup permissionGroup="DeleteAssociations" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
<!-- The permission to read associations -->
<permission name="ReadAssociations" expose="true" >
<permission name="_ReadAssociations" expose="false" >
<grantedToGroup permissionGroup="ReadAssociations" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false" />
<requiredPermission on="parent" name="_ReadChildren" implies="false" />
-->
</permission>
<!-- The permission to create associations -->
<permission name="CreateAssociations" expose="true" >
<permission name="_CreateAssociations" expose="false" >
<grantedToGroup permissionGroup="CreateAssociations" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false" />
<requiredPermission on="parent" name="_ReadChildren" implies="false" />
-->
</permission>
@@ -223,17 +263,19 @@
<!-- The permission to read the permissions on a node -->
<permission name="ReadPermissions" expose="true" >
<permission name="_ReadPermissions" expose="false" >
<grantedToGroup permissionGroup="ReadPermissions" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
<!-- The permission to the change the permissions associated with a node -->
<permission name="ChangePermissions" expose="true" >
<permission name="_ChangePermissions" expose="false" >
<grantedToGroup permissionGroup="ChangePermissions" />
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" implies="false"/>
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
-->
</permission>
@@ -285,6 +327,21 @@
<includePermissionGroup permissionGroup="Read" type="sys:base" />
</permissionGroup>
<!-- records permission -->
<!-- Should be tied to the aspect -->
<!-- onwership should be removed when using this permission -->
<permissionGroup name="RecordAdministrator" allowFullControl="false" expose="false">
<includePermissionGroup type="sys:base" permissionGroup="ReadProperties"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="WriteProperties"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadContent"/>
<includePermissionGroup type="sys:base" permissionGroup="DeleteChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="CreateChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="LinkChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="DeleteAssociations"/>
<includePermissionGroup type="sys:base" permissionGroup="CreateAssociations"/>
</permissionGroup>
</permissionSet>
<!-- =============================== -->
@@ -300,6 +357,7 @@
<permissionGroup name="Contributor" extends="true" expose="true"/>
<permissionGroup name="Editor" extends="true" expose="true"/>
<permissionGroup name="Consumer" extends="true" expose="true"/>
<permissionGroup name="RecordAdministrator" extends="true" expose="false"/>
</permissionSet>
@@ -333,16 +391,20 @@
<permissionSet type="cm:ownable" expose="selected">
<!-- Permission control to allow ownership of the node to be taken from others -->
<permissionGroup name="TakeOwnership" requiresType="false" expose="false"/>
<permissionGroup name="TakeOwnership" requiresType="false" expose="false">
<includePermissionGroup permissionGroup="SetOwner" type="cm:ownable" />
</permissionGroup>
<permissionGroup name="SetOwner" requiresType="false" expose="false"/>
<!-- The low level permission to control setting the owner of a node -->
<permission name="SetOwner" expose="false" requiresType="false">
<grantedToGroup permissionGroup="TakeOwnership" />
<permission name="_SetOwner" expose="false" requiresType="false">
<grantedToGroup permissionGroup="SetOwner" />
<!-- require to be able to reach the node and set properties in the node -->
<!-- Commented out parent permission check ...
<requiredPermission on="parent" name="ReadChildren" />
<requiredPermission on="parent" name="_ReadChildren" />
-->
<requiredPermission on="node" name="WriteProperties" />
<requiredPermission on="node" type="sys:base" name="_WriteProperties" />
</permission>
</permissionSet>
@@ -357,24 +419,34 @@
<!-- of permissions. -->
<!-- Check Out permission - exposed for all object types -->
<permissionGroup name="CheckOut" requiresType="false" expose="false"/>
<permissionGroup name="CheckOut" requiresType="false" expose="false">
<includePermissionGroup permissionGroup="Lock" type="cm:lockable" />
</permissionGroup>
<!-- Check In permission - only exposed when the lockable aspect is present -->
<permissionGroup name="CheckIn" requiresType="true" expose="false"/>
<permissionGroup name="CheckIn" requiresType="true" expose="false">
<includePermissionGroup permissionGroup="Unlock" type="cm:lockable" />
</permissionGroup>
<!-- Cancel Check Out permission - only exposed for the lockable aspect is present -->
<permissionGroup name="CancelCheckOut" requiresType="true" expose="false"/>
<permissionGroup name="CancelCheckOut" requiresType="true" expose="false">
<includePermissionGroup permissionGroup="Unlock" type="cm:lockable" />
</permissionGroup>
<permissionGroup name="Lock" requiresType="false" expose="false"/>
<permissionGroup name="Unlock" requiresType="true" expose="false"/>
<!-- Low level lock permission -->
<permission name="Lock" requiresType="false" expose="false">
<grantedToGroup permissionGroup="CheckOut" />
<permission name="_Lock" requiresType="false" expose="false">
<grantedToGroup permissionGroup="Lock" />
<requiredPermission on="node" type="sys:base" name="Write"/>
</permission>
<!-- Low level unlock permission -->
<permission name="Unlock" requiresType="true" expose="false">
<grantedToGroup permissionGroup="CheckIn" />
<grantedToGroup permissionGroup="CancelCheckOut" />
<permission name="_Unlock" requiresType="true" expose="false">
<grantedToGroup permissionGroup="Unlock" />
</permission>
</permissionSet>

View File

@@ -57,7 +57,7 @@
<property name="contentService"><ref bean="ContentService" /></property>
<property name="permissionService"><ref bean="permissionService"/></property>
<property name="authenticationComponent"><ref bean="authenticationComponent"/></property>
<property name="checkInOutService"><ref bean="checkOutCheckInService"/></property>
<property name="serviceRegistry"><ref bean="ServiceRegistry"/></property>
</bean>
<bean id="cifsHelper" class="org.alfresco.filesys.smb.server.repo.CifsHelper">

View File

@@ -103,7 +103,7 @@
<value>false</value> <!-- use only to trace problems -->
</property>
<property name="failOnViolation" >
<value>false</value> <!-- set to true to generate runtime exceptions upon violation -->
<value>true</value>
</property>
<property name="maxErrorsPerTransaction" >
<value>5</value> <!-- limit output (exception and log) to the first N violation messages -->

View File

@@ -18,6 +18,12 @@
<ref bean="dictionaryService"/>
</property>
</bean>
<bean id="unboundPolicyBehaviourFilter" class="org.alfresco.repo.policy.BehaviourFilterImpl">
<property name="dictionaryService">
<ref bean="dictionaryService"/>
</property>
</bean>
<bean id="policyComponent" class="org.alfresco.repo.policy.PolicyComponentImpl">
<constructor-arg index="0">

View File

@@ -1,135 +1,138 @@
# Directory configuration
dir.root=./alf_data
dir.contentstore=${dir.root}/contentstore
dir.contentstore.deleted=${dir.root}/contentstore.deleted
dir.auditcontentstore=${dir.root}/audit.contentstore
# The location for lucene index files
dir.indexes=${dir.root}/lucene-indexes
# The location for lucene index locks
dir.indexes.lock=${dir.indexes}/locks
# #################### #
# Lucene configuration #
# #################### #
#
# Millisecond threshold for text transformations
# Slower transformers will force the text extraction to be asynchronous
#
lucene.maxAtomicTransformationTime=20
#
# The maximum number of clauses that are allowed in a lucene query
#
lucene.query.maxClauses=10000
#
# The size of the queue of nodes waiting for index
# Events are generated as nodes are changed, this is the maximum size of the queue used to coalesce event
# When this size is reached the lists of nodes will be indexed
#
lucene.indexer.batchSize=1000
#
# Lucene index min merge docs - the in memory size of the index
#
lucene.indexer.minMergeDocs=1000
#
# When lucene index files are merged together - it will try to keep this number of segments/files in
#
lucene.indexer.mergeFactor=10
#
# Roughly the maximum number of nodes indexed in one file/segment
#
lucene.indexer.maxMergeDocs=100000
#
# The number of terms from a document that will be indexed
#
lucene.indexer.maxFieldLength=10000
lucene.write.lock.timeout=10000
lucene.commit.lock.timeout=100000
lucene.lock.poll.interval=100
# Database configuration
db.schema.update=true
db.driver=org.gjt.mm.mysql.Driver
db.name=alfresco
db.url=jdbc:mysql:///${db.name}
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=20
db.pool.maxIdleTime=120
# Email configuration
mail.host=
mail.port=25
mail.username=anonymous
mail.password=
# Set this value to UTF-8 or similar for encoding of email messages as required
mail.encoding=UTF-8
# System Configuration
system.store=system://system
system.descriptor.childname=sys:descriptor
system.descriptor.current.childname=sys:descriptor-current
# User config
alfresco_user_store.store=user://alfrescoUserStore
alfresco_user_store.system_container.childname=sys:system
alfresco_user_store.user_container.childname=sys:people
alfresco_user_store.authorities_container.childname=sys:authorities
# Spaces Archive Configuration
spaces.archive.store=archive://SpacesStore
# Spaces Configuration
spaces.store=workspace://SpacesStore
spaces.company_home.childname=app:company_home
spaces.guest_home.childname=app:guest_home
spaces.dictionary.childname=app:dictionary
spaces.templates.childname=app:space_templates
spaces.templates.content.childname=app:content_templates
spaces.templates.email.childname=app:email_templates
spaces.templates.rss.childname=app:rss_templates
spaces.savedsearches.childname=app:saved_searches
spaces.scripts.childname=app:scripts
spaces.wcm.childname=app:wcm
spaces.content_forms.childname=app:wcm_forms
# Folders for storing people
system.system_container.childname=sys:system
system.people_container.childname=sys:people
# Folders for storing workflow related info
system.workflow_container.childname=sys:workflow
# Are user names case sensitive?
# ==============================
#
# NOTE: If you are using mysql you must have case sensitive collation
#
# You can do this when creating the alfresco database at the start
# CREATE DATABASE alfresco CHARACTER SET utf8 COLLATION utf8_bin;
# If you want to do this later this is a dump and load fix as it is done when the database, tables and columns are created.
#
# Must other databases are case sensitive by default.
#
user.name.caseSensitive=false
# AVM Specific properties.
avm.remote.idlestream.timeout=30000
avm.remote.port=1313
# Directory configuration
dir.root=./alf_data
dir.contentstore=${dir.root}/contentstore
dir.contentstore.deleted=${dir.root}/contentstore.deleted
dir.auditcontentstore=${dir.root}/audit.contentstore
# The location for lucene index files
dir.indexes=${dir.root}/lucene-indexes
# The location for lucene index locks
dir.indexes.lock=${dir.indexes}/locks
# The index recovery mode (NONE, VALIDATE, AUTO, FULL)
index.recovery.mode=VALIDATE
# #################### #
# Lucene configuration #
# #################### #
#
# Millisecond threshold for text transformations
# Slower transformers will force the text extraction to be asynchronous
#
lucene.maxAtomicTransformationTime=20
#
# The maximum number of clauses that are allowed in a lucene query
#
lucene.query.maxClauses=10000
#
# The size of the queue of nodes waiting for index
# Events are generated as nodes are changed, this is the maximum size of the queue used to coalesce event
# When this size is reached the lists of nodes will be indexed
#
lucene.indexer.batchSize=1000
#
# Lucene index min merge docs - the in memory size of the index
#
lucene.indexer.minMergeDocs=1000
#
# When lucene index files are merged together - it will try to keep this number of segments/files in
#
lucene.indexer.mergeFactor=10
#
# Roughly the maximum number of nodes indexed in one file/segment
#
lucene.indexer.maxMergeDocs=100000
#
# The number of terms from a document that will be indexed
#
lucene.indexer.maxFieldLength=10000
lucene.write.lock.timeout=10000
lucene.commit.lock.timeout=100000
lucene.lock.poll.interval=100
# Database configuration
db.schema.update=true
db.driver=org.gjt.mm.mysql.Driver
db.name=alfresco
db.url=jdbc:mysql:///${db.name}
db.username=alfresco
db.password=alfresco
db.pool.initial=10
db.pool.max=20
db.pool.maxIdleTime=120
# Email configuration
mail.host=
mail.port=25
mail.username=anonymous
mail.password=
# Set this value to UTF-8 or similar for encoding of email messages as required
mail.encoding=UTF-8
# Set this value to 7bit or similar for Asian encoding of email headers as required
mail.header=
# System Configuration
system.store=system://system
system.descriptor.childname=sys:descriptor
system.descriptor.current.childname=sys:descriptor-current
# User config
alfresco_user_store.store=user://alfrescoUserStore
alfresco_user_store.system_container.childname=sys:system
alfresco_user_store.user_container.childname=sys:people
alfresco_user_store.authorities_container.childname=sys:authorities
# Spaces Archive Configuration
spaces.archive.store=archive://SpacesStore
# Spaces Configuration
spaces.store=workspace://SpacesStore
spaces.company_home.childname=app:company_home
spaces.guest_home.childname=app:guest_home
spaces.dictionary.childname=app:dictionary
spaces.templates.childname=app:space_templates
spaces.templates.content.childname=app:content_templates
spaces.templates.email.childname=app:email_templates
spaces.templates.rss.childname=app:rss_templates
spaces.savedsearches.childname=app:saved_searches
spaces.scripts.childname=app:scripts
spaces.wcm.childname=app:wcm
spaces.content_forms.childname=app:wcm_forms
# Folders for storing people
system.system_container.childname=sys:system
system.people_container.childname=sys:people
# Folders for storing workflow related info
system.workflow_container.childname=sys:workflow
# Are user names case sensitive?
# ==============================
#
# NOTE: If you are using mysql you must have case sensitive collation
#
# You can do this when creating the alfresco database at the start
# CREATE DATABASE alfresco CHARACTER SET utf8 COLLATION utf8_bin;
# If you want to do this later this is a dump and load fix as it is done when the database, tables and columns are created.
#
# Must other databases are case sensitive by default.
#
user.name.caseSensitive=false
# AVM Specific properties.
avm.remote.idlestream.timeout=30000
avm.remote.port=1313

View File

@@ -2,9 +2,25 @@
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- -->
<!-- Scheduled jobs -->
<!-- -->
<!-- Task scheduler -->
<!-- Triggers should not appear here - the scheduler should be injected into the trigger definition -->
<!-- This bean should not need to apear else where in extension configuration -->
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="waitForJobsToCompleteOnShutdown">
<value>true</value>
</property>
<property name="configLocation">
<value>classpath:alfresco/domain/quartz.properties</value>
</property>
<property name="schedulerName">
<value>DefaultScheduler</value>
</property>
</bean>
<!-- -->
<!-- Scheduled tasks -->
<!-- -->
<bean id="ftsIndexerTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
@@ -21,16 +37,74 @@
</property>
</bean>
</property>
<!-- Try and do some indexing every minute after starting up -->
<property name="startDelay">
<value>60000</value>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<property name="repeatInterval">
<value>60000</value>
<!-- Try and do some indexing every minute after starting up -->
<property name="startDelayMinutes">
<value>1</value>
</property>
<property name="repeatIntervalMinutes">
<value>1</value>
</property>
</bean>
<!-- Forces the reindexing of nodes where content may have been missing before -->
<!--
This component can be triggered at intervals where asynchronous content sharing
between clustered servers has been set up
-->
<bean id="missingContentReindexTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
<bean class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.node.index.IndexRecoveryJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="indexRecoveryComponent">
<ref bean="missingContentReindexComponent" />
</entry>
</map>
</property>
</bean>
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<!-- Give the server 5 minutes and then check for missing content -->
<property name="startDelayMinutes">
<value>5</value>
</property>
<property name="repeatCount">
<value>0</value>
</property>
</bean>
<bean id="indexRecoveryTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
<bean class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.node.index.IndexRecoveryJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="indexRecoveryComponent">
<ref bean="indexRecoveryComponent" />
</entry>
</map>
</property>
</bean>
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<property name="startDelayMinutes">
<value>1</value>
</property>
<property name="repeatCount">
<value>0</value>
</property>
</bean>
<bean id="tempFileCleanerTrigger" class="org.alfresco.util.TriggerBean">
@@ -48,15 +122,16 @@
</property>
</bean>
</property>
<property name="startDelay">
<value>1800000</value><!-- start after half an hour -->
</property>
<property name="repeatInterval">
<value>3600000</value><!-- repeat every hour -->
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<!-- start after half an hour and repeat hourly -->
<property name="startDelayMinutes">
<value>30</value>
</property>
<property name="repeatIntervalMinutes">
<value>60</value>
</property>
</bean>
<bean id="fileContentStoreCleanerJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
@@ -84,33 +159,6 @@
</property>
</bean>
<bean id="indexRecoveryTrigger" class="org.alfresco.util.TriggerBean">
<property name="jobDetail">
<bean id="IndexRecoveryJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.node.index.IndexRecoveryJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="indexRecoveryComponent">
<ref bean="indexRecoveryComponent" />
</entry>
</map>
</property>
</bean>
</property>
<property name="startDelay">
<value>60000</value> <!-- start after 1 minute -->
</property>
<property name="repeatCount">
<value>0</value> <!-- DO NOT REPEAT !!!!! -->
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
</bean>
<bean id="indexBackupJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.repo.search.impl.lucene.LuceneIndexerAndSearcherFactory2$LuceneIndexBackupJob</value>
@@ -150,26 +198,12 @@
<ref bean="schedulerFactory" />
</property>
-->
<property name="startDelay">
<value>3600000</value><!-- start after an hour -->
<!-- start after an hour and repeat hourly -->
<property name="startDelayMinutes">
<value>60</value>
</property>
<property name="repeatInterval">
<value>3600000</value><!-- repeat every hour -->
</property>
</bean>
<!-- Scheduled tasks -->
<!-- Triggers should not appear here - the scheduler should be injected into the trigger definition -->
<!-- This bean should not need to apear else where in extension configuration -->
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="waitForJobsToCompleteOnShutdown">
<value>true</value>
</property>
<property name="configLocation">
<value>classpath:alfresco/domain/quartz.properties</value>
</property>
<property name="schedulerName">
<value>DefaultScheduler</value>
<property name="repeatIntervalMinutes">
<value>60</value>
</property>
</bean>

View File

@@ -7,7 +7,7 @@
version.major=1
version.minor=4
version.revision=0
version.label=Preview
version.label=RC1
# Edition label

View File

@@ -3,50 +3,6 @@
<beans>
<!-- -->
<!-- Workflow Definitions -->
<!-- -->
<bean id="workflow.workflowBootstrap" parent="workflowDeployer">
<property name="workflowDefinitions">
<list>
<props>
<prop key="engineId">jbpm</prop>
<prop key="location">org/alfresco/repo/workflow/jbpm/review_and_approve_processdefinition.xml</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">false</prop>
</props>
<props>
<prop key="engineId">jbpm</prop>
<prop key="location">org/alfresco/repo/workflow/jbpm/adhoc_task_processdefinition.xml</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">false</prop>
</props>
<props>
<prop key="engineId">jbpm</prop>
<prop key="location">alfresco/workflow/wcmSubmit.xml</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">false</prop>
</props>
</list>
</property>
</bean>
<bean id="workflow.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/model/bpmModel.xml</value>
<value>alfresco/model/workflowModel.xml</value>
</list>
</property>
<property name="labels">
<list>
<value>alfresco/messages/bpm-messages</value>
<value>alfresco/messages/workflow-messages</value>
</list>
</property>
</bean>
<!-- -->
<!-- Workflow Service Implementation -->
<!-- -->
@@ -55,6 +11,7 @@
<property name="transactionService" ref="transactionComponent"/>
<property name="authenticationComponent" ref="authenticationComponent" />
<property name="workflowService" ref="WorkflowService" />
<property name="dictionaryDAO" ref="dictionaryDAO"/>
</bean>
<bean id="workflowServiceImpl" class="org.alfresco.repo.workflow.WorkflowServiceImpl">
@@ -64,7 +21,6 @@
<bean id="workflowPackageImpl" class="org.alfresco.repo.workflow.WorkflowPackageImpl">
<property name="importerBootstrap" ref="spacesBootstrap"/>
<property name="fileFolderService" ref="fileFolderService"/>
<property name="searchService" ref="searchService"/>
<property name="nodeService" ref="nodeService"/>
<property name="namespaceService" ref="namespaceService"/>
@@ -76,7 +32,7 @@
<bean id="start-workflow" class="org.alfresco.repo.workflow.StartWorkflowActionExecuter" parent="action-executer">
<property name="publicAction">
<value>false</value>
<value>true</value>
</property>
<property name="namespaceService">
<ref bean="NamespaceService" />
@@ -109,7 +65,7 @@
<property name="configuration" value="classpath:org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml"/>
</bean>
<bean id="jbpm_template" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
<bean id="jbpm_template" class="org.alfresco.repo.workflow.jbpm.JBPMTransactionTemplate">
<constructor-arg index="0" ref="jbpm_configuration"/>
</bean>

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:adhoc">
<swimlane name="initiator"/>
<start-state name="start">
<task name="wf:submitAdhocTask" swimlane="initiator"/>
<transition name="" to="adhoc"/>
</start-state>
<swimlane name="assignee">
<assignment actor-id="#{bpm_assignee.properties['cm:userName']}"/>
</swimlane>
<task-node name="adhoc">
<task name="wf:adhocTask" swimlane="assignee">
<event type="task-create">
<script>
if (bpm_workflowDueDate != void)
{
taskInstance.dueDate = bpm_workflowDueDate;
}
if (bpm_workflowPriority != void)
{
taskInstance.priority = bpm_workflowPriority;
}
</script>
</event>
</task>
<transition name="" to="completed">
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
if (wf_notifyMe)
{
var mail = actions.create("mail");
mail.parameters.to = initiator.properties["cm:email"];
mail.parameters.subject = "Adhoc Task " + bpm_workflowDescription;
mail.parameters.from = bpm_assignee.properties["cm:email"];
mail.parameters.text = "It's done";
mail.execute(bpm_package);
}
</script>
</action>
</transition>
</task-node>
<task-node name="completed">
<task name="wf:completedAdhocTask" swimlane="initiator"/>
<transition name="" to="end"/>
</task-node>
<end-state name="end"/>
</process-definition>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:review">
<swimlane name="initiator" />
<start-state name="start">
<task name="wf:submitReviewTask" swimlane="initiator" />
<transition name="" to="review" />
</start-state>
<swimlane name="reviewer">
<assignment actor-id="#{bpm_assignee.properties['cm:userName']}" />
</swimlane>
<task-node name="review">
<task name="wf:reviewTask" swimlane="reviewer">
<event type="task-create">
<script>
if (bpm_workflowDueDate != void)
{
taskInstance.dueDate = bpm_workflowDueDate;
}
if (bpm_workflowPriority != void)
{
taskInstance.priority = bpm_workflowPriority;
}
</script>
</event>
</task>
<transition name="reject" to="rejected" />
<transition name="approve" to="approved" />
</task-node>
<task-node name="rejected">
<task name="wf:rejectedTask" swimlane="initiator" />
<transition name="" to="end" />
</task-node>
<task-node name="approved">
<task name="wf:approvedTask" swimlane="initiator" />
<transition name="" to="end" />
</task-node>
<end-state name="end" />
</process-definition>

View File

@@ -0,0 +1,54 @@
# Display labels for out-of-the-box Content-oriented Workflows
#
# Review & Approve Workflow
#
wf_review.workflow.title=Review & Approve
wf_review.workflow.description=Review & approval of content
# Review & Approve Task Definitions
wf_workflowmodel.type.wf_submitReviewTask.title=Start Review
wf_workflowmodel.type.wf_submitReviewTask.description=Submit documents for review & approval
wf_workflowmodel.type.wf_reviewTask.title=Review
wf_workflowmodel.type.wf_reviewTask.description=Review Documents to Approve or Reject them
# Review & Approve Process Definitions
wf_review.node.start.title=Start
wf_review.node.start.description=Start
wf_review.node.review.title=Review
wf_review.node.review.description=Review
wf_review.node.review.transition.reject.title=Reject
wf_review.node.review.transition.reject.description=Reject
wf_review.node.review.transition.approve.title=Approve
wf_review.node.review.transition.approve.description=Approve
wf_review.node.rejected.title=Rejected
wf_review.node.rejected.description=Rejected
wf_review.task.wf_rejectedTask.title=Rejected
wf_review.task.wf_rejectedTask.description=Rejected
wf_review.node.approved.title=Approved
wf_review.node.approved.description=Approved
wf_review.task.wf_approvedTask.title=Approved
wf_review.task.wf_approvedTask.description=Approved
wf_review.node.end.title=End
wf_review.node.end.description=End
#
# Adhoc Task Workflow
#
wf_adhoc.workflow.title=Adhoc Task
wf_adhoc.workflow.description=Assign task to colleague
# Adhoc Task Definitions
wf_workflowmodel.type.wf_submitAdhocTask.title=Start Adhoc Task
wf_workflowmodel.type.wf_submitAdhocTask.description=Allocate task to colleague
wf_workflowmodel.property.wf_notifyMe.title=Notify Me
wf_workflowmodel.property.wf_notifyMe.description=Notify me when task is complete
wf_workflowmodel.type.wf_adhocTask.title=Adhoc Task
wf_workflowmodel.type.wf_adhocTask.description=Adhoc Task allocated by colleague
wf_workflowmodel.type.wf_completedAdhocTask.title=Adhoc Task Completed
wf_workflowmodel.type.wf_completedAdhocTask.description=Adhoc Task Completed

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<model name="wf:workflowmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<imports>
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
</imports>
<namespaces>
<namespace uri="http://www.alfresco.org/model/workflow/1.0" prefix="wf"/>
</namespaces>
<types>
<!-- -->
<!-- Basic Review & Approve Tasks -->
<!-- -->
<type name="wf:submitReviewTask">
<parent>bpm:startTask</parent>
</type>
<type name="wf:reviewTask">
<parent>bpm:workflowTask</parent>
<overrides>
<property name="bpm:packageItemActionGroup">
<default>workflow_item_edit_actions</default>
</property>
</overrides>
</type>
<!-- -->
<!-- Adhoc Tasks -->
<!-- -->
<type name="wf:submitAdhocTask">
<parent>bpm:startTask</parent>
<properties>
<property name="wf:notifyMe">
<type>d:boolean</type>
<default>false</default>
</property>
</properties>
</type>
<type name="wf:adhocTask">
<parent>bpm:workflowTask</parent>
</type>
<type name="wf:completedAdhocTask">
<parent>bpm:workflowTask</parent>
</type>
</types>
</model>