远程更新属性“cmis:creationDate 和 cmis:lastModificationDate”
Remotely update properties “cmis:creationDate and cmis:lastModificationDate”
我需要像 'cm:creator or cm:created' 一样更新 alfresco 上的 ReadOnly 属性,所以我创建了一个 java 支持的网络脚本:
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = new GregorianCalendar();
try {
Date d = sdf.parse("21/12/2012");
cal.setTime(d);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
policyBehaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);
nodeService.setProperty(nodeRef, ContentModel.PROP_CREATED, cal);
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIED, cal);
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIER, "test");
nodeService.setProperty(nodeRef, ContentModel.PROP_CREATOR, "test");
policyBehaviourFilter.enableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);
}
一切正常,但我需要使用客户端发送的远程值设置属性,而不仅仅是本地值:
public Document createDocument(Folder folder,String name,String actId) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date d = sdf.parse("21/12/2012");
Map<String, Object> properties = new HashMap<String, Object>();
Calendar cal = new GregorianCalendar();
cal.setTime(d);
//properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document,P:cm:titled,P:cm:author");
properties.put(PropertyIds.NAME, name);
properties.put(PropertyIds.CREATED_BY, "createdBy");
properties.put(PropertyIds.LAST_MODIFIED_BY, "modifiedBy");
properties.put(PropertyIds.CREATION_DATE, cal);
properties.put(PropertyIds.LAST_MODIFICATION_DATE, cal);
properties.put("cm:title", "Title");
properties.put("cm:description", "Description");
properties.put("cm:author", "author");
byte[] content = "Hello World!".getBytes();
InputStream stream = new ByteArrayInputStream(content);
ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(content.length), "text/plain", stream);
Document newDoc = folder.createDocument(properties, contentStream, VersioningState.MAJOR);
return newDoc;
}
这可能吗?提前致谢。
您需要查看 this tutorial from JPotts to get familiar with Webscript development。
与此同时,正如您在 here 中看到的那样,您可以使用此方法获取获取参数:WebScriptRequest.getParameter(String)
甚至可以像这样从 json 有效负载中获取元素:
String params = "{}";
String myVar;
try {
params = IOUtils.toString(req.getContent().getInputStream(),
"UTF-8");
} catch (IOException e1) {
// Handle exception properly
}
JSONObject postParams;
try {
postParams = new JSONObject(params);
if (postParams.has("some-attribute")){
myVar = postParams.getString("some-attribute");
}
} catch (JSONException e1) {
// Handle exception properly
}
我需要像 'cm:creator or cm:created' 一样更新 alfresco 上的 ReadOnly 属性,所以我创建了一个 java 支持的网络脚本:
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = new GregorianCalendar();
try {
Date d = sdf.parse("21/12/2012");
cal.setTime(d);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
policyBehaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);
nodeService.setProperty(nodeRef, ContentModel.PROP_CREATED, cal);
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIED, cal);
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIER, "test");
nodeService.setProperty(nodeRef, ContentModel.PROP_CREATOR, "test");
policyBehaviourFilter.enableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);
}
一切正常,但我需要使用客户端发送的远程值设置属性,而不仅仅是本地值:
public Document createDocument(Folder folder,String name,String actId) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date d = sdf.parse("21/12/2012");
Map<String, Object> properties = new HashMap<String, Object>();
Calendar cal = new GregorianCalendar();
cal.setTime(d);
//properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document,P:cm:titled,P:cm:author");
properties.put(PropertyIds.NAME, name);
properties.put(PropertyIds.CREATED_BY, "createdBy");
properties.put(PropertyIds.LAST_MODIFIED_BY, "modifiedBy");
properties.put(PropertyIds.CREATION_DATE, cal);
properties.put(PropertyIds.LAST_MODIFICATION_DATE, cal);
properties.put("cm:title", "Title");
properties.put("cm:description", "Description");
properties.put("cm:author", "author");
byte[] content = "Hello World!".getBytes();
InputStream stream = new ByteArrayInputStream(content);
ContentStream contentStream = new ContentStreamImpl(name, BigInteger.valueOf(content.length), "text/plain", stream);
Document newDoc = folder.createDocument(properties, contentStream, VersioningState.MAJOR);
return newDoc;
}
这可能吗?提前致谢。
您需要查看 this tutorial from JPotts to get familiar with Webscript development。
与此同时,正如您在 here 中看到的那样,您可以使用此方法获取获取参数:WebScriptRequest.getParameter(String)
甚至可以像这样从 json 有效负载中获取元素:
String params = "{}";
String myVar;
try {
params = IOUtils.toString(req.getContent().getInputStream(),
"UTF-8");
} catch (IOException e1) {
// Handle exception properly
}
JSONObject postParams;
try {
postParams = new JSONObject(params);
if (postParams.has("some-attribute")){
myVar = postParams.getString("some-attribute");
}
} catch (JSONException e1) {
// Handle exception properly
}