The function 
syncOfflineChanges()
creates an array of 
ChangeObject
instances based
on the data from the local.db and sends it to the remote destination using Flex
RemoteObject
. If remote data were successfully updated, the function 
syncOffline
Changes_onResult()
will copy the data from local.db to local.db.bak to make them iden-
tical again.
Integrating with Google Maps
The PharmaSales application offers an additional convenience to the salespeople from
Acme Pharm: they can find the address of the medical office to visit without leaving
PharmaSales. The Google Maps API for Flash has proven to be pretty simple to use
with Flex and AIR.
You can find the detailed tutorial to this API at http://tinyurl.com/65ne8j, and there’s
no need to repeat it here. But it’s worth highlighting some important concepts required
to understand how such AIR/Maps mashups can be created.
To integrate your application with Google Maps, you have to get a special Maps API
key from Google. Look for the following fragment in the source code of
PharmaSales.mxml to see how we used our key (obtain yours to run the PharmaSales
application):
<maps:Map xmlns:maps="com.google.maps.*" id="map"
mapevent_mapready="onMapReady(event)" width="100%" height="100%" key=
"ABQIAAAAthGneZS6I6ekX8SgzwL2HxSVN_sXTad_Y81zCJbFz..."
url="http://code.google.com/apis/maps/"/>
The 
url
property here is the one that’s used during the registration at Google for ob-
taining the API key.
Check the library path of the project air.offline.demo; it includes a file
map_flex_1_8c.swc, which supports communication between Flex/AIR applications
and Google Maps.
When the 
Map
component is initialized, it dispatches the 
mapevent_mapready
event, and
the application calls the function 
showAddress()
, which gets the selected address from
the data grid, or to be more specific from its data provider, and asks the 
ClientGeo
coder
to find the map of this address:
cg.geocode(dto.fulladdress);
When the map is found, the 
ClientGeocoder
object receives the event
GeocodingEvent.GEOCODING_SUCCESS
, and the function 
onGeocodeSuccess()
displays the
map with a marker at the address location in the center:
private function onGeocodeSuccess(event:GeocodingEvent):void{
cursorManager.removeBusyCursor();
var point:LatLng=event.response.placemarks[0].point as LatLng;
var marker:Marker=new Marker(point);
map.addOverlay(marker);
map.setCenter(point);
OfflineDataCollection | 487
.Pdf to .jpg converter online - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
best pdf to jpg converter; reader pdf to jpeg
.Pdf to .jpg converter online - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
convert pdf document to jpg; best pdf to jpg converter for
var dto:VisitDataDTO=dg.selectedItem as VisitDataDTO;
var opt:InfoWindowOptions=new InfoWindowOptions();
opt.drawDefaultFrame=true;
opt.contentHTML=dto.fulladdress;
marker.openInfoWindow(opt);
}
The function 
onGeocodeSuccess()
uses a helper class, 
InfoWindowOptions
, from the
Google Maps API to display the address on the marker, as shown in Figure 9-16.
Even though the PharmaSales application may not always be connected to the Internet,
the salespeople need at least a static map of the area. Before hitting the road, a sales-
person can find the required map online, press the Save button, and save the map in a
local file as an image. The code of the function 
saveMap()
is what enables this:
private function saveMap():void {
deleteMap();
var bd:BitmapData=new BitmapData(map.width, map.height);
bd.draw(map);
var pngEncoder:PNGEncoder=new PNGEncoder();
var ba:ByteArray=pngEncoder.encode(bd);
var dto:VisitDataDTO=dg.selectedItem as VisitDataDTO;
var file:File=
File.applicationStorageDirectory.resolvePath(
dto.fulladdress + ".png");
var fileStream:FileStream=new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(ba);
fileStream.close();
}
If a salesperson selects a row in the visits data grid (
dg.selectedItem
) and clicks the
Google Maps button in disconnected mode, the 
openMapImage()
function will display
the previously saved image of the map for the selected address (
dto.fulladdress
):
private function openMapImage():void {
if (saved_map && saved_map.initialized){
var dto:VisitDataDTO=dg.selectedItem as VisitDataDTO;
var file:File=
File.applicationStorageDirectory.resolvePath(
dto.fulladdress + ".png");
saved_map.source=file.nativePath;
map_image.title="Displaying '" + file.name + "'";
}
}
The title of the map will prompt the user that she is watching an image, not a live map.
Figure 9-17’s screenshot was taken in disconnected mode (the server status indicator
is green because we ran the Tomcat server on the local computer). The title of the view
now reads, “Displaying ‘12 Main St., Manville, NJ.png,’” which is the name of the local
file when the image of the map has been saved.
488 | | Chapter 9: Working with Adobe AIR
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Online PDF to JPEG Converter. Download Free Trial. Convert a PDF File to JPG. Drag and drop your PDF in the box above and we'll convert the files for you.
convert multipage pdf to jpg; convert pdf image to jpg online
Online Convert Jpeg to PDF file. Best free online export Jpg image
Online JPEG to PDF Converter. Download Free Trial. Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start
convert pdf file to jpg; change file from pdf to jpg on
If the connection is available, the salesperson can enjoy working with the real Google
Maps website without leaving PharmaSales.
Summary
The main deliverable of this chapter is a solution for data synchronization of AIR/
BlazeDS applications. To better understand this solution, you reviewed the basics of
AIR 1.5 development. Now you have a reference implementation of the application
that may help you in building AIR-based systems—even if your users are not working
as salespeople for a pharmaceutical company. By the time this book is printed, AIR 2.0
will be released and we are sure that you’ll enjoy working with it.
In no way should you treat this chapter as a complete tutorial; your education in the
AIR development field has just begun.
Following is a laundry list of topics that you should get familiar with on your own:
<mx:HTML>
, which is a component that allows you to build an AIR web browser in
several minutes
• AIR Updater; the class 
flash.desktop.Updater
controls the updating of the appli-
cation installed on the client’s computer
Figure 9-16. Real Google Maps view
Summary | | 489
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg.
batch convert pdf to jpg online; convert pdf image to jpg
C# Image Convert: How to Convert Dicom Image File to Raster Images
RasterEdge.XDoc.PDF.dll. using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.dcm"; String outputFilePath = @"C:\output.jpg"; // Convert dicom to
.pdf to jpg converter online; change from pdf to jpg on
• How to use the system clipboard from AIR applications
• The Text Layout Framework, which is an extensible library for working with text
in Flash Player 10 and AIR 1.5
• Local data encryption, which allows you to encrypt sensitive data, such as the user’s
password, and store it in the local SQLite file
• Seamless installation of AIR applications using badges
You can learn about these and other topics from the Adobe AIR 1.5 Cookbook by David
Tucker (O’Reilly), or visit the Adobe AIR Developer Center.
Figure 9-17. Saved map image
490 | | Chapter 9: Working with Adobe AIR
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
Features and Benefits. Powerful image converter to convert images of JPG Support a batch conversion of JPG to PDF with high speed; Get a compressed PDF file after
convert pdf file to jpg online; convert multiple pdf to jpg
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
An advanced PDF converter tool, which supports to be integrated in .NET to image file formats with high quality, support converting PDF to PNG, JPG, BMP and
convert pdf pages to jpg online; change file from pdf to jpg
CHAPTER 10
Developing Flex Applications for
LiveCycle Enterprise Suite
Good design can’t fix a broken business model.
—Jeffrey Veen
Adobe LiveCycle Enterprise Suite (ES) as an enterprise server platform is targeted at
automation of business processes. One example of a business process is a hardware
retail store that sells nails and hammers. The retailer orders the goods online from one
of the known suppliers. Assume that an explicit approval of the supplier is required for
each ordered item. Because the supplier wants to be able to fulfill all the orders, the
supplier attempts to predict the demand.
To that end, the supplier monitors the inventory and, when the level is beyond a certain
threshold, reorders the items from a manufacturer. The supplier’s orders also need to
be approved by the manufacturer. The activities between the companies occur in a
predefined sequence: order-approval-reorder-approval. On a more granular level,
within each company there is a certain business process as well: receiving orders, or-
dering materials and parts, production, quality assurance, invoicing, shipping, and so
forth.
Business process automation assumes software-based modeling of the process as well
as software-based enforcement of the model that ensures that the process activities are
consistently handled by the process participants: retailer, supplier, manufacturer, and
so forth. Often, such software is called workflow or business process management
(BPM) software.
Unlike other workflow products, LiveCycle ES features unparalleled integration with
PDF processing and Adobe Flex. Accordingly, the combination of Flex and LiveCycle
technologies becomes a natural choice for many enterprises that require productive
workflow solutions featuring a rich user experience.
491
JPG to GIF Converter | Convert JPEG to GIF, Convert GIF to JPG
Features and Benefits. High speed JPEG to GIF Converter, faster than other JPG Converters; Standalone software, so the user who is not online still can use
convert online pdf to jpg; .net convert pdf to jpg
VB.NET Create PDF from images Library to convert Jpeg, png images
Support create PDF from multiple image formats in VB.NET, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage. .NET converter control for
convert pdf file into jpg format; change pdf file to jpg file
This chapter focuses on how to use Flex to support human-centric business processes
in LiveCycle ES and on the most essential enterprise process management topics. After
a brief introduction of LiveCycle ES, the chapter illustrates two scenarios:
• How to build Flex applications that work in concert with a LiveCycle ES
frontend—LiveCycle Workspace. This scenario requires minimal development ef-
fort, but it locks you into the capabilities of the Workspace.
• How to embed LiveCycle ES functionality into your own Flex application. This
scenario assumes deeper involvement in the LiveCycle API and more coding, but
it opens unlimited integration opportunities.
By the end of this chapter, you will understand:
• How to extend LiveCycle ES with custom components
• How to support user and group management from the external enterprise
repository
• How to use LiveCycle ES events to synchronize the processes in the publisher/
subscriber style
This chapter was written about LiveCycle ES 8.2, because the version
branded as LiveCycle ES2 was not available at the time of this writing.
LiveCycle ES2 improves the productivity of developers in various work-
flows, substantially reducing the number of steps needed to populate a
form, design a parallel approval process, get attachments from an initial
task, and more. The Eclipse-based Workspace introduces a new con-
cept: the Application Model, which eliminates the need to separately
manage forms, processes, and assets. You now can deploy applications
without the need to leave the Workbench. Please refer to the latest
LiveCycle ES2 documentation.
Business Process Example: Vacation Request
In this simple scenario, a company employee requests a vacation. The manager must
approve or reject the request, and the employee must acknowledge the decision, com-
pleting the process. In business process management lingo, the process assigns tasks:
to the manager (to review the incoming vacation request) and to the employee (to review
and acknowledge the manager’s decision). See Figure 10-1.
The diagram of the corresponding SimpleVacationRequest is presented in Figure 10-1.
It has two user activities: Manager’s Review and Employee’s Review, each requiring a
custom UI (user interface) application to communicate the data between the user and
the process management software.
Figure 10-2 illustrates a sample UI that could be used for the manager’s review: name,
email, department, vacation type, and date range are all completed automatically
beforehand. The manager can append comments to the optional description field and
492 | | Chapter 10: Developing Flex Applications for LiveCycle Enterprise Suite
pick either “approved” or “rejected” as the approval decision. Finally, the manager
clicks the Complete button to send the decision to the system.
The employee review/acknowledgment screen might look almost identical to Fig-
ure 10-2, except that the Approval Decision combo box would be disabled and the title
word “Approve” would yield to the humble “Review”. To communicate acknowledg-
ment, the employee would click Complete, indicating his awareness of the manager’s
decision.
Figure 10-1. Diagram of the SimpleVacationRequest
Figure 10-2. The UI of the vacation request approval
Business Process Example: Vacation Request t | | 493
But wait: how does the vacation request make it into the system in the first place?
Doesn’t the employee need a UI for that, too? Yes, of course. Figure 10-3 shows the
screen to submit the vacation request. By using the user’s login information, the system
might automatically initialize the employee name, email, and department. The em-
ployee specifies the vacation type and date range.
Figure 10-3. The UI of the vacation request submission
All three use cases are supported by a single Flex application, VacationRequest.swf,
discussed in detail later in this chapter. Make no mistake, however: the initial submis-
sion of the request is not a part of the process diagram. That’s right, from the process
management engine’s point of view, the process instance (for this specific request) starts
only after the request is submitted. Does it sound confusing? Well, think of it this way:
a process is a program with input parameters. If you start the process using an API, you
can pass hardcoded values, read them from the external files, and so forth. Alterna-
tively, the program can pop up a dialog box in front of the employee, forcing him to
enter the values.
Think of a web service with a method 
startProcess(vacationRequestData)
. The web
service is oblivious to preparation of the 
vacationRequestData
. Imagine a user-friendly
software program that allows you to fill in a vacation request form and then initiates
the process instance by calling the web service. What might this software be in the case
of the LiveCycle ES? One option is to write a custom program from scratch; another is
to use LiveCycle Workspace ES, as explained in the next section.
Meet LiveCycle Workspace ES
Using the LiveCycle ES API, you can start the process instance, pull all tasks assigned
for a particular user, complete a task, forward it to another user, and so on. But APIs
do not help the end user. That is why almost any workflow product comes with an off-
the-shelf generic frontend that allows participants to use the workflow engine without
paying a dime to an API-savvy geek.
494 | | Chapter 10: Developing Flex Applications for LiveCycle Enterprise Suite
Recognizing the universal need for such software, Adobe created a generic process
management frontend program called LiveCycle Workspace ES. It is written entirely in
Flex and its sources are part of the LiveCycle ES installation (later in the chapter, you
will learn how to rebuild the Workspace from scratch). Figure 10-4 illustrates the de-
fault look of the LiveCycle Workspace.
Figure 10-4. Default screen of the LiveCycle Workspace ES
Importantly, LiveCycle ES allows you, during the process design, to nominate a Flex
subapplication that the Workspace loads and activates whenever a user picks a partic-
ular task from the To Do list (otherwise called a queue), as shown in Figure 10-4.
At Farata Systems, we call these applications Flexlets. Once the Flexlet is loaded,
Workspace initializes it with the relevant process data. When the user is satisfied with
the data entered, she clicks Complete, and Workspace transmits the data captured by
the Flexlet back to the process.
Figure 10-5 illustrates the task queue of Alex Pink, one of the example users automat-
ically configured by the turnkey installation of LiveCycle ES. Double-click the task line
to initiate the underlying Flexlet and review the vacation request issued by Rye Wood-
ard, another user, also shown in Figure 10-5.
Meet the Flexlet: Vacation Request
Take a look at Figure 10-6. It illustrates the state of the Workspace screen when Work-
space has loaded the SimpleVacationRequest Flexlet and added it to the Workspace’s
Display List under the Form tab. Notice two buttons added by the Workspace to the
Meet the Flexlet: Vacation Request t | | 495
control bar of the SimpleVacationRequest panel: a small Save button on the left, and
the Complete button on the right. The Save button preserves the draft of the incomplete
request for further use (accumulating under the user’s To Do list), and the Complete
button passes the request data to the process.
Also, notice the title of the form: Submit Vacation Request. It corresponds to the visual
state of the Workspace when the employee, Rye Woodard, enters the initial request
(to start the process). In particular, date fields appear enabled so that an employee can
enter the vacation period.
Figure 10-5. Task queue of a manager (Alex Pink)
Figure 10-6. Workspace with the activated Flexlet (SimpleVacationRequest.swf, employee’s view)
496 | | Chapter 10: Developing Flex Applications for LiveCycle Enterprise Suite
Documents you may be interested
Documents you may be interested