用于在Alfresco存储库中创建新文件夹的脚本
我想创建一个脚本,允许我在Alfresco存储库中创建一个新文件夹,但我不知道如何实现这一点 有没有人能告诉我如何处理这件事用于在Alfresco存储库中创建新文件夹的脚本,alfresco,alfresco-webscripts,Alfresco,Alfresco Webscripts,我想创建一个脚本,允许我在Alfresco存储库中创建一个新文件夹,但我不知道如何实现这一点 有没有人能告诉我如何处理这件事 var nodeNew = parentNode.createFolder("Name of folder"); 很抱歉没有发布任何代码,因为我是alfresco的新手,不知道如何管理 var nodeNew = parentNode.createFolder("Name of folder"); 上面的代码将使用alfresco javascript创建文件夹。pa
var nodeNew = parentNode.createFolder("Name of folder");
很抱歉没有发布任何代码,因为我是alfresco的新手,不知道如何管理
var nodeNew = parentNode.createFolder("Name of folder");
上面的代码将使用alfresco javascript创建文件夹。parentNode是Node的一个对象
下面的链接有更多的细节
上面的代码将使用alfresco javascript创建文件夹。parentNode是Node的一个对象
下面的链接有更多的细节
远程创建文件夹(或执行其他CRUD功能)的最佳方法(例如从命令行程序)是使用CMIS。根据您希望使用的语言,有许多CMIS客户端实现。这些都是在同一时间管理的 下面是一个使用Python CMIS客户端cmislib创建文件夹的示例:
from cmislib.model import CmisClient
from cmislib.browser.binding import BrowserBinding
client = CmisClient('http://localhost:8080/alfresco/api/-default-/cmis/versions/1.1/browser', 'admin', 'admin', binding=BrowserBinding())
repo = client.defaultRepository
folder = repo.getObjectByPath("/User Homes")
createdFolder = folder.createFolder("another test folder")
print "Done, created: %s" % createdFolder.id
下面是一个使用Groovy的Java实现OpenCMIS的示例:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
@Grab(group="org.apache.chemistry.opencmis", module="chemistry-opencmis-commons-api", version="0.13.0")
@Grab(group="org.apache.chemistry.opencmis", module="chemistry-opencmis-commons-impl", version="0.13.0")
@Grab(group="org.apache.chemistry.opencmis", module="chemistry-opencmis-client-api", version="0.13.0")
@Grab(group="org.apache.chemistry.opencmis", module="chemistry-opencmis-client-impl", version="0.13.0")
@Grab(group="org.apache.chemistry.opencmis", module="chemistry-opencmis-client-bindings", version="0.13.0")
import org.apache.chemistry.opencmis.commons.*;
import org.apache.chemistry.opencmis.commons.enums.*;
import org.apache.chemistry.opencmis.client.*;
import org.apache.chemistry.opencmis.client.api.*;
import org.apache.chemistry.opencmis.client.runtime.*;
import org.apache.chemistry.opencmis.commons.data.*;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.*;
import org.apache.chemistry.opencmis.commons.exceptions.*;
import java.nio.file.Paths
import groovy.json.JsonOutput
import groovyx.net.http.RESTClient
import static groovyx.net.http.ContentType.JSON
import java.text.NumberFormat;
def ALF_SERVICE = '/alfresco/s'
def CMIS_SERVICE = '/alfresco/api/-default-/public/cmis/versions/1.1/browser'
final BindingType CMIS_BINDING = BindingType.BROWSER;
// Get options
def url = System.console().readLine('Alfresco server URL [http://localhost:8080]: ')
if (url == null || url == '') url = "http://localhost:8080"
def folderPath = System.console().readLine('Folder path [/User Homes]: ')
if (folderPath == null || folderPath == '') folderPath = "/User Homes"
def folderName = System.console().readLine('Folder name to create: ')
def userName = System.console().readLine('Your username: ')
def password = System.console().readPassword('Your password: ')
println 'WARNING: About to modify folders on ' + url + ' as ' + userName + '.'
def confirm = System.console().readLine('Are you sure (Y/N): ')
if (confirm.toLowerCase() != 'y' && confirm.toLowerCase() != 'yes') {
println "Quitting"
System.exit(0)
}
// Login to Alfresco
def client = new RESTClient(url)
def resp = client.get(path : ALF_SERVICE + '/api/login', query: ['u': userName, 'pw': password.toString(), 'format': 'json'])
assert resp.status == 200
def ticket = resp.data.data.ticket
println "Successfully logged in to Alfresco..."
// Leave the username as an empty string to auth with a ticket
Session session = createCMISSession(url + CMIS_SERVICE, CMIS_BINDING, "", ticket);
Folder folder = findFolder(session, folderPath)
if (folder == null) {
println "ERROR: Could not find: " + folderPath
System.exit(0)
}
println "Found: " + folder.name + " (" + folder.id + ")"
Map<String,String> newFolderProps = new HashMap<String, String>()
newFolderProps.put("cmis:objectTypeId", "cmis:folder");
newFolderProps.put("cmis:name", folderName);
Folder createdFolder = folder.createFolder(newFolderProps)
println "Done, created: " + createdFolder.id
Session createCMISSession(final String cmisEndpointUrl,
final BindingType cmisBinding,
final String cmisUser,
final String cmisPassword) {
SessionFactory sf = SessionFactoryImpl.newInstance();
Session result = null;
Map<String, String> parameters = new HashMap<String, String>();
parameters.put(SessionParameter.BINDING_TYPE, cmisBinding.value());
parameters.put(SessionParameter.BROWSER_URL, cmisEndpointUrl);
parameters.put(SessionParameter.USER, cmisUser);
parameters.put(SessionParameter.PASSWORD, cmisPassword);
// Note: grabbing the first repository may not work as expected on multi-tenant Alfresco (most notably Cloud)
result = sf.getRepositories(parameters).get(0).createSession();
return (result);
}
Folder findFolder(Session session, String folderPath) {
Folder result = null;
try {
CmisObject folder = session.getObjectByPath(folderPath);
if (folder != null &&
BaseTypeId.CMIS_FOLDER.equals(folder.getBaseTypeId())) {
result = (Folder) folder;
}
} catch (CmisObjectNotFoundException confe) {
// Swallow and move on - we return null in this case
println "ERROR: getObjectByPath threw a CmisObjectNotFoundException"
}
return (result);
}
@Grab(group='org.codehaus.groovy.modules.httpbuilder',module='http-builder',version='0.7.1')
@Grab(group=“org.apache.chemistry.opencmis”,module=“chemistry-opencmis-commons-api”,version=“0.13.0”)
@Grab(group=“org.apache.chemistry.opencmis”,module=“chemis opencmis commons impl”,version=“0.13.0”)
@Grab(group=“org.apache.chemistry.opencmis”,module=“chemistry opencmis客户端api”,version=“0.13.0”)
@Grab(group=“org.apache.chemistry.opencmis”,module=“chemistry opencmis client impl”,version=“0.13.0”)
@Grab(group=“org.apache.chemistry.opencmis”,module=“chemistry opencmis客户端绑定”,version=“0.13.0”)
导入org.apache.chemistry.opencmis.commons.*;
导入org.apache.chemistry.opencmis.commons.enums.*;
导入org.apache.chemistry.opencmis.client.*;
导入org.apache.chemistry.opencmis.client.api.*;
导入org.apache.chemistry.opencmis.client.runtime.*;
导入org.apache.chemistry.opencmis.commons.data.*;
导入org.apache.chemistry.opencmis.commons.impl.dataobjects.*;
导入org.apache.chemistry.opencmis.commons.exceptions.*;
导入java.nio.file.path
导入groovy.json.JsonOutput
导入groovyx.net.http.RESTClient
导入静态groovyx.net.http.ContentType.JSON
导入java.text.NumberFormat;
def ALF_服务='/alfresco/s'
def CMIS_SERVICE='/alfresco/api/-default-/public/CMIS/versions/1.1/browser'
final BindingType CMIS_BINDING=BindingType.BROWSER;
//获取选项
def url=System.console().readLine('Alfresco服务器url[http://localhost:8080]: ')
如果(url==null | | url='')url=”http://localhost:8080"
def folderPath=System.console().readLine('folderPath[/User Homes]:'))
如果(folderPath==null | | folderPath==='')folderPath=“/User Homes”
def folderName=System.console().readLine('要创建的文件夹名称:')
def userName=System.console().readLine('您的用户名:')
def password=System.console().readPassword('您的密码:')
println“警告:即将将“+url+”上的文件夹修改为“+userName+”。”
def confirm=System.console().readLine('您确定(是/否):')
if(confirm.toLowerCase()!='y'和&confirm.toLowerCase()!='yes'){
打印“退出”
系统退出(0)
}
//登录到Alfresco
def client=新的RESTClient(url)
def resp=client.get(路径:ALF_SERVICE+'/api/login',查询:['u':用户名,'pw':密码.toString(),'format':'json'])
断言响应状态==200
def票证=resp.data.data.ticket
println“已成功登录到Alfresco…”
//将用户名保留为空字符串,以便使用票证进行身份验证
会话会话=createCMISSession(url+CMIS_服务,CMIS_绑定,”,票证);
Folder Folder=findFolder(会话,folderPath)
如果(文件夹==null){
println“错误:找不到:“+folderPath”
系统退出(0)
}
找到println:“+folder.name+”(“+folder.id+”)
Map newFolderProps=newhashmap()
put(“cmis:objectTypeId”,“cmis:folder”);
newFolderProps.put(“cmis:name”,folderName);
Folder createdFolder=Folder.createFolder(newFolderProps)
println“完成,创建:”+createdFolder.id
会话CreateCMissSession(最终字符串cmisEndpointUrl,
最终绑定类型cmisBinding,
最后一个字符串cmisUser,
最终字符串(cmisPassword){
SessionFactory sf=SessionFactoryImpl.newInstance();
会话结果=null;
映射参数=新的HashMap();
parameters.put(SessionParameter.BINDING_类型,cmisBinding.value());
parameters.put(SessionParameter.BROWSER_URL,cmisEndpointUrl);
parameters.put(SessionParameter.USER、cmisUser);
parameters.put(SessionParameter.PASSWORD,cmisPassword);
//注意:在多租户Alfresco(最显著的是云)上,获取第一个存储库可能不会像预期的那样工作
结果=sf.getRepositories(parameters).get(0).createSession();
返回(结果);
}
文件夹findFolder(会话,字符串folderPath){
文件夹结果=空;
试一试{
CmisObject folder=session.getObjectByPath(folderPath);
如果(文件夹!=null&&
BaseTypeId.CMIS_FOLDER.equals(FOLDER.getBaseTypeId()){
结果=(文件夹)文件夹;
}
}捕获(CmisObjectNotFoundException Confect){
//吞咽并继续-在本例中返回null
println“错误:getObjectByPath引发了CmisObjectNotFoundException”
}
返回(结果);
}
在Groovy示例中,我登录并获取一个票证,这样我就可以进行CMIS和非CMIS调用,尽管在本例中我没有显示任何非CMIS调用。远程创建文件夹(或执行其他CRUD功能)的最佳方法,例如从命令行程序,是使用CMIS。根据您希望使用的语言,有许多CMIS客户端实现。这些都是在同一时间管理的 下面是一个使用cmislib的示例,cmislib是一个Python CMIS cli