用于在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

我想创建一个脚本,允许我在Alfresco存储库中创建一个新文件夹,但我不知道如何实现这一点

有没有人能告诉我如何处理这件事

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