c# wpf free pdf viewer : Acrobat export pages from pdf Library SDK component .net wpf html mvc ATGCommProgGuide57-part2137

ATG  C om mer ce P ro g ramm in g   Gui d e 
55 3  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
μ
Time stamp 
Dynamo path to the repository. 
Type of item that changed. 
Repository item ID for the changed item. 
Change type (insert, update, or delete) 
The 
UserEventListener.properties
file includes several configurable properties that allow you to 
filter out information you do not want to log. The 
sourceRepositoryPathToItemDescriptorNames
property specifies which repository items have change information logged for them: 
sourceRepositoryPathToItemDecriptorNames=\ 
/atg/userprofiling/ProfileAdapterRepository=user;contactInfo 
The 
excludedEventTypes
property allows you to filter out change types that you do not want logged. 
There are four types of change event: UPDATE, DELETE, INSERT, and CACHE_INVALIDATE. By default, 
CACHE_INVALIDATE is excluded from logging. The property is set as follows: 
excludedEventTypes=CACHE_INVALIDATE 
The 
itemDescriptorToPropertyNames
property allows you to explicitly identify which properties you 
want to log UPDATE changes for: 
itemDescriptorToPropertyNames=\ 
/atg/userprofiling/ProfileAdapterRepository:user=login 
The following is an example of the user log: 
10/19/2006 10:08:39     /atg/userprofiling/ProfileAdapterRepository 
user     711     insert 
10/19/2006 10:10:39     /atg/userprofiling/ProfileAdapterRepository 
user     735     insert 
10/19/2006 10:10:39     /atg/userprofiling/ProfileAdapterRepository 
user     1710002     update 
Segment Data Logging 
Segments (also known as profile groups) represent different groups in your customer base. To log 
segment data for reporting, the 
/atg/reporting/datacollection/userprofiling/SegmentChangeListenerService
listens for 
ConfigurationEvents
. These events occur when updates, deletions, or insertions are made to 
segments. The listener sends details of segment changes to the 
/atg/reporting/datacollection/userprofiling/SegmentFileLogger
via a data collection 
queue. The 
SegmentFileLogger
creates the log entry. 
The 
segment_
timestamp_unique id
.data
file contains the following logged information: 
Timestamp 
Acrobat export pages from pdf - Library SDK component: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
Acrobat export pages from pdf - Library SDK component: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 
55 4  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
Name of the repository to which segments are bound within the repository group 
container, specified in 
/atg/registry/RepositoryGroups
Item type, which is always 
segment
repository:name
combination, which uniquely identifies the segment. For 
example, 
UserProfile:HighValueCustomers
Change type (INSERT, UPDATE, or DELETE) 
Segment name 
Segment description from the 
serviceInfo
property of the associated Nucleus 
component 
The following is an example of the segment log: 
10/19/2006 20:46:01  UserProfiles  segment  UserProfiles:DiscountShopper 
INSERT  DiscountShopper  "Prefers sale items" 
10/19/2006 21:46:10  UserProfiles  segment  UserProfiles:DiscountShopper 
UPDATE  DiscountShopper  "Only sale items" 
10/19/2006 21:50:13  UserProfiles  segment  UserProfiles:DiscountShopper 
DELETE  DiscountShopper  "Only sale items" 
Data Logging Configuration 
This section describes those aspects of logging configuration that apply to all logging components. 
Enabling Data Logging 
Logging components can be enabled individually or as a group. By default, the 
enabled
property of each 
individual file logger is set to refer to the 
enabled
property of an 
/atg/dynamo/service/
component. 
Therefore, data collection for the product catalog can be enabled by setting the 
enabled
property of the 
/atg/dynamo/service/DeploymentDWDataCollectionConfig
component to 
true
. Data collection 
for all other file loggers can be enabled by setting the 
enabled
property of the 
/atg/dynamo/service/DWDataCollectionConfig
component to 
true
Changing the 
enabled
property of either component affects all of the loggers that point to that 
component. After enabling any disabled logging component, you must restart the ATG instance to begin 
logging. 
Configuring Log File Rotation 
You can schedule file rotation using the 
schedule
property of each of the individual file logging 
components. For example, to rotate the segment fie log hourly, in the 
/atg/reporting/datacollection/userprofiling/SegmentFileLogger.properties
set the 
following: 
schedule=every 1 hour without catch up 
For information on how to specify a schedule, see the Scheduler Services section of the Core Dynamo 
Services chapter in the ATG Programming Guide
Library SDK component:C# PDF Converter Library SDK to convert PDF to other file formats
Able to export PDF document to HTML file. C#.NET can manipulate & convert standard PDF documents in other external third-party dependencies like Adobe Acrobat.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
55 5  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
You can use the 
dataItemThreshold
of each component to trigger log rotation when the specified 
number of log records is exceeded. If you set both properties, the log will be rotated whenever it exceeds 
the 
dataItemThreshold
and at the scheduled time, as long as the log file contains at least one log entry. 
By default, the loggers are scheduled to rotate as follows: 
Product Catalog—Every 15 minutes 
User—Hourly 
Segment--Hourly 
Site Visit—Hourly 
Order--Hourly 
Configuring Timestamp Formats in Log Entries 
To change the timestamp formatting in log entries, edit the 
formatFields
property in the file logging 
component. For example, to change the timestamp format for the user file logger, edit the 
timestampDateFormat
property in 
/atg/reporting/datacollection/userprofiling/UserFileLogger.properties
timestampDateFormat=MM-dd-yyyy_HH-mm-ss-SS 
Configuring Log File Location 
Both the logging and file loading components need to know the location of the log files. Both 
components must be configured to point to the same physical location, though the logical names may 
differ depending on your network configuration. 
The log file location is configured by the 
defaultRoot
property in all logging and loading components. 
By default, all of these components are configured to refer to the 
<ATG10dir>/home/server/
server_name/
logs
directory. 
Initial Data Logging for Catalogs, Users, and Segments 
For catalogs, users, and segments, in order for reporting to be useful you need a warehouse record of the 
initial state of the data. To create this initial record, you can do one of two things. 
On the Dynamo Administration page, invoke the 
doWalk
method of the 
/atg/reporting/datawarehouse/service/UserService
and 
/atg/reporting/datawarehouse/service/ProductCatalogService
components, and the 
bulkLoad
method of the 
/atg/reporting/datacollection/userprofiling/SegmentChangeListener 
Service
Note: Before you can use this method, you must set the 
enabled
property of the 
/atg/dynamo/service/LogRotationMessageSource
component to 
true
. You can 
disable it again when initial logging is finished. See the JMS Message Information for 
Data Logging section for more information on this component. 
ATG  C om merce  P ro gra mm in g  G ui d e 
55 6  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
If you use ATG Content Administration, you can do a full deployment of your catalog. 
This creates a log entry for every catalog item, which is then treated as a change and 
loaded into the Data Warehouse. 
Note: Either method will take considerable time, especially if you have a large catalog. 
The 
UserService
and 
ProductCatalogService
components walk the entire product catalog and user 
repository and write a log entry for each item, with a null timestamp and an event type of 
INSERT
. The 
regular data loading process can then load the data into the Data Warehouse. 
Both components must be configured with the repository to be loaded and the item descriptors to 
include in the walk. For example, in 
UserService.properties
, configure the following: 
repository=/atg/userprofiling/ProfileAdapterRepository 
itemDescriptorNames=user 
For 
ProductCatalogService.properties
, configure the following: 
repository=/atg/commerce/catalog/ProductCatalog 
itemDescriptorNames=category,product,sku,promotion 
No configuration is required for 
SegmentChangeListenerService
JMS Message Information for Data Logging 
ATG Commerce includes the Patch Bay configuration required for data logging. Logging components use 
the 
messageSource
property to specify a component to use as the source for logging messages, as 
shown in this example: 
messageSource=/atg/dynamo/service/LogRotationMessageSource 
The 
LogRotationMessageSource
component is responsible for sending out logging-related JMS 
messages. The message source definition for this component in 
dynamoMessagingSystem.xml
is: 
<message-source> 
<nucleus-name> 
/atg/dynamo/service/LogRotationMessageSource 
</nucleus-name> 
<output-port> 
<port-name> 
DEFAULT 
</port-name> 
<output-destination> 
<provider-name> 
local 
</provider-name> 
<destination-name> 
localdms:/local/Reporting/LogRotation 
ATG  C om mer ce P ro g ramm in g   Gui d e 
55 7  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
</destination-name> 
<destination-type> 
Queue 
</destination-type> 
</output-destination> 
</output-port> 
</message-source> 
The message sink for the 
localdms:/local/Reporting/LogRotation
queue has the following 
configuration: 
<message-sink> 
<nucleus-name> 
/atg/reporting/datawarehouse/loaders/LogRotationSink 
</nucleus-name> 
<input-port> 
<port-name> 
DEFAULT 
</port-name> 
<input-destination> 
<provider-name> 
local 
</provider-name> 
<destination-name> 
localdms:/local/Reporting/LogRotation 
</destination-name> 
<destination-type> 
Queue 
</destination-type> 
</input-destination> 
</input-port> 
</message-sink> 
The table that follows lists the 
logRotationMessageType
for each logging component: 
Logging Component 
Message Type 
OrderFileLogger 
atg.reporting.submitOrder 
ProductCatalogLogger 
atg.reporting.productCatalogUpdate 
SegmentFileLogger 
atg.reporting.segmentUpdate 
SiteVisitFileLogger 
atg.reporting.siteVisit 
UserFileLogger 
atg.reporting.userUpdate 
UserServiceFileLogger 
atg.reporting.userUpdate 
ATG  C om merce  P ro gra mm in g  G ui d e 
55 8  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
ProductCatalogServiceFileLogger  atg.reporting.productCatalogUpdate 
Loading Data for Commerce Reporting 
As discussed in the previous section, data logging for Commerce Reporting occurs in the ATG production 
environment on which the Commerce site runs. Much of the logging occurs in real time as customers use 
the site. Loading data into the Data Warehouse is performed in a separate ATG environment, typically (but 
not necessarily) running on a different group of physical servers. These data loader environment instances 
do not handle customer requests; their primary purpose is to process data from the log files and load it 
into the Data Warehouse. Unlike logging, the loading process is not performed in real time. It is run on a 
regular schedule, typically once a day. 
For each type of log file, the data loader environment has a data loader component. When one of these 
loader components is run, it claims a log file from a queue, then parses the entries in the file in batches, 
using the Data Warehouse Loader Repository to track the progress of the load operation. The loader 
component hands off the batches to a pipeline driver component, which parses the data and passes it to 
a processor pipeline. The pipeline processes the data and stores it in the Data Warehouse. 
Data Loader Components 
For each type of log file, there is a corresponding data loader component. These components are all of 
class 
atg.reporting.datawarehouse.loader.Loader
, and are located in the 
/atg/reporting/datawarehouse/loaders/
Nucleus folder. The loader components are: 
OrderSubmitLoader
ProductCatalogLoader
SegmentLoader
SiteVisitLoader
UserUpdateLoader
The following table summarizes the key properties of the loader components. Some of these properties 
are described in more detail below the table: 
Property 
Description 
charset 
The character set used for the log files. The default value is null, which 
means the loader expects the log files to be encoded with the 
character set specified by the JVM 
file.encoding
system property. 
Typically you should not need to change the value of this property. 
defaultRoot 
The directory path to the location of the log files. The default is 
logs/
See Specifying the Location of Log Files for more information. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
55 9  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
noLoadSleepMillis 
The number of milliseconds to wait if, during the loading process, the 
loader determines that there are no log files currently ready to be 
loaded. After the interval specified by this property, the loader will 
check whether any new log files are ready to be loaded. This process is 
repeated until the loader shuts down. The default is 
600000
(ten 
minutes). See Specifying the Loading Schedule for more information.
loadStatusListeners 
The component to use for archiving log files when a successful load 
completion event is detected. 
LogFileDeleteListener
—Deletes the log file. 
LogFileMoveListener
—Moves the log file to the destination 
directory you specify (can be used to rename the file at the same time). 
LogFileGZipListener
—Leaves the file in its original location and 
creates a .zip archive. This is the default component. 
You can write your own component based on 
LogStatusListener
if 
you require other archiving behavior. 
pipelineDriver 
The Nucleus pathname of the pipeline driver component that the 
loader passes log file lines to for processing. The default value is 
different for each loader component. See Pipeline Drivers and 
Processors for more information. 
queueName 
A String that identifies the queue from which the loader reads log files. 
Each loader component has a different default value for this property. 
For example, the default value of the 
queueName
property of the 
OrderSubmitLoader
component 
is 
atg.reporting.submitOrder
; for the 
SegmentLoader
component, 
it is 
atg.reporting.segmentUpdate
. You should not need to 
change the value of this property. 
runSchedule 
CalendarSchedule
that specifies the schedule for starting up the 
loader. See Specifying the Loading Schedule for more information.  
skipRecordOnError 
If set to 
true
, if the data loader encounters an error while loading a log 
file, it skips the record that caused the error and moves on to the next 
record. 
Caution: A record that causes a loading error can indicate a serious 
problem, and should be investigated. Under normal circumstances, 
this flag should be 
false
stopSchedule 
CalendarSchedule
that specifies the schedule for shutting down 
the loader. See Specifying the Loading Schedule for more information.  
transactionBatchSize 
Specifies the number of lines in a log file to process as a single 
transaction. Default is 
100
ATG  C om merce  P ro gra mm in g  G ui d e 
56 0  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
Note: Data loading for Commerce Search information is done by the existing Search loading components; 
see Search Loader Components in the ATG Search Administration Guide 
Specifying the Loading Schedule 
The 
Loader
class implements the 
Schedulable
interface, which enables it to be run automatically on a 
specified schedule. By default, each loader component is configured to start up once a day and run for a 
period of several hours. When a loader first starts up, it checks the corresponding queue to see if there are 
entries for any log files. If so, the loader claims an entry and begins to process the file. When it finishes 
processing the file, the loader checks the queue again, and if there are any more entries, claims another 
entry and processes that file. This process continues until there are no more entries in the queue. 
If there are no entries in the queue, the loader sleeps for a specified period of time, and then checks again. 
If at this point the queue is still empty, the loader sleeps again. This process continues until a specified 
time, at which point the loader stops checking and waits until the next scheduled start time. 
The schedule for starting up the loader is specified by the component’s 
runSchedule
property. This 
property is a 
CalendarSchedule
object that is set by default to run the loader once each day. The 
schedule for shutting down the loader is specified by the component’s 
stopSchedule
property. This 
property is also a 
CalendarSchedule
object, and is set by default to shut down the loader once each 
day, several hours after the component starts up. You can change these settings to run the loader on a 
different schedule. 
The period of time (in milliseconds) that the loader sleeps if there are no entries in the queue is set by the 
component’s 
noLoadSleepMillis
property. The default value of this property is 
600000
(equivalent to 
10 minutes). 
For more information about scheduler components and properties, and the syntax used to set those 
properties, see the Core Dynamo Services chapter of the ATG Programming Guide
Specifying the Location of Log Files 
The data loaders may be running on a different machine (or group of machines) from the production site 
that creates the log files. Therefore the machines will typically use some file-sharing mechanism such as 
NFS, and thus may require different pathnames to access the same files. For example, the directory 
/u1/logfiles/
on the production environment might be accessed as 
/nfs/livesite/u1/logfiles/
on the loader environment. 
To make it easier to share files, the loggers and loaders always specify files relative to a root location, 
rather than using absolute paths. You configure each component to point to this root location by setting 
the component’s 
defaultRoot
property to the correct pathname for the machine the component is 
running on. In the example above, you would set 
defaultRoot
for the loggers to 
/u1/logfiles/
, and 
set 
defaultRoot
for the loaders to 
/nfs/livesite/u1/logfiles/
Loading Existing Order Data from a Repository 
If you have existing order data in a repository and you want to load into the Data Warehouse for 
reporting, you can use the OrderRepositoryLoader to do so. This component treats the data in your order 
repository as if it were a log file and loads it accordingly. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
56 1  
25  -  P repari n g  t o   Us e C o mm erce  R eport i n g  
This component uses the same 
SubmitOrder
pipeline chain as the 
OrderSubmitLoader
, but is managed 
by the 
OrderRepositoryPipelineDriver
component. 
To use the 
OrderRepositoryLoader
, first start the 
OrderRepositoryPipelineDriver
component. 
You can either start this component in the ACC, or enter the following browser path to start it in the 
Dynamo Admin UI: 
http://host:port/dyn/admin/nucleus/atg/reporting/datawarehouse/ 
loaders/OrderRepositoryPipelineDriver 
In the Admin UI, go to 
/atg/reporting/datawarehouse/loaders/OrderRepositoryPipelineDriver
. In the text field, 
enter an RQL statement corresponding to a query against the order repository. Check the Preview box if 
you want to see how many records will be retrieved before actually processing the orders. 
The 
OrderRepositoryPipelineDriver
includes the following configurable properties: 
skipRecordOnError
—If set to 
true
, the component skips any records for which 
processing results in an error. The default is false. 
errorDataListener
—Set this property to a component that implements the 
atg.service.datacollection.DataListener
interface. If 
skipRecordOnError
is 
true
, the driver notifies this component when an error occurs. The record that 
produced the error is added to the 
DataListener
When you click Submit, the query is issued against the repository. For each result, the component creates 
a new pipeline parameter object and sends that object down the pipeline, just as if it were a line item in a 
log file. 
The Dynamo Admin UI keeps a count of how many records have been processed out of the total 
retrieved. 
Note: The following data is not included for orders in the repository, and has the values indicated: 
Session ID—Null 
Site visit—Unspecified 
SegmentclusterID—Unspecified 
These fields are not populated in the Data Warehouse when loading existing orders. This may affect the 
conversion rate as it appears in reports, because that calculation relies on the session ID. 
Configuring the Data Warehouse Time Zone 
In addition to data loaders for orders, site visits, etc., there are other loaders whose purpose is to add 
information that is static, rarely-changing, or not site-dependent to the Data Warehouse. One such loader 
is the 
TimeRepositoryLoader
, which populates the ARF_TIME_YEAR, ARF_TIME_MONTH, etc. tables 
(see the ATG Customer Intelligence Data Warehouse Guide for information). 
The 
TimeRepositoryLoader
is run by the 
TimeRepositoryLoaderJob
, a scheduled service that runs 
every two weeks by default. When the job runs, the loader populates the next two weeks worth of days 
into the appropriate tables. For example, if the loader runs on December 20, it loads the next fourteen 
ATG  C om merce  P ro gra mm in g  G ui d e 
56 2  
25  -  P reparin g   t o  Us e  C om merce  R epo rt in g  
days, two weeks, one month, and one year into the ARF_TIME_DAY, ARF_TIME_WEEK, ARF_TIME_MONTH, 
and ARF_TIME_YEAR Data Warehouse tables respectively. 
The 
TimeRepositoryLoader
includes a 
datetimezoneID
property, which identifies the time zone to 
use when loading this data. The default is UTC, meaning that, if an order is loaded into the warehouse, the 
date and time of that order’s placement are converted from the values used in the order repository to the 
UTC equivalent, and the UTC times are used in reports. 
Data Warehouse Loader Repository 
The data loaders manage the Data Warehouse Loader Repository, which keeps track of the progress of 
data loading. This repository has three item types, described in the following table: 
Item Type 
Properties 
queue 
name
(string) 
entries
(set of 
queueEntry
items) 
queueEntry 
filename
(string) 
queue
(
queue
item) 
creationDate
(timestamp)
loaderProgress 
filename
(string) 
queue
(
queue
item) 
startTimestamp
(timestamp) 
endTimestamp
(timestamp) 
status
(enumerated; 1 -- “in progress”, 2 – “failed”, 3 –”done”) 
statusDetail
(string) 
owner
(string) 
recordsProcessed
(int) 
There is one 
queue
repository item for each queue type tracked in the repository. For example, there is 
one 
queue
item for the order submission queue, and one for the site visit queue. The 
queue
item for a 
specific queue is created the first time a log file for the queue is rotated. 
The loading process for a specific queue works like this: 
1.
The data loader determines that there is an entry for a log file in the queue. 
2.
The loader creates a new 
loadProgress
repository item for the file, setting the item’s 
status
property to “in progress,” and setting its 
recordsProcessed
property to 0 
(zero). 
3.
The loader deletes the 
queueEntry
repository item for the file. 
4.
The loader uses the 
ClientLockManager
to acquire a lock on the 
loadProgress
item. 
5.
The loader creates a new transaction. 
Documents you may be interested
Documents you may be interested