Upload
alfresco-software
View
4.604
Download
0
Embed Size (px)
Citation preview
United States Patent & Trademark Office!
!
America Invents Act !and Alfresco!
!Presented by!
Joe Wolf!Software Developer, USPTO OCIO!
!!!
March 5, 2013!
The Disclaimer!
• Views expressed in this presentation are my own and not necessarily representative of the views of the U.S. Patent & Trademark Office or Department of Commerce.!
• Discussions regarding specific software products or vendors do not constitute an endorsement of said products or vendors by the U.S. Patent & Trademark Office or Department of Commerce.!
The Law!
• Leahy-Smith “America Invents Act” (AIA)!• Signed September 15th, 2011!• Introduces significant reforms!
– USPTO granted fee setting authority!– No more Tax Code compliance strategy
patents!– First to Invent à First Inventor to File!– Expanded Post-Grant procedures and
reviews!– And more!!
The Requirements!
• Support filing of AIA Petitions!– Inter Partes Review!– Transition program for Covered Business Methods!– Post-Grant Review !
• Collect documents!– Papers & Exhibits!– Public, private, or confidential visibility!
• Collect payments!• Support PTAB workflow, email notifications!• Provide public access to documents!
!!!!
The Architecture!
5!
Alfresco 4.0 Enterprise!
!• Persist Documents!
COTS Case Management Product!
!• Support Petitions Workflow!• Send Notifications!• Collect Payments!• Persist Case Metadata!• Provide Public Search!
CMIS!
Petitioners, Public
USPTO Personnel
The Constraints!
• Congressionally-mandated deadline!• First production system to use Alfresco and Case
Management COTS Product!• Case Management COTS Product limitations!
– Only supported CMIS!– Handled user registration and authentication!– Closed architecture!
6!
The Strategies!
• CMIS Only!– Single, top-level “DropZone” for Case creation!!
7!
PGR2013-00001
Cases/DropZone/
createFolder OnCreateNodePolicy PGR2013-00001
Cases/2013/PGR/00/
1. Validate uniqueness of CaseID
2. Move folder 3. Track CaseID in
attributeService 4. Create case sub-
folders with ACLs
The Strategies!
• CMIS Only!– Case-specific Drop Zones for filing documents!
8!
PGR2013-00001/
createDoc OnCreateNodePolicy
PGR2013-00001/Record/ Exhibit/Petitioner
cases:exhibit cases:filingParty=
petitioner cases:exhibitNo=
1001
cases:exhibit
cmis:name= Exhibit1001.pdf cases:caseId=
PGR2013-00001 1. Move to appropriate
subfolder/rename 2. Apply caseId aspect 3. Apply ACLs based
on visibility, if necessary
The Strategies!
• Externalized User Registration/Authentication!– Trusted connection between Case Management
Product and Alfresco!
9!
<servlet> <servlet-‐name>cmisprps</servlet-‐name> <servlet-‐class> org.apache.chemistry.opencmis.server.impl.atompub.CmisAtomPubServlet </servlet-‐class> <init-‐param> <param-‐name>callContextHandler</param-‐name> <param-‐value> gov.uspto.prps.AutoAuthCallContextHandler </param-‐value> </init-‐param> <load-‐on-‐startup>8</load-‐on-‐startup> </servlet>
The Strategies!
• Externalized User Registration/Authentication!– Alfresco users created on demand!
10!
public Map<String, String> getCallContextMap(HttpServletRequest request) { // ...extract username from HTTP request String ticket = ticketComponent.getCurrentTicket(username, true); AuthenticationUtil.runAs(new RunAsWork<NodeRef>() { @Override public NodeRef doWork() throws Exception { return personService.getPerson(username); // call has side-‐effect! } }, AuthenticationUtil.getSystemUserName()); Map<String, String> context = new HashMap<String, String>(); context.put(CallContext.USERNAME, ""); context.put(CallContext.PASSWORD, ticket); return context; }
The Strategies!
• Externalized User Registration/Authentication!– Dynamic group assignments based on
metadata provided in CMIS call!
11!
// during execution of onCreateNode policy for documents... String user = AuthenticationUtil.getFullyAuthenticatedUser(); String group = groupName(caseId, filingParty); // hides PermissionService.GROUP_PREFIX weirdness Set<String> groupMembers = authorityService .getContainedAuthorities(AuthorityType.USER, group, true); if (groupMembers == null || !groupMembers.contains(user)) { authorityService.addAuthority(group, user); }
The Strategies!
• Closed Architecture!– Folder structure reflects business view!– Content model holds key metadata!– Use CMIS!
• Expunging!• Reporting!• Auditing!• Multi-document PDF generation!
12!
The Wish List!
• Generate code from content model XML!– e.g. XJC (JAXB), wsdl2java, hbm2java!
• Support Webscripts written in any JSR 223-compliant language!
• CRUD in CMIS Query Language!• Apache Chemistry to go 1.0!• Servlet 3.0/JavaEE 6 support or URL dispatching
via Spring Web!
13!
The End!
14!