售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
Alfresco Developer Guide
Table of Contents
Alfresco Developer Guide
Credits
About the Author
About the Reviewers
Preface
What This Book Covers
What You Need for This Book
Who This Book is For
Conventions
Reader Feedback
Customer Support
Downloading the Example Code for the Book
Errata
Piracy
Questions
1. The Alfresco Platform
Alfresco in the Real World
Basic Document Management
Web Content Management
Content Authoring Tools
Separation of Presentation from Content
Systematic Publication or Deployment
Alfresco WCM Example
Custom Content-Centric Applications
Example Used throughout This Book
Alfresco Architecture
High-Level Architecture
Add-Ons
Open Source Components
Major Standards and Protocols Supported
Customizing Alfresco
Basic Customization
Dashlets
Custom Views
Rules and Rule Actions
Simple Workflow
Advanced Customization
Examples of Advanced Customizations
Extend the Content Model
Perform Automatic Operations on Content
Customize the Web Client
Create a RESTful API
Streamline Complex Business Processes with Advanced Workflows
Get Your Web sites under Control
Integrate with Other Systems
Dusting Off Your Toolbox
What about Adobe Flex?
Understanding Alfresco's Editions
Significant Feature Differences
What's Used in This Book
Summary
2. Getting Started with Alfresco
Obtaining the SDK
Step-by-Step: Building Alfresco from Source
Setting up the SDK in Eclipse
Step-by-Step: Importing the SDK into Eclipse
Extending Alfresco
Understanding the Extension Mechanism
Standard Java Web Application Files
Framework Files
Spring Configuration Files
JavaServer Faces Configuration Files
Alfresco Configuration Files
Solution-Specific Files
Avoid Modifying Alfresco Code and Configuration
Packaging and Deploying Customizations
Separating Server-Specific Customizations
Step-by-Step: Packaging and Deploying a Simple Customization
Taking a Look at the Build File
Troubleshooting
Log4j
Step-by-Step: Debugging from within Eclipse
Node Browser
Starting Over
Summary
3. Working with Content Models
Defining SomeCo's Content Model
Step-by-Step: Starting the Custom Content Model with Custom Types
Types
Step-by-Step: Adding Properties to Types
Properties and Property Types
Constraints
Step-by-Step: Relating Types with Associations
Associations
Step-by-Step: Adding Aspects to the Content Model
Aspects
Step-by-Step: Finishing up the Model
Modeling Summary
Custom Behavior
Modeling Best Practices
Out of the Box Models
Configuring the UI
Step-by-Step: Adding Properties to the Property Sheet
Externalizing Display Labels
Making Properties Read-Only
Step-by-Step: Adding Types and Aspects to WebClient Dropdowns
Step-by-Step: Adding Properties and Types to Advanced Search
Step-by-Step: Setting Externalized Label Values
Setting up Additional Locales
Working with Content Programmatically
Step-by-Step: Creating Content with JavaScript
Leveraging Root Objects
Knowing When to Save Documents
Using JavaScript for Batch Manipulation
Writing Content to the Content Property
Creating Content with Java Web Services
Step-by-Step: Run SomeCoDataCreator Class to Create Content
Creating Content with PHP Web Services
Creating Associations
Step-by-Step: Run SomeCoDataRelater Class to Create Association
Searching for Content
Step-by-Step: Run SomeCoDataQueries Class to See Lucene Example
Deleting Content
Step-by-Step: Running SomeCoDataCleaner Class to Delete Content
Summary
4. Handling Content Automatically with Actions, Behaviors, Transformers, and Extractors
Encapsulating Content Operations in Actions
Step-by-Step: Creating a Basic Action
Hiding the Action from End Users
Creating Actions that Require User-Specified Parameters
Step-by-Step: Creating an Action that Accepts Parameters
Incorporating Parameter Values in the Action Description
Specifying Parameters when Code Executes an Action
Binding Logic to Custom Types with Behaviors
Step-by-Step: Writing a Simple Behavior in Java
Binding to Multiple Types/Aspects
Frequency
Figuring Out to Which Policies to Bind
Step-by-Step: Writing a Simple Behavior in JavaScript
Binding Behavior to Child Types
Step-by-Step: Writing a User Ratings Calculator
Step-by-Step: Testing the New Rating Behavior
Handling Deleted Ratings
Extracting Metadata from Files
Customizing Metadata Extractors
Step-by-step: Customizing the Metadata Mapping
Overriding the Default Mapping
Leveraging Out of the box Metadata Extractors
Digging into an Extractor Class
Step-by-Step: Customizing a Metadata Extractor Class
Transforming Content from One Format to Another
Step-by-Step: Writing a Custom Transformer
Summary
5. Customizing the Web Client User Interface
Knowing When to Customize Alfresco's Web Client and When to Write Your Own
Adding New Menu Items with UI Actions
Step-by-Step: Adding a Simple UI Action
Showing/Hiding the Label
Leveraging Out of the Box Examples
Using Other Types of UI Actions
Step-by-Step: Adding a UI Action to Set the Web Flag
Restricting the UI Action by Permission
Writing Action Evaluators to Show/Hide UI Actions
Step-by-Step: Evaluating Whether or Not to Show the Set Web Flag UI Actions
Changing How the Web Client Renders Data with Custom Component Renderers
Step-by-Step: Making a Text Field a Specific Size
What Just Happened
Overriding the Generator for All Properties
Step-by-Step: Changing the Status Field on the Details Page to Display as a Stoplight Indicator
Overriding and Customizing Components
Creating Custom Dialogs
Step-by-Step: Creating a Dialog to Execute Scripts
Passing the Context to the Dialog
Understanding the JSP
Enabling and Disabling the OK Button
Creating Custom Wizards
Step-by-Step: Stubbing Out the Wizard
Step-by-Step: Finishing Out the Wizard
Adding Conditions to Wizard Step Pages
Receiving Interview Feedback via Email
Persisting Interviewer Choices
Copying Alfresco's Code into Your Customizations
Customizing Web Client JSP Pages
Overriding Navigation Rules with Type-specific Settings
Summary
6. Exposing Content through a RESTful API with Web Scripts
Introducing the Web Script Framework
Step-by-Step: Hello World Web Script
What Just Happened?
Following the Model-View-Controller Pattern
Adding Controller Logic
Configuring the Web Script
Specifying the HTTP Method
Specifying Arguments
Specifying the Response Format
Deploying Web Scripts
Building Solutions with the Web Script Framework
Planning the SomeCo Whitepapers and Ratings API
Retrieving Data with Web Scripts
Step-by-Step: Writing a Web Script to List Whitepapers
Debugging
Fast Facts
Organizing Web Scripts
Overriding Web Scripts
Choosing a URL
Choosing between the Repository and the File System
Step-by-Step: Retrieving the Rating for a Whitepaper
Specifying Optional Arguments
Handling Errors
Writing Java-Backed Web Scripts
Step-by-Step: Writing a Java-Backed Web Script to Handle Ratings Posts
Using the Correct ID for Web Script Beans
Using both Java and JavaScript for Controller Logic
Wiring a Web Script to UI Widgets
Step-by-Step: Using a Widget to Post Ratings
Implementing the Delete Ratings Link
Adding the Web Script Calls to SomeCo's Whitepaper Web Page
Making Other Types of Content "Rateable"
Dealing with the Cross-Domain Scripting Limitation
Handling Form Data
Step-by-Step: Implementing a Form-Based Hello World
Step-by-Step: Using File Upload in a Multipart Request
Customizing the Web Client with Web Scripts
Step-by-Step: Running a Web Script as a Dashlet
Understanding Web Script Runtimes
Advanced Web Scripts
Running Web Scripts as JSR-168 Portlets
Dealing with Web Script Authentication
Controlling Web Script Cache
Executing Remote Web Scripts
Refactoring the Rating Service
Summary
7. Advanced Workflow
What is a Workflow?
Workflow Options
Creating Process Definitions
Step-by-Step: Creating a Hello World Process Definition
Organizing Processes
Using the jBPM Graphical Process Designer
Step-by-Step: Using jBPM Process Designer to Create and Deploy Processes
Tokens
Node Types
Versioning Process Definitions
Deploying Dependencies
Using Alternative Deployment Methods
Wiring a Process to the Alfresco UI
Step-by-Step: Grabbing the Hello World Argument from the User
Understanding Workflow-Specific Content Models
Assigning Tasks to Users and Groups
Step-by-Step: Creating the Initial Whitepaper Submission Workflow
Controlling What Actions Can Be Taken from the Task Management Dialog
Enabling the Workflow Initiator to Select Users and Groups
Adding Logic to Workflows with Actions and Process Variables
Storing Data in Process Variables
Step-by-Step: Adding Logic to the Whitepaper Submission Workflow
Using Java Classes for Decisions
Getting Access to the Content in the Workflow
Selecting the Right Event for Your Logic
Using ForEachFork
Using the Workflow API
Step-by-Step: Implementing Third-Party Review
Using a Task-Node Instead of a State
Making the Third-Party Review More Robust
Using Timers
Step-by-Step: Adding a Timer to the Third-Party Review
Understanding Timer Syntax
Debugging Workflows
Comparing Alfresco Workflow Options
Summary
8. Web Content Management
Understanding the Difference between Alfresco DM and Alfresco WCM
Obtaining Alfresco WCM
Step-by-Step: Installing Alfresco WCM
Creating Web Projects
Step-by-Step: Creating the SomeCo Web Project
What Just Happened
Playing Nicely in the Sandbox
Inviting Users
Mounting Sandboxes via CIFS
Virtualization and Layering
Creating Web Forms
Step-by-Step: Creating a SomeCo Press Release Web Form
Mapping XML Schema Types to Web Form Controls
Localizing Web Forms with Labels and Alerts
Generating XSD Dynamically
Step-by-Step: Creating a Press Release Index Page
Making Changes to an Existing Web Form
Using Web Forms Outside the WCM User Interface
Deploying Content
Step-by-Step: Deploying Content Using the File System Receiver (FSR)
Running Multiple FSR Hosts and Multiple FSR Targets
Setting the FSR Target User and Password
Viewing Deployment Reports
Deploying to Test Servers
Enabling Deployment Targets for Auto Deploy
Step-by-Step: Deploying to an Alfresco System Receiver (ASR)
Performing Post-Deployment Processing
Step-by-Step: Running Post-Deployment Code in an FSR Deployment
Handling Deletes
Step-by-Step: Implementing ASR Deployment Callbacks
Modifying and Creating WCM Workflows
Using Launch Dates, Expiration Dates, and Link Checking
Launch Dates
Expiration Dates
Link Checking
Step-by-Step: Creating a No-Approval Workflow for Job Postings
Working with the AVM API
Step-by-Step: Writing a Web Script to Query AVMNodes
Step-by-Step: Writing a Web Script to Trigger Deployments
Implementing a Web Script for Submit
Using the AVM Console
Summary
9. Security
Authenticating and Synchronizing with LDAP
Step-by-Step: Setting Up a Local OpenLDAP Server
Step-by-Step: Configuring Alfresco to Authenticate against LDAP
Step-by-Step: Configuring Chaining
Step-by-Step: Synchronizing LDAP with Alfresco
Handling Large Directories
Setting Up Single Sign-On (SSO)
Step-by-Step: Implementing SSO
Logging Out
Step-by-Step: Configuring CAS to Use LDAP for Authentication
Working with Security Services
Securing the Admin User
Granting Additional Users Admin Rights
Step-by-Step: Making tpublisher1 an Admin
Creating Users and Groups Programmatically
Step-by-Step: Creating Users and Groups through the API
Understanding Permission Definitions
Permission Groups
Permissions
Permission Sets
Step-by-Step: Setting Up A Portal Publisher Custom Role
Global Permissions
Mapping Permissions to Methods
Summary
A. API Reference and Examples
Foundation API Public Services
ActionService
ActivityService (3.0 Labs)
AttributeService
AuditService
AuthenticationService
AuthorityService
AVMService
AVMLockingService
AVMSyncService
CategoryService
CheckOutCheckInService
ConfigurableService
ContentUsageService (3.0 Labs)
ContentService
CopyService
CrossRepositoryCopyService
DeploymentService
DescriptorService
DictionaryService
EditionService
EmailService
ExporterService
FileFolderService
ImporterService
LinkValidationService
LockService
MailService
MimetypeService
ModuleService
MultilingualContentService
NamespaceService
NodeService
OwnableService
PermissionService
PersonService
RegistryService
RepoAdminService (3.0 Labs)
RepositoryExporterService
RuleService
SearchService
ScriptService
SiteService (3.0 Labs)
TaggingService (3.0 Labs)
TemplateService
ThumbnailService (3.0 Labs)
TransactionService
VersionService
WorkflowService
Lucene Queries
Basic Lucene Syntax
Property Search
Proximity Search
Range Search
Field Search
TYPE and ASPECT
ID
PARENT
PATH
QNAME
TEXT
Category
Using Saved Searches as Examples
JavaScript
Root Objects
JavaScript API
General
Association
ChildAssociation
ScriptNode
ScriptUtils
Root object: cache
Root object: crossRepoCopy
Root object: logger
Root object: status
Actions API
Root object: actions
ScriptAction
AVM API
Root object: avm
AVMNode (extends ScriptNode)
AVMScriptStore
Classification API
Root node: classification
CategoryNode (extends ScriptNode)
People API
Root node: people
Presence API (3.0 Labs)
presence
Search API
search
API Examples
Create a Node
Foundation
JavaScript
Web Services
Perform a Search
Foundation
JavaScript
Web Services
Persist Content
Foundation
JavaScript
Web Services
Add an Aspect
Foundation
JavaScript
Web Services
Set a Property
Foundation
JavaScript
Web Services
Set Permissions
Foundation
JavaScript
Web Services
Start a Workflow
Foundation
JavaScript
Web Services
B. Alfresco Configuration Reference
Actions
Actions Available in both Enterprise and Labs
Actions Available in Labs Only
Web Client Config Elements
Conditional Configuration Elements
Unconditional Configuration Elements
Action Groups
Core Web Client Action Groups
Forums-Related UI Action Groups
Workflow-Related Action Groups
WCM-Related Action Groups
Metadata Extractors
Transformers
Graphical View of the Alfresco Content Model
System Model
User Model
Content Model
App Model
BPM Model
Workflow Model
WCM Model
WCM App Model
WCM Workflow Model
Index
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜