c# wpf free pdf viewer : Convert selected pages of pdf to word online SDK Library service wpf asp.net html dnn ATGCommProgGuide58-part2138

ATG  C om mer ce P ro g ramm in g   Gui d e 
56 3  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
μ
6.
The loader reads a line from the log file and passes it to a pipeline driver for processing 
(see below). The loader repeats this step until it has processed the number of lines 
specified by the value of its 
transactionBatchSize
property. 
7.
If no errors have occurred, the loader commits the transaction and updates the 
recordsProcessed
property of the 
loaderProgress
item to indicate the number of 
records processed. 
8.
The cycle of creating a transaction, processing a batch, and committing the 
transaction is repeated until the entire log file has been processed. 
9.
The loader sets the 
status
property of the 
loaderProgress
item to “done,” and 
releases the lock. 
To obtain information about loads performed by a specific loader component, view the component in the 
Component Browser in the Dynamo Admin UI. 
Handling Errors 
If an error occurs while processing a batch of lines, the transaction is rolled back. The loader sets the 
status
property of the 
loaderProgress
item to “failed,” and sets the 
statusDetail
property to a 
string describing the failure. Once you have resolved the problem, you can reinitiate the load process by 
clicking the Return to Queue link in the entry for the failed load in the Component Browser. This changes 
the value of the 
status
property to “in progress,” so the loader will attempt to continue processing the 
file when the next schedule load time arrives. Alternately, you can use the loadAllAvailable method to 
start loading immediately. 
The 
Loader
class implements logic that enables it to deal with failures such as a JVM crashes. Before a 
loader component looks in the queue for a file to load, it first looks for 
loaderProgress
items whose 
status
properties are set to “in progress.” If the loader finds a 
loaderProgress
item in this state, it uses 
the 
ClientLockManager
to try to obtain a lock on the item. If the lock is not granted, this means some 
other process has the lock, and is currently loading the file (for instance, if there is separate instance of the 
same loader running on another ATG instance). 
If the lock is granted, this means that either a loader crashed earlier while loading the file (leaving the 
loaderProgress
item in this state), or that a load failed and the associated Return to Queue link was 
subsequently clicked. In this situation, the loader will continue loading the file, starting from the first 
record that has not yet been successfully processed. 
Pipeline Drivers and Processors 
As mentioned above, the loader component initiates the data loading process, but the actual processing 
of the data is performed by a processor pipeline. The pipeline is invoked by a pipeline driver component 
to which the loader passes batches of log entries. The pipeline driver calls a pipeline manager component, 
which controls the pipeline. The processors in the pipeline perform such tasks as looking up dimensional 
data in the warehouse; looking up profile, catalog, and order data in repositories on the production site; 
and writing data about each item in an order to the warehouse. 
The pipeline driver components, like the data loader components, are located in the 
/atg/reporting/datawarehouse/loaders/
Nucleus folder. Each loader component has a 
Convert selected pages of pdf to word online - SDK Library service:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Convert selected pages of pdf to word online - SDK Library service:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
56 4  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
pipelineDriver
property that points to the pipeline driver it invokes. For example, the 
OrderSubmitLoader.properties
file includes: 
pipelineDriver=OrderSubmitPipelineDriver 
All of the pipeline drivers point to the same pipeline manager component, 
/atg/reporting/datawarehouse/process/PipelineManager
. This pipeline manager’s definition 
file, 
/atg/reporting/datawarehouse/process/pipeline.xml
, defines several data loading 
processor chains. The specific chain invoked by an individual pipeline driver is specified by its 
pipelineChainId
property. For example, the 
OrderSubmitPipelineDriver.properties
file 
includes: 
pipelineManager=../process/pipelineManager 
pipelineChainId=submitOrder 
The following table summarizes the data loaders, their pipeline drivers, and the processor chains they 
invoke: 
Data Loader 
Pipeline Driver 
Processor Chain 
OrderSubmitLoader 
OrderSubmitPipelineDriver
submitOrder
(which also runs 
lineItem
ProductCatalogLoader 
DimensionPipelineDriver
dimensionUpdate
SegmentLoader
SegmentPipelineDriver
segmentUpdate
SiteVisitLoader
SiteVisitPipelineDriver
siteVisit
UserUpdateLoader
DimensionPipelineDriver
dimensionUpdate
DimensionUpdate Pipeline 
The 
dimensionUpdate
pipeline chain is triggered by the 
ProductCatalogLoader
and 
UserUpdateLoader
components. The following diagrams show the processors in the chain for insert, 
update, and delete events. 
SDK Library service:C# PDF Page Insert Library: insert pages into PDF file in C#.net
page2 }; // Specify a position for inserting the selected pages. doc2.InsertPages( pages, pageIndex); // Output the new document Insert Blank Page to PDF File in
www.rasteredge.com
SDK Library service:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
page2} ' Specify a position for inserting the selected pages. doc2.InsertPages(pages, pageIndex) ' Output the new document. Insert Blank Page to PDF File Using
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
56 5  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
Pipeline Processor Chain for an Insert Event 
SDK Library service:VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer
Support to insert note annotation to replace PDF text. Ability to insert a text note after selected text. VB.NET HTML5 PDF Viewer: Annotate PDF Online.
www.rasteredge.com
SDK Library service:C# HTML5 PDF Viewer SDK to annotate PDF document online in C#.NET
Support to insert note annotation to replace PDF text. Ability to insert a text note after selected text. C# HTML5 PDF Viewer: Annotate PDF Online.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
56 6  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
Pipeline Processor Chain for Delete Events 
SDK Library service:VB.NET PDF Image Redact Library: redact selected PDF images in vb.
Text. PDF Export. Convert PDF to Word (.docx). Convert to Text. Convert PDF to JPEG. Convert PDF to Png Page: Create Thumbnails. Page: Insert PDF Pages. Page: Delete
www.rasteredge.com
SDK Library service:C# Word - Insert Blank Word Page in C#.NET
doc1 = new DOCXDocument(inputFilePath1); // Specify a position for inserting the selected page. Add and Insert Multiple Word Pages to Word Document Using C#.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
56 7  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
Pipeline Processor Chain for Update Events 
To ensure that locks are acquired correctly for all processed items, this pipeline makes two passes. The 
first pass identifies which items require locks. The second pass acquires the locks and then makes all 
inserts and updates to the repository. When the second pipeline pass is finished, all locks are released. 
The pipeline uses a map to pass data through the pipeline to each processor. Each processor can get 
items it needs from the map, add items it is responsible for creating to the map, and update items in the 
map if needed. 
The processors in this pipeline are: 
AcquireLocksProcessor
—Runs only on the second pipeline pass, when it makes a 
call on the lock manager to get the locks identified as necessary during the first pass of 
the pipeline. 
SDK Library service:C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
Online C# class source codes enable the ability to rotate int rotateInDegree = 270; // Rotate the selected page. C#.NET Demo Code to Rotate All PDF Pages in C#
www.rasteredge.com
SDK Library service:VB.NET PDF insert image library: insert images into PDF in vb.net
Access to freeware download and online VB.NET class to provide users the most individualized PDF page image as Png, Gif and TIFF, to any selected PDF page with
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
56 8  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
WarehouseItemLookupProcessor
—In both pipeline passes, looks up the most 
recent item in the Data Warehouse, using the 
itemId
from the map. 
ChangeTypeProcessor
—In both pipeline passes, determines the type of record 
change indicated by the log record. If the change type is insert or delete, the next 
processor that executes is the 
WarehouseItemExistsProcessor
. If the change type 
is update, the next processor is 
ProductionItemLookupProcessor
WarehouseItemExistsProcessor
—In both pipeline passes, determines whether 
the item being processed already exists in the warehouse. For delete actions, if the 
item exists, the next processor that executes is the 
UpdateDeletedItemProcessor
; if 
not, it is 
InsertDummyItemProcessor
. For insert actions, if the item does not exist, 
the next processor is the 
ProductionItemLookupProcessor
InsertDummyItemProcessor
—In the first pass, requests a lock for the item to be 
inserted. In the second pass, creates a dummy item and adds it to the warehouse 
repository. 
UpdateDeletedItemProcessor
—In the first pass, requests a lock for the item to be 
updated. In the second pass, for delete actions, this processor sets the 
endDate
and 
lastUpdateDate
to the event date, and 
deleted
to true. This is the end of the 
processor pipeline for delete events. 
ProductionItemLookupProcessor
—In the first processor pass for updates, looks up 
the item in the production repository. If the item exists, the next processor called is the 
ItemConversionProcessor
. If it does not, the chain ends. In the second pass, this 
processor only does a lookup if the first lookup was unsuccessful. 
ItemConversionProcessor
—Converts production items into warehouse items, 
using the mapping values described in Mapping Production Properties to Data 
Warehouse Properties. If the conversion finds a reference to a non-existent warehouse 
item, this processor creates that item by calling the pipeline chain recursively. 
InsertNewItemProcessor
—In the first pass requests a lock for the item to be 
updated. In the second pass, creates the new warehouse item. 
ConvertUpdateToInsertProcessor
—Takes an update and makes changes 
necessary to allow an insert into the Data Warehouse. Sets the 
eventDate
to null, 
since it is not known when the item was actually inserted into the product catalog. The 
change type is left as update. This processor performs the conversion only on the 
second pass, since the item may be added by another loader between the first and 
second passes. 
CompareEventAndLastUpdatedDatesProcessor
—In both pipeline passes, this 
processor looks at the time of an update and the last update time of the Data 
Warehouse item and compares them, to see if any changes that caused the event have 
already been put into the Data Warehouse record. 
DiffProcessor
—Compares the values in the production item to the values in the 
Data Warehouse. This processor only does its work in the second pass. 
UpdateItemProcessor
—In the first pass this processor requests a lock for the item to 
be updated. On the second, it updates the Data Warehouse with changes. 
SDK Library service:C# WPF PDF Viewer SDK to annotate PDF document in C#.NET
1. Highlight text. Click to highlight selected PDF text content. 2. Underline text. Click to underline selected PDF text. 3. Wavy underline text.
www.rasteredge.com
SDK Library service:VB.NET PDF - Annotate PDF with WPF PDF Viewer for VB.NET
1. Highlight text. Click to highlight selected PDF text content. 2. Underline text. Click to underline selected PDF text. 3. Wavy underline text.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
56 9  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
Mapping Production Properties to Data Warehouse Properties 
Individual product catalogs and user profile repositories can vary widely from one customer site to 
another. However, the Data Warehouse is a fixed structure; therefore, a map is required. The mapping is 
done using an XML file with the structure shown below, which allows you to map between any ATG 
repository and the Data Warehouse for data loading purposes. 
You must map each item and property in your product catalog that you want to report on to the Data 
Warehouse. 
<data-warehouse-dimension-loader-definition> 
<data-warehouse-repository repository="path_to_warehouse_repository"> 
<data-warehouse-repository-item item="item_name"> 
<production-repository repository="path_to_production_repository"> 
<production-repository-item item="item_name" natural-key="key"/> 
</production-repository> 
<property-mappings> 
<warehouse-property name="name" default-value="value"> 
<production-property name="name"/> 
</warehouse-property> 
</property-mappings> 
</data-warehouse-repository-item> 
</data-warehouse-repository> 
</data-warehouse-dimension-loader-definition> 
The 
data-warehouse-repository
names the destination repository and contains the destination 
repository items. The 
production-repository
names the source repository and items. 
<data-warehouse-dimension-loader-definition> 
<data-warehouse-repository 
repository="/atg/reporting/datawarehouse/WarehouseRepository"> 
<data-warehouse-repository-item item="category" 
natural-key="categoryId"> 
<production-repository 
repository="/atg/commerce/catalog/ProductCatalog" 
nickname="catalog"> 
<production-repository-item item="category"/> 
</production-repository> 
The 
property-mappings
element contains the individual 
warehouse-properties
to be mapped for a 
specific warehouse item. 
In cases where there is a simple one-to-one mapping between the repository item property and the Data 
Warehouse item property, the 
production-property
element identifies the repository item property 
which is mapped to the corresponding 
warehouse-property
element. This example uses the user’s first 
name from the profile repository: 
ATG  C om merce  P ro gra mm in g  G ui d e 
57 0  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
<property-mappings> 
<warehouse-property name="firstName"> 
<production-property name="ProfileRepository.user.firstName"/> 
</warehouse-property> 
</property-mappings> 
In some cases, there is not a one-to-one mapping, so a converter component is used. Converters perform 
tasks such as: 
Combining multiple repository item properties into a single warehouse item property 
Converting the data of the property before placing it in the Data Warehouse 
Looking up parent objects for SKUs, products, and categories, where there may be 
multiple values to select from 
For example, the 
AddressToRegionItemConverter
component combines the user’s state and country 
into the region used by the Data Warehouse. 
<warehouse-property name="homeRegion" conversion- 
component="/atg/reporting/datawarehouse/process/converter/ 
AddressToRegionItemConverter"> 
<production-property name="ProfileRepository.user.homeAddress.state" conversion- 
context-name="state"/> 
<production-proprerty name="ProfileRepository.user.homeAddress.country" 
conversion-context-name="country"/> 
</warehouse-property> 
SiteVisit Pipeline 
The 
siteVisit
chain is triggered by the 
SiteVisitLoader
component. This pipeline has no branches. 
Each processor, if successful, starts the one that follows. 
Each processor uses a passed-in parameter retrieved from the log file to look up items in the Data 
Warehouse. For example, the 
lookupVisitor
processor uses the 
profileId
from the log file to look up 
the visitor in the 
ARF_USER
table and return its ID, using an RQL query. If the visitor cannot be found, the 
processor attempts to load the visitor into 
ARF_USER
table first, and then return the 
ARF_USER.ID
. If this 
fails, the processor returns the “Unspecified” visitor. Similar patterns apply to the other lookup processors, 
although the algorithm varies. 
The processors are: 
lookupSiteVisitDay
—Uses the session start timestamp in the log file to determine 
the starting day of the visit. 
lookupSiteVisitTime
—Uses the session start timestamp in the log file to 
determine the starting time of the visit. 
lookupSiteVisitEndDay
—Uses the session end timestamp in the log file to 
determine the ending day of the visit. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
57 1  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
lookupSiteVisitEndTimelookupSiteVisitEndDay
—Uses the session end 
timestamp in the log file to determine the ending time of the visit. 
lookupVisitor
—Uses the profile ID in the log file to look up the visitor in the 
ARF_USER
table. 
lookupSiteVisitStimulusGroup
—Reserved for future use. Currently returns the 
“Unspecified” stimulus group. 
lookupDemographic
—Examines the visitor’s date-of-birth, gender, marital status and 
home region as defined in the Data Warehouse. It uses this information to look up the 
record in the 
ARF_DEMOGRAPHIC
table that classifies this user. 
logSiteVisit
—Writes the row to the 
ARF_SITE_VISIT
table in the Data 
Warehouse. 
SubmitOrder Pipeline 
The 
submitOrder
chain is triggered by the 
OrderSubmitLoader
component. This pipeline has no 
branches. When it starts, the only information available to the pipeline is the order ID. Each processor in 
the pipeline, if successful, adds information to the data being processed and starts the next processor. 
The processors are: 
fetchOrder
—Uses the order ID to look up the order in the order repository. 
lookupOrder
—If line items exist in the data warehouse for the current order ID, this 
processor fetches those line items and creates a parameter map entry for them. 
checkOrderExists
—Acts as a switch in the pipeline. If the 
warehouseItemPropertyName
value
pair exists in the parameter map, then the line 
items for the order already exist, and the current log record does not need to be 
processed. If the map entry does not exist then the pipeline processes the log entry. 
createOrderId
—Generates a surrogate key for the order. 
createLineItems
—Breaks the order down into line items. If a single line item is 
shipped to multiple addresses, each address is considered a separate line item. 
calculateLineItemsGrossRevenue
—The quantity of that particular line item, 
times the unit price of the item. 
allocateTax
—Allocates the order’s tax amount to the individual line items, using a 
weighted calculation. If rounding results in the sum of the line item allocations being 
more or less than the original total, the tax on the final line item is used to make any 
adjustments. The calculation is: 
(line item gross revenue/total order gross revenue) * total tax 
allocateShipping
—Allocates the order’s shipping amount to the individual line 
items, using a weighted calculation. If rounding results in the sum of the line item 
allocations being more or less than the original total, the shipping on the final line 
item is used to make any adjustments. The calculation is: 
(line item gross revenue/total order gross revenue) * total shipping 
ATG  C om merce  P ro gra mm in g  G ui d e 
57 2  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
allocateOrderDiscount
—Allocates order-level discounts (such as free shipping) to 
individual line items using a weighted calculation. If rounding results in the sum of the 
line item allocations being more or less than the original total, the shipping on the 
final line item is used to make any adjustments. The calculation is: 
(line item gross revenue/total order gross revenue) * total discount 
calculateManualAdjustments
—Calculates the manual adjustment credits and 
debits for the entire order. This processor is used only for ATG Commerce Service 
Center. 
allocateManualAdjustmentsDebit
—Allocates manual adjustment debits to line 
items. This processor is used only for ATG Commerce Service Center. 
allocateManualAdjustmentsCredit
—Allocates manual adjustment credits to line 
items. This processor is used only for ATG Commerce Service Center. 
calculateLineItemsDiscountAmount
—Totals any discounts applied to the line 
items in the order. 
calculateLineItemsMarkdownDiscountAmount
—Calculates the markdown 
discount. That discount is basically any discounts that apply before promotionally 
discounts are applied. For example, if someone buys a package of hot dogs on sale (no 
promotions) for $4.50 when the list price for the package of hot dogs is $5.00 then the 
markdown discount is $.50. 
calculateLocalOrderDiscountAmountTotal
—Calculates the total order discount 
amount (order discount amount plus manual adjustment credits) in the local currency. 
calculateLineItemsPriceOverride
—Captures price override amounts. This 
processor comes into use only if you are using ATG Commerce Service Center. 
calculateLineItemNetRevenue
—Calculates net revenue for individual line items 
using the following formula: 
Gross revenue + tax allocation + shipping allocation – line item discount 
- order discount allocation 
calculateOrderNetRevenue
—Sums the net revenue of all line items. This 
information is stored with the line item in the Data Warehouse, but is the same for all 
items in an order. 
calcluateLocalOrderNetRevenueTotal
—Sum of the order net revenue plus 
manual adjustment debits in the local currency. 
convertCurrency
—For all of the amounts in the pipeline to this point (gross net 
revenue, line item shipping allocation, etc.), converts the local currency to the 
standard currency. The 
standardCurrencyCode
property of the processor points to 
the 
/atg/reporting/datawarehouse/CommerceWarehouseConfiguration.standar
dCurrencyCode
, which identifies the standard currency; the default is USD. 
The actual conversion is done by the 
CurrencyTools
component. 
CurrencyTools
uses the 
ARF_CURRENCY_CONV
table in the Data Warehouse to look up the 
conversation rate for the day on which the order was placed, if one is available. 
Documents you may be interested
Documents you may be interested