如何在工作流上下文中访问Liferay变量值

时间:2016-02-26 11:39:50

标签: liferay workflow liferay-6

我在liferay 6.2中创建了一个内容审批者工作流程。我想显示电子邮件主题中模板标记中使用的用户名和其他变量值。

我添加了描述标签以显示电子邮件主题,但是当我尝试使用变量时,它将变量显示为字符串而不是其值。

以下是我的模板

<actions>
        <notification>
            <name>Review Notification</name>
            <description><![CDATA[${userName}]]> test sent you a <![CDATA[${entryType}]]> for review in the workflow.</description>
            <template>${userName} sent you a ${entryType} for review in the workflow.</template>
            <template-language>freemarker</template-language>
            <notification-type>email</notification-type>
            <notification-type>user-notification</notification-type>
            <execution-type>onAssignment</execution-type>
        </notification>
        <notification>
            <name>Review Completion Notification</name>
            <description>Your submission has been reviewed and the reviewer has applied the following ${taskComments}.</description>
            <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>

在描述标签中,我使用了变量$ {username}和$ {entryType},而是显示

“测试向您发送了一个Web内容文章,以便在工作流程中进行审核。”

显示: “$ {userName}向您发送了$ {entryType}以供审核。”

但是在电子邮件正文中,它显示得很好。任何帮助

1 个答案:

答案 0 :(得分:1)

不幸的是,假设您没有对原始Liferay源进行任何修改,则无法将任何变量传递到此部分。

String notificationMessage = notificationMessageGenerator.generateMessage(kaleoNotification.getKaleoClassName(), kaleoNotification.getKaleoClassPK(), kaleoNotification.getName(), kaleoNotification.getTemplateLanguage(), kaleoNotification.getTemplate(), executionContext);
String notificationSubject = kaleoNotification.getDescription();

以上这些行负责创建消息。正如您所见,notificationMessage是使用executionContext和其他一些参数创建的,这些参数存储上下文变量,最后用实际值替换您的令牌变量。描述只是简单的字符串向前传递,所以在这种情况下没有这样的替换。