我正在使用liferay工作流程。我想创建自己的工作流程定义。
现在,使用默认工作流程“单一审批者”,它只是直接通知管理员用户使用文档和媒体 portlet 上传了特定文档。这张图片描述了我想要的内容。
每当组织 A 下的用户上传任何文档时,它都不会向主管理员发送批准用户的通知,而是应发送给组织 A 管理员以批准用户。
我希望我的问题是可以理解的......
每当组织 A 下的用户上传任何文档时,它都不会向主管理员发送批准用户的通知,而是应发送给组织 A 管理员以批准用户。
我希望我已经理解了我的问题......
我在工作流程中这样做了,我有一个批准定义,我已将该定义赋予媒体和文档 portlet 中的一个文件夹,现在他们自动创建了四个角色
1)portal Legal Reviewer - Auto generated role from workflow definition
2)portal Content Reviewer - Autogenerated role from workflow definition
3)organization Legal Reviewer - Autogenerated role from workflow definition
4)organization Content Reviewer - Autogenerated role from workflow definition
现在,每当我将某些内容上传到该文件夹时,通知都会发送给我的网站所有者
有两个选择
1)assign to me
2)assign to -> users (who have role from above 4 they created automatically)
现在假设我分配给具有上述四个角色的用户,当我打开该用户的帐户时,没有控制面板或没有我可以显示的工作流程任务操作。那么任何人如何批准内容?
还有一件事,我必须在 xml 中编辑角色,它将通知 xml 中描述的特定角色,而不是网站所有者的默认方式
仅当我创建具有管理员角色且具有组织审批者角色的用户时,该角色只能访问控制面板,并且在工作流任务中,他们可以找到分配给并向我分配通知
我对工作流程的定义在这里
<?xml version="1.0"?>
<workflow-definition
xmlns="urn:liferay.com:liferay-workflow_6.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:liferay.com:liferay-workflow_6.1.0 http://www.liferay.com/dtd/liferay-workflow-definition_6_1_0.xsd"
>
<name>UPLOAD Approver</name>
<description>A single approver can approve a workflow content.</description>
<version>1</version>
<state>
<name>created</name>
<metadata>
<![CDATA[{"xy":[36,51]}]]>
</metadata>
<initial>true</initial>
<transitions>
<transition>
<name>review</name>
<target>review</target>
</transition>
</transitions>
</state>
<task>
<name>update</name>
<metadata>
<![CDATA[{"transitions":{"resubmit":{"bendpoints":[[303,140]]}},"xy":[328,199]}]]>
</metadata>
<actions>
<action>
<name>reject</name>
<script>
<![CDATA[
Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("denied"), workflowContext);
Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("pending"), workflowContext);
]]>
</script>
<script-language>javascript</script-language>
<execution-type>onAssignment</execution-type>
</action>
<notification>
<name>Creator Modification Notification</name>
<template>Your submission was rejected by a reviewer, please modify and resubmit.</template>
<template-language>text</template-language>
<notification-type>email</notification-type>
<execution-type>onAssignment</execution-type>
</notification>
</actions>
<assignments>
<user />
</assignments>
<transitions>
<transition>
<name>resubmit</name>
<target>review</target>
</transition>
</transitions>
</task>
<task>
<name>review</name>
<metadata>
<![CDATA[{"xy":[168,36]}]]>
</metadata>
<actions>
<notification>
<name>Review Notification</name>
<template>You have a new submission waiting for your review in the workflow.</template>
<template-language>text</template-language>
<notification-type>email</notification-type>
<execution-type>onAssignment</execution-type>
</notification>
<notification>
<name>Review Completion Notification</name>
<template>
Your submission has been reviewed and the reviewer has applied the following ${taskComments}.</template>
<template-language>freemarker</template-language>
<notification-type>email</notification-type>
<recipients>
<user />
</recipients>
<execution-type>onExit</execution-type>
</notification>
</actions>
<assignments>
<roles>
<role>
<role-type>organization</role-type>
<name>Organization APPROVER</name>
</role>
<role>
<role-type>organization</role-type>
<name>Organization Content Reviewer</name>
</role>
<role>
<role-type>organization</role-type>
<name>Organization Owner</name>
</role>
<role>
<role-type>regular</role-type>
<name>Portal Content Reviewer</name>
</role>
<role>
<role-type>site</role-type>
<name>Site Administrator</name>
</role>
<role>
<role-type>site</role-type>
<name>Site Content Reviewer</name>
</role>
</roles>
</assignments>
<transitions>
<transition>
<name>approve</name>
<target>approved</target>
</transition>
<transition>
<name>reject</name>
<target>update</target>
<default>false</default>
</transition>
</transitions>
</task>
<state>
<name>approved</name>
<metadata>
<![CDATA[
{"xy":[380,51]}
]]>
</metadata>
<actions>
<action>
<name>approve</name>
<script>
<![CDATA[
Packages.com.liferay.portal.kernel.workflow.WorkflowStatusManagerUtil.updateStatus(Packages.com.liferay.portal.kernel.workflow.WorkflowConstants.toStatus("approved"), workflowContext);
]]>
</script>
<script-language>javascript</script-language>
<execution-type>onEntry</execution-type>
</action>
</actions>
</state>
</workflow-definition>
我没有包含以下两个角色,默认情况下在单个批准定义中。
<role>
<role-type>organization</role-type>
<name>Organization Administrator</name>
</role>
<role>
<role-type>regular</role-type>
<name>Administrator</name>
</role>
那么现在发生了什么,我需要为特定用户授予管理员角色以及组织批准者角色,但如果我向该用户授予管理员权限,那么只有他可以访问控制面板并可以转到工作流任务选项但将管理员权限授予其工作只是批准内容的用户并不是真正的想法。所以我希望以某种方式只授予组织批准者使用控制面板的权限,但只能访问工作流任务选项。用户无法执行任何操作而只是使用工作流任务选项。
最佳答案
如果您查看默认工作流定义(singleapprover.xml 或类似文件),您会发现它将负责的角色定义为“组织审批者”、“站点审批者”、“审批者”或“管理员”(根据内存) .
您可以更改此设置 - 如果这是您唯一想要更改的内容,则直接在 xml 文件中执行此操作甚至很简单。您可以在插件中或 Liferay 的源代码管理中找到它 github 。您可能只需要从负责角色列表中删除管理员,然后让您希望负责的人员成为其相关网站的“网站审批者”角色成员。
完成
编辑:我不完全理解您下面的评论,但我给出的解决方案假设您的用户是组织或网站中的结构 - 在这种情况下,您可以让用户成为“网站审批者”或“组织审批者” “在该组织内。在站点或组织范围内创建的所有内容都需要得到该分组内的审批者的批准。
如果您在同一网站上上传所有内容,但有不同的用户分配,您很可能需要进行一些脚本化的分配(您可以编写工作流系统的某些部分的脚本),但这将超出任何范围我可以在这里用几句话解释一下。我可以向您指出当前的 available documentation但我怀疑这是否足以说明我正在谈论的内容 - 抱歉
关于workflow - liferay 文档和媒体 portlet 的自定义工作流程定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12722509/