`
zlot
  • 浏览: 27248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

从Alfresco看老外的软件设计(四)Alfresco源码跟踪/分析

阅读更多
在Eclipse下启动Tomcat

只介绍一部分的源码跟踪方式。
主要以第一个页面登陆后的页面左侧 Company Home 点击后Repository 的页面相应得整个流程。

Company Home跟踪
第一步:查找 org.alfresco.web.ui.repo.component.UINavigator 类
设置断点



第二步:登陆 ( 如果断点停下来说明正常,点击 > 继续 ,该步骤留到后面说明)




第三步:稍微改动 /jsp/sidebar/navigator.jsp 内容 , 在末尾价格空格即可,然后保存。目的是让jsf刷新缓存,否则上次的断点他不会执行,因为jsf内部的tag已作了缓存。jsp内容有所变化后,缓存消失)

第四步:点击 Company Home




第五步:断电停下后看到如下的代码快





然后将代码运行至此





如果 companyHomeRootNodes = null 那说明可以按 F5 继续下一步执行 ,如果 companyHomeRootNodes 不为空我们可以通过 Expressions 透视图在运行时清空 companyHomeRootNodes 如下图:





添加一个表达式






然后继续运行即可
进入 下一步之后我们 将 companyHomeRootNodes = null 表达式删除





到此我们的源码还原结束

3.2.2	Company Home 源码分析
获取 CompanyHomeRootNodes 的流程 ( 部分说明了节点服务的操作步骤 )

	UserTransaction tx = null;
    try
    {
    	FacesContext fc = FacesContext.getCurrentInstance();
    	tx = Repository.getUserTransaction(fc, true); // 通过上下文获取事务
    	tx.begin();  // 开始一个事务 ( 不知道为什么要在这里开启事务 )
        
// 获取 Company Home 的根节点
        NodeRef root = new NodeRef(Repository.getStoreRef(),  // 获取 StoreRef
							// 获取 CompanyRootId ( fc 的作用是 获取 当前用户所的 Company Home )
							// 值通常是: a8d8e825-d024-4887-8d54-8a1664662e8f
 			Application.getCompanyRootId(fc));  
	
// 通过根节点获取子节点
        List<ChildAssociationRef> childRefs = this.getNodeService().getChildAssocs(root, 
                  ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL);
        
		// 循环子节点
        for (ChildAssociationRef ref: childRefs)
        {
		   // 通过 Association 关系 来取得关联的 NodeRef
           NodeRef child = ref.getChildRef();

		   // 判断该节点是不是文件夹节点或者系统文件夹节点
           if (isAddableChild(child)) 
           {
              TreeNode node = createTreeNode(child);
              this.companyHomeRootNodes.add(node);
              this.companyHomeNodes.put(node.getNodeRef(), node);
           }
        }
            
        tx.commit();
   }
   catch (Throwable err)
   {
       Utils.addErrorMessage("NavigatorPluginBean exception in getCompanyHomeRootNodes()", err);
       try { if (tx != null) {tx.rollback();} } catch (Exception tex) {}
   }



  • 大小: 24.2 KB
  • 大小: 10.8 KB
  • 大小: 10.8 KB
  • 大小: 12 KB
  • 大小: 13.9 KB
  • 大小: 10.9 KB
  • 大小: 12.1 KB
  • 大小: 12.7 KB
  • 大小: 13.8 KB
分享到:
评论

相关推荐

    Alfresco.Share一书的源码

    《Alfresco Share》是一本深入探讨Alfresco Share这一企业级内容管理系统的书籍,而提供的"Alfresco.Share_Code"压缩包则包含了书中所讲解的源代码。Alfresco Share是Alfresco ECM(企业内容管理)平台的一个重要...

    Alfresco5.1图文说明安装

    - JDBC URL: `jdbc:mysql://127.0.0.1:3306/alfresco?useUnicode=true&characterEncoding=utf-8` - JDBC Driver: `com.mysql.jdbc.Driver` - DB Name: `alfresco` - 用户名: `root` - 密码: 安装MySQL时自定义...

    Alfresco cookbook Alfresco share

    《Alfresco cookbook Alfresco share》是一本专为Alfresco企业内容管理平台用户和管理员设计的实用指南。这本书深入探讨了如何有效地使用Alfresco Share,这是一个基于Web的协作平台,提供了文档管理、工作流、协作...

    Alfresco与AD集成部署

    - 修改`/opt/alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/web-client-config.xml`,在`&lt;languages&gt;`节点下添加`&lt;language locale="zh_CN"&gt;Chinese (Simplified)&lt;/language&gt;`,以启用中文界面。...

    Alfresco安装说明.docx

    2. 测试安装是否成功,访问在本机访问 http://10.238.221.209:28080/alfresco/faces/jsp/login.jsp。 3. 使用管理员账户的密码登录,语言设置为简体中文。 常见问题 1. 无法登录,需要手动启动服务:alfresco 和 ...

    alfresco国际化文件 繁简转换源码

    alfresco 利用繁简字对照表,将alfresco的繁体国际化文件,转为简体国际化文件. 代码中繁简字对照表比较全,但仍有部分漏转的繁体字

    alfresco-jlan-4.0.zip_Alfresco JLAN_CIFS_Jlan.jar_alfresco-jlan_

    它实现了CIFS协议,使得Alfresco能够透明地作为CIFS服务器工作,允许Windows客户端或者其他支持CIFS的设备可以直接访问Alfresco存储的内容,无需专门的客户端软件。 在Alfresco JLAN的集成过程中,`alfresco-jlan`...

    Alfresco社区版+windows2008+oracle 11g详细部署文档

    四、安装Alfresco 1. 下载Alfresco社区版的安装包,解压到一个合适的目录。 2. 修改Alfresco的配置文件(如tomcat/shared/classes/alfresco-global.properties),配置数据库连接参数,包括数据库URL、用户名、密码...

    alfresco开源项目,编译运行详细步骤,很实用

    本文将详细讲解如何从Alfresco的源码编译出一个完整的Alfresco Community ECM服务器,这对于想要自定义配置或者探索Alfresco内部工作原理的开发者非常有帮助。 首先,你需要准备必要的开发环境。这包括安装Windows ...

    Alfresco安装后启动异常处理

    为了解决这个问题,你可以考虑将`alfresco/alf_data/hsql_data`目录移动到`alfresco/tomcat/bin`目录下,然后重新运行`startup.bat`。这样做的目的是确保Tomcat在启动时能够访问到必要的数据库文件。 如果使用的是...

    alfresco4.0部署及分离solr

    Solr,则是Apache软件基金会的一个开源搜索引擎项目,常用于全文检索、分布式搜索和分析。在Alfresco中集成Solr可以提升内容的搜索性能。本篇文章将详细介绍如何在Windows环境下部署Alfresco 4.2.c版本,并将其内置...

    linux下部署alfresco

    下载 Alfresco 64 位版本的安装包 alfresco-community-4.0.e-installer-linux-x64.bin,并使用命令 `./alfresco-community-4.0.e-installer-linux-x64.bin` 安装 Alfresco。 登录 Alfresco 使用命令 `bin/mysql -u...

    Linux系统安装Alfresco Community

    运行安装文件时,需要输入 ./alfresco-community-4.0.x-installer-linux-x64.bin 并回车。 知识点:在 Linux 系统中,文件名以 .bin 结尾的文件通常是可执行文件,可以直接运行。 4. 选择安装语言:在安装向导中,...

    Alfresco部署

    3. 保持Alfresco及所有依赖软件的更新,以获得最新的安全补丁和功能改进。 4. 考虑使用负载均衡和集群配置,以提高可用性和可扩展性。 5. 对Alfresco的性能进行监控,以便及时发现和解决问题。 总之,部署Alfresco...

    Alfresco开发者指南

    Alfresco是一款领先的开源文档管理系统,专为现代企业设计,旨在提供高效、安全的内容管理和工作流程解决方案。作为一款开源软件,Alfresco允许开发者根据自身需求进行定制化开发,从而满足特定业务场景下的复杂需求...

    Alfresco 3 Enterprise Content Management Implementation

    总的来说,《Alfresco 3 Enterprise Content Management Implementation》是一本全面了解和实施Alfresco ECM的宝典,涵盖了从基础概念到高级实践的所有关键点。通过阅读这本书,读者不仅可以理解Alfresco的内部工作...

Global site tag (gtag.js) - Google Analytics