- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Alfresco建议程序员一旦需要在存储库中进行事务时使用RetryingTransactionHandler来实现事务。
谁能给我澄清一下吗?
具体来说,我正在谈论这样的代码
RetryingTransactionCallback<String> callback = new RetryingTransactionCallback<String>(){
public String execute() throws Throwable {
// doProcess must be invoked within user context.
AuthenticationUtil.runAs(new RunAsWork<String>(){
public String doWork()throws Exception{
try {
if(getOperationType().equals(OperationTypes.CREATE_ORGANIZATION_OPERATION)){
RetryingTransactionHelper txnHelper =
Repository.getRetryingTransactionHelper(FacesContext.getCurrentInstance());
txnHelper.doInTransaction(doProcessActionCallbackOperations.CreateOrganizationCallback, false, true);
}
} catch(Throwable e){
}
return "";
}
}, AuthenticationUtil.getSystemUserName());
return "";
}
};
try {
RetryingTransactionHelper txnHelper = Repository.getRetryingTransactionHelper(FacesContext.getCurrentInstance());
txnHelper.doInTransaction(callback, false, true);
} catch (Throwable e) {
if (e instanceof ReportedException == false) {
Utils.addErrorMessage(formatErrorMessage(e), e);
}
ReportedException.throwIfNecessary(e);
}
此外,正如您所注意到的,我使用 AuthenticationUtils.runAs()。
那么你能帮我理解这段代码中的不同键,例如 RetryingTransaction 和 AuthenticationUtils 吗?
最佳答案
RetryingTransactionHelper
确保您提供的回调
在事务中执行。此外,顾名思义,如果事务由于某种原因失败(例如,在未正确捕获的回调代码中抛出异常,或者您尝试同时从两个存储库中更改相同的内容)不同的线程),同一事务将被正确回滚并重新执行(“重试”)可配置的次数(默认值:20)。这比经常手动处理事务更方便。
在您发布的代码中,您将对 doProcessActionCallbackOperations.CreateOrganizationCallback
的调用嵌套在两个事务中(因为 doInTransaction
的最后一个参数始终为 true
,即 requiresNew
),外部是在执行 callback
之前创建的,内部是在 callback
本身内创建的。在我看来,你可以摆脱内部交易,但这取决于你。事务可以嵌套,即使内部事务中的失败很可能会使整个事务堆栈失效。
AuthenticationUtils.runAs
工具允许您使用通常不同于当前用户的权限来执行逻辑片段。在内部,用户凭据存储为 ThreadLocal 参数。在您的情况下, AuthenticationUtil.runAs 负责临时更改此类 ThreadLocal ,以允许内部回调始终以最高权限级别(即系统)执行,无论哪个用户正在执行代码。还存在当前未设置登录用户的情况,例如在预定的工作范围内。然后,AuthenticationUtils.runAs
允许您访问存储库中的内容,通常指定system
或admin
用户。
关于alfresco - RetryingTransactionHandler 在 alfresco 中的工作原理是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6887991/
我想在 Alfresco 中实现类似亚马逊的建议. 例如,如果员工搜索“财务报告 2007”,搜索 UI 将显示相关文档,例如之前搜索相同内容的用户下载/查看的文档。 它可能会显示 Lucene(Al
我们正在考虑将 Alfresco Enterprise 3.4.1 降级为 Alfresco Community。 我习惯了 Alfresco Enterprise,但没有使用社区版本的经验。 我们使
我有兴趣在对露天特定文件夹下的任何文档或文件夹进行任何更改时触发代码运行。我确信 alfresco 必须以某种方式支持这一点,但我不完全确定该功能/api/服务的名称或谷歌的内容。什么在露天有这种能力
从所描述的功能来看,Alfresco Team和 Alfresco Share产品看起来非常相似。 技术差异是什么? 以下是我听说过的一些差异,但欢迎提供更好的列表: 视频预览 预览更多 Adob
我有兴趣在对露天特定文件夹下的任何文档或文件夹进行任何更改时触发代码运行。我确信 alfresco 必须以某种方式支持这一点,但我不完全确定该功能/api/服务的名称或谷歌的内容。什么在露天有这种能力
我正在尝试编辑 task-edit 的链接发送给任务受让人的电子邮件。我在文件 wf-emails.html.ftl 中看到了但在 Data Dictionary -> Email Templates
假设我在 alfresco-global.properties 文件中创建了一个名为“test123”的自定义属性。是否有自定义对象或其他方式可用于访问 Alfresco 中 Java bean 内的
作为我们法规要求的一部分,我们希望在工作流摘要页面的工作流历史记录中捕获任务重新分配。 为了实现这一点,当任务被重新分配时,我将作为系统完成当前任务,将结果设置为任务重新分配,任务将分配给新人。这种方
在存储库中会有不同的文档列表。即会有数据字典、用户主页、访客主页等。当我将 View 更改为“详细 View ”时,它会显示收藏、喜欢、评论链接。如果我不想显示它们,我必须在哪里修改。你能告诉我必须在
我正在使用 Alfresco Enterprise 6.2。与实时搜索类似,我正在为文档库中的文件夹创建搜索操作。 我已更新 custom-actions.js 如下: onActionSearch:
我想在指定的文件夹中搜索文件。我的意思是,如下例所示,搜索 mainfolder1 的文档。我怎样才能做到这一点??可以用lucene吗??我知道lucene可以指定store。我不知道文件夹。 --
在 Alfresco 服务器中,几个上传的内容消失了,我检查日志以查看文件发生了什么情况。 In /opt/alfresco/tomcat/logs 但是文件是空的。 最佳答案 在命令行中尝试 $ p
我正在使用 Alfresco Share 4.2c,并且我有一个属性类型为 d:text 的方面。在“编辑元数据”页面上,我想为该属性创建一个自定义选择器。 我见过的最接近文件选择器的是 associ
我编写了一个脚本来运行 Alfresco 规则。但我希望脚本在特定时间后运行(我需要脚本在 1 周后运行)。任何解决方案? 我读到了 Scheduled_Actions , 这个功能有用吗? 最佳答案
我想在指定的文件夹中搜索文件。我的意思是,如下例所示,搜索 mainfolder1 的文档。我怎样才能做到这一点??可以用lucene吗??我知道lucene可以指定store。我不知道文件夹。 --
在 Alfresco 服务器中,几个上传的内容消失了,我检查日志以查看文件发生了什么情况。 In /opt/alfresco/tomcat/logs 但是文件是空的。 最佳答案 在命令行中尝试 $ p
如何在节点的旧版本中搜索元数据字段? 我知道 Solr 支持 version2store 的索引,看起来在 Alfresco 4.2f 中,它确实被索引了。但是,似乎没有办法通过仅查询 : 来通过共享
我正在使用 Alfresco Share 4.2c,并且我有一个属性类型为 d:text 的方面。在“编辑元数据”页面上,我想为该属性创建一个自定义选择器。 我见过的最接近文件选择器的是 associ
我遇到了调用 https://localhost:8080/alfresco/service/api/people 的问题。只返回前 5000 个用户。 我不知道如何从系统中取出其余部分——该 API
我有 OnCreateNodePolicy 实现,我正在考虑在绑定(bind)初始化中添加条件(一些速度优化),这可能吗? 我是什么意思?让我们有类似这样的定义: policyComponent.bi
我是一名优秀的程序员,十分优秀!