Storing a review template using the Flex APIYou can create a review template using the ReviewContext class instead of authoring it in XML. (See ReviewContext in ActionScript 3.0 Reference for the Adobe Flash Platform .) The following example also adds custom attributes supporting documents before storing the review template to the server. package createstorereviewtemplate { import com.adobe.livecycle.rca.model.CustomAttribute; import com.adobe.livecycle.rca.model.ReviewContext; import com.adobe.livecycle.rca.model.constant.DocumentType; import com.adobe.livecycle.rca.model.constant.DurationUnit; import com.adobe.livecycle.rca.model.constant.StageTypes; import com.adobe.livecycle.rca.model.document.DocumentCollection; import com.adobe.livecycle.rca.model.document.SupportingDocument; import com.adobe.livecycle.rca.model.participant.Approver; import com.adobe.livecycle.rca.model.participant.ApproverCollection; import com.adobe.livecycle.rca.model.participant.Reviewer; import com.adobe.livecycle.rca.model.participant.ReviewerCollection; import com.adobe.livecycle.rca.model.stage.ApprovalStage; import com.adobe.livecycle.rca.model.stage.ReviewStage; import com.adobe.livecycle.rca.model.stage.StageCollection; import com.adobe.livecycle.rca.service.ServiceProvider; import com.adobe.livecycle.rca.service.core.IReviewCommentingAndApprovalService; import com.adobe.livecycle.rca.token.IAsyncToken; import flash.events.*; import flash.net.*; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.messaging.ChannelSet; import mx.messaging.channels.AMFChannel; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.livecycle.DocumentReference; import mx.rpc.remoting.RemoteObject; import mx.utils.ObjectUtil; /** * This sample stores a review template with two supporting documents. * Also it shows how to upload a document to LiveCycle file upload servlet. * * There is a public FileReference variable defined in the class. * To use it, create a button and bind its click with filerefence.browse(); * http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html?filter_flex=4.1&filter_flashplayer=10.1&filter_air=2 */ public class StoreReviewTemplateWithSupportingDocument { public static var username:String; public static var password:String; public static var server_url:String; public static var server_port:String; public static var amfChannelURI:String; public var _channelSet:ChannelSet = null; public var rc : ReviewContext = null; public var rcaService:IReviewCommentingAndApprovalService = null; // File reference public variables public var supportingDocFileRef : FileReference = new FileReference(); private var supportingDocRef : DocumentReference; public function init():void { server_url="http://localhost"; server_port="8080"; amfChannelURI="/remoting/messagebroker/amf"; username= "administrator"; password = "password"; _channelSet = new ChannelSet(); _channelSet.addChannel(new AMFChannel('amf-channel', server_url+":"+server_port+amfChannelURI)); _channelSet.login(username, password); //fileRef event handlers supportingDocFileRef.addEventListener(Event.SELECT, supportingDocSelectHandler); supportingDocFileRef.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); supportingDocFileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, supportingDocFileUploaded); rcaService = ServiceProvider.getReviewCommentingAndApprovalService(_channelSet); } public function StoreReviewTemplateWithSupportingDocument() { init(); } private function ioErrorHandler(event : IOErrorEvent) { trace(ObjectUtil.toString(event)); } private function supportingDocSelectHandler(event:Event):void { var authTokenService:RemoteObject = new RemoteObject("LC.FileUploadAuthenticator"); authTokenService.addEventListener("result", supportingDocTokenReceived); authTokenService.channelSet = _channelSet; authTokenService.getFileUploadToken(); } private function supportingDocTokenReceived(event:ResultEvent):void { var token:String = event.result as String; var urlString:String = server_url + ":" + server_port; var request:URLRequest = DocumentReference.constructRequestForUpload(urlString, token); supportingDocFileRef.upload(request); } private function supportingDocFileUploaded(event:DataEvent):void { supportingDocRef = new DocumentReference(); supportingDocRef.contentType = "application/pdf"; // assumption that the uploaded document is pdf, else define the content type for specific doc. supportingDocRef.url = event.data; supportingDocRef.referenceType = DocumentReference.REF_TYPE_URL; } private function createReviewTemplate() : void { rc = new ReviewContext(); rc.templateName = "SampleTemplateWithSD"; rc.templateDesc = "Sample Template"; rc.stages = new StageCollection(); //create stage var reviewStage:ReviewStage = new ReviewStage(); reviewStage.name = "ParallelReviewStage"; reviewStage.type = StageTypes.PARALLEL_REVIEW; reviewStage.duration = 1; reviewStage.durationUnit= DurationUnit.DAYS; //add reviewers reviewStage.reviewers = new ReviewerCollection(); var reviewer:Reviewer = new Reviewer(); reviewer.canonicalName = "apink"; reviewer.domain = "DefaultDom"; reviewer.isGroup = false; reviewer.isOptional = false; //add review to reviewer collection reviewStage.reviewers.addItem(reviewer); //add stage to stage collection rc.stages.addStage(reviewStage); //create stage var approvalStage:ApprovalStage = new ApprovalStage(); approvalStage.type = StageTypes.PARALLEL_APPROVAL; approvalStage.name = "ParallelApprovalStage"; approvalStage.duration = 1; approvalStage.durationUnit= DurationUnit.DAYS; //add reviewers approvalStage.approvers = new ApproverCollection(); var approver:Approver = new Approver(); approver.canonicalName = "apink"; approver.domain = "DefaultDom"; approver.isGroup = false; //add review to reviewer collection approvalStage.approvers.addItem(approver); //add stage to stage collection rc.stages.addStage(approvalStage); } public function storeTemplate() : void { createReviewTemplate(); var supportingDocCollection : DocumentCollection = new DocumentCollection(); var supportingDoc1 : SupportingDocument = new SupportingDocument(); supportingDoc1.type = DocumentType.REF; supportingDoc1.uri = "www.adobe.com"; supportingDoc1.description = "Sample reference type supporting document"; supportingDocCollection.addSupportingDocument(supportingDoc1); var supportingDoc2 : SupportingDocument = new SupportingDocument(); supportingDoc2.type = DocumentType.DOCUMENT; supportingDoc2.document = supportingDocRef; supportingDoc2.name = "Supporting Doc Sample"; supportingDoc2.description = "Sample document type supporting document"; supportingDocCollection.addSupportingDocument(supportingDoc2); var token:IAsyncToken = rcaService.storeReviewTemplate(rc, supportingDocCollection.source); token.addHandlers(handleStoreTemplateResult, handleStoreTemplateFault); } public function handleStoreTemplateResult(event: ResultEvent):void{ Alert.show("Template Stored Successfully."); trace(ObjectUtil.toString(event)); } public function handleStoreTemplateFault(event: FaultEvent):void{ trace(ObjectUtil.toString(event)); } } } |
|
// Ethnio survey code removed