c# wpf document viewer pdf : Add and delete pages from pdf SDK application service wpf html asp.net dnn ATGCommProgGuide25-part2102

ATG  C om mer ce P ro g ramm in g   Gui d e 
23 3  
13  -   Und ers t an d i ng   P rom o ti o n s 
μ
You can import promotions on either a production instance or an asset management instance. If the 
latter, the import automatically takes the form of a Content Administration project. This topic is addressed 
in the Configuring the PublishingWorkflowAutomator Component section. 
If you are using ATG Commerce to create and maintain promotions, but need to access them in a third-
party system, you can export your ATG promotions using a similar mechanism. In this case, you are 
responsible for understanding the your third-party system’s requirements. 
Architecture Overview 
The promotions import/export API relies mainly on the following two components: 
/atg/commerce/promotion/PromotionImportExport
—The main component 
used for importing and exporting promotions 
/atg/epub/PublishingWorkflowAutomator
—Used automatically when you 
import promotions into a versioned repository; you should never need to call this 
component yourself 
Supporting functionality is provided by the following additional components: 
/atg/commerce/promotion/PromotionImportExportTools
/atg/commerce/claimable/ClaimableTools
/atg/commerce/promotion/PromotionTemplateManager
In addition to these components, there are a number of classes used for importing and exporting 
promotions. 
PromotionImportExportInfo
is a data class used to transfer information between ATG Commerce and 
your external promotion management system (see Mapping Promotion Properties). You can use either 
PMDL version 1 (for promotions created before ATG 10, which do not use templates) or 2 (for template-
based promotions created with ATG 10 or later). 
See the ATG API Reference for detailed information on the other classes used for promotion import/export. 
Performing a Promotions Import or Export 
The 
PromotionsImportExport
component contains the main methods used for importing and 
exporting promotions. Both processes start and end with 
startImportExportSession()
and 
endImportExportSession()
methods. 
Warning: The 
atg.commerce.promotion.PromotionImportExport
class on which this component is 
based allows you to run multiple concurrent import/export sessions. However, it provides no safeguards 
against making multiple concurrent updates to a given repository item. 
The sections that follow describe the methods in this component at a high level. See the ATG API Reference 
for additional details. 
Add and delete pages from pdf - SDK application 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
Add and delete pages from pdf - SDK application 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 
23 4  
13  -  Un d ers t an d in g  P ro m ot i o ns  
startImportExportSession() 
To import promotions, first call 
startImportExportSession()
. This method sets up the import session, 
and must be called before doing the import itself. 
The method performs the following tasks: 
1.
If the session ID is not specified, the method generates a session ID randomly and 
creates a new 
PromotionImportExportSession
object. 
2.
The method retrieves the promotions repository, using the 
PromotionTools
component. 
3.
If the promotions repository is versioned, the method calls the 
PublishingWorkflowAutomator.startWorkflowSession()
method to set up the 
Content Administration project workflow. The 
PublishingWorkflowAutomator
performs the following tasks: 
Creates a new 
PublishingWorkflowSession
object 
Creates a project name by appending the session ID to the 
PublishingWorkflowAutomator
component’s 
projectNameStub
property, 
separated by a dash. The workflow is configured in the 
PublishingWorkflowAutomator
component; see Configuring the 
PublishingWorkflowAutomator Component
Performs the necessary interactions with Content Administration security 
Creates the process and workspace for the project 
4.
The method creates a new transaction in preparation for the import-export session. 
5.
The method checks the component’s 
integrators
property to establish whether or 
not any integrators have been configured. (See Using the 
PromotionImportExportIntegrator Interface.) For each configured integrator, call its 
preImportExportSession
method, passing the session object as a parameter. 
The method returns a 
PromotionImportExportSession
object. 
importPromotion() 
This method enables you to create or update an individual promotion and its associated items (such as 
closeness qualifiers, promotion folders, coupons, and coupon folders), depending on the action specified. 
Always make sure that you have a 
PromotionImportExportSession
object before using 
importPromotion()
The method performs the following tasks: 
1.
Creates a new 
PromotionImportExportStatus
object. 
2.
Checks the component’s 
integrators
property to establish whether or not any 
integrators have been configured. For each configured integrator, call its 
preImportPromotion
method, passing the session object and the promotion object, 
as parameters. 
SDK application service:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
In order to run the sample code, the following steps would be necessary. Add necessary references: How to VB.NET: Delete Consecutive Pages from PDF.
www.rasteredge.com
SDK application service:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
XDoc.PDF enables you to delete PDF page(s) with customized options, including a single page, a series of pages, and random pages to be Add necessary references
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
23 5  
13  -   Und ers t an d i ng   P rom o ti o n s 
The 
action
property on the 
PromotionImportExportInfo
object determines whether the repository 
item is created, updated, or deleted. Each item associated with the promotion also specifies its own 
action, but the available actions depend on the parent promotion’s action, as shown by this table: 
Promotion Action 
Supported Closeness 
Qualifier Actions 
Supported Coupon 
Actions 
ADD 
UPDATE 
DELETE 
DELETE 
UPDATE 
(none) 
(none) 
When adding promotions, property values from the template manager take precedence over the 
equivalent values specified in the 
PromotionImportExportInfo
object; for updates, the opposite holds. 
The method returns a 
PromotionImportExportSessionStatus
object. 
exportPromotionsById() 
This method enables you to export promotions by specifying a list of promotion item IDs (for an 
alternative export method, see the exportPromotionsByRQLQuery section. 
This method first calls the 
PromotionManager.getPromotionsById()
method using the specified list 
of promotion IDs (if the list is null, all promotions are returned). The 
getPromotionsById()
method 
returns a list of promotion repository items. The 
exportPromotionsById()
method then processes each 
of the returned promotion repository items as follows: 
1.
Create a 
PromotionImportExportInfo
object. 
2.
Populate the object’s 
promotionPropertyValues
templateId
and 
templateValues
properties from the promotion repository item. 
3.
Retrieve the promotion’s folder (if not null). 
4.
For each closeness qualifier in the 
closenessQualifiers
property of the promotions 
repository item, execute the following tasks: 
Call the 
PromotionImportExportTools.getClosenessQualifier()
method to get the 
closenessQualifier
repository item. 
Create a new 
ClosenessQualifierImportExportInfo
object. 
Populate its 
closenessQualifierPropertyValues
map from the repository 
item properties. 
Add the 
ClosenessQualifierImportExportInfo
object to the 
closenessQualifiers
list property in the 
PromotionImportExportInfo
object. 
5.
Call the 
ClaimableManager.getCouponsForPromotion()
method to retrieve the 
coupon details associated with the promotion. That method returns a list of coupon 
repository items. For each coupon item in the list, execute the following tasks: 
SDK application service:C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
C# Page: Insert PDF pages; C# Page: Delete PDF pages; C# Read: PDF Text Extract; C# Read: PDF Image Extract; C# Write: Insert text into PDF; C# Write: Add Image
www.rasteredge.com
SDK application service:C# PDF Page Insert Library: insert pages into PDF file in C#.net
processing control SDK, you can create & add new PDF rotate PDF document page, how to delete PDF page using NET, how to reorganize PDF document pages and how
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
23 6  
13  -  Un d ers t an d in g  P ro m ot i o ns  
Create a new 
CouponImportExportInfo
object and populate its 
couponPropertyValues
map from the repository item properties. 
If the coupon repository item’s 
parentFolder
property is not null, then call the 
ClaimableManager.getCouponFolderPath()
method. That method returns 
the full path for the coupon folder, which is used to set the 
couponFolderPath
property in the 
CouponImportExportInfo
object. 
Add the 
CouponImportExportInfo
object to the coupons list property in the 
PromotionImportExportInfo
object. 
6.
Add the 
PromotionImportExportInfo
object to the list to be returned to the caller. 
7.
Return the list of 
PromotionImportExportInfo
objects. 
exportPromotionsByRQLQuery 
This method enables the user to export promotions by specifying a list of promotion via an RQL query. 
This method calls the 
PromotionManager.getPromotionsByRQLQuery()
method to query the 
promotions item descriptor. The method returns a list of promotion repository items. Once the list of 
repository items has been returned the remaining processing is identical to that of the 
exportPromotionsById
method. 
endImportExportSession 
The 
endImportExportSession()
method ends your import session. The method performs the 
following tasks: 
1.
If the session ID is not specified, throws an exception. 
2.
Checks the component’s 
integrators
property to establish whether or not any 
integrators have been configured. (See Using the PromotionImportExportIntegrator 
Interface.) For each configured integrator, call its 
postImportExportSession
method, passing the session object as a parameter. In case of exceptions, the 
PublishingWorlflowAutomator
’s 
endWorkflowSession
method must be called to 
clean up the session. 
3.
Checks if the current transaction is marked for roll back; if it is, then the roll back is 
executed, otherwise, the transaction is committed. 
4.
If running against a versioned repository and the 
sessionStatus
is set to 
SESSION_ERROR
, the workflow session is rolled back by calling the 
abandonWorkflowSession
method on the 
PublishingWorkflowAutomator
component. 
If running against a versioned repository and the 
sessionStatus
is set to 
SESSION_OK
, then the workflow session is committed by calling the 
stopWorkflowSession
method on the 
PublishingWorkflowAutomator
component. 
After finishing the import, the workflow advances to the next stage. 
SDK application service:C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
www.rasteredge.com
SDK application service:VB.NET PDF Password Library: add, remove, edit PDF file password
passwordSetting.IsAssemble = True ' Add password to PDF file. These two demos will help you to delete password for an encrypted PDF file.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
23 7  
13  -   Und ers t an d i ng   P rom o ti o n s 
Mapping Promotion Properties 
The 
atg.commerce.promotion.PromotionImportExportInfo
data class provides a means by which 
you can map properties between ATG Commerce promotions and your external system. 
Property 
Required 
Type 
Description 
action 
Yes 
int 
The action is required for 
imports but is null when 
returning export information. 
The valid values are: 
ACTION_ADD 
ACTION_UPDATE
Note that there is no 
DELETE
action available for promotions. 
This means that you cannot 
accidentally delete promotions 
that are being used by 
merchandisers. 
promotionProper
tyValues 
No 
Map<String,String>  A map of promotion repository 
item property names and their 
corresponding values. 
If you are not using templates, 
specify the PMDL rule for the 
promotion in this map. If you 
are using templates, you can 
use the 
templateValues
map 
(see below in this table) to build 
the PMDL instead. 
Note: The 
templateId
and 
templateValues
properties 
are separated from other 
promotion properties, and do 
not need to be included in the 
map (see below in this table). 
SDK application service:VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Able to add and insert one or multiple pages to existing adobe PDF document in VB.NET. Add and Insert Multiple PDF Pages to PDF Document Using VB.
www.rasteredge.com
SDK application service:C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
23 8  
13  -  Un d ers t an d in g  P ro m ot i o ns  
promotionFolder
Path 
No 
String 
Promotions can be organized 
using a logical folder structure. 
This property specifies the full 
folder path. For example: 
“/Summer/Shoes” 
The Promotions Import Export 
API converts this path into 
individual promotion folders, 
creates those which do not 
already exist, and links them 
together into a tree structure. 
Note that no two children of the 
same parent folder can have the 
same name, but folders can 
have the same name if they are 
child folders of different parent 
folders. 
templateId 
No 
String 
If the promotion is based on a 
template, the path and filename 
of the template to use. 
templateValues 
No 
Map<String,String>  A map of template placeholders 
and their corresponding values. 
See any of the existing 
promotions templates for an 
understanding of this mapping. 
closenessQualif
iers 
No 
List<ClosenessQualif
ierImportExportInfo
A list of 
ClosenessQualifierImportE
xportInfo
objects. 
coupons 
No 
List<CouponImportE
xportInfo> 
A list of 
CouponImportExportInfo
objects. 
A similar class (
atg.commerce.promotion.ClosenessQualifierImportExportInfo
) exists for 
closeness qualifier information. 
SDK application service:VB.NET PDF insert image library: insert images into PDF in vb.net
with this sample VB.NET code to add an image to textMgr.SelectChar(page, cursor) ' Delete a selected As String = Program.RootPath + "\\" output.pdf" doc.Save
www.rasteredge.com
SDK application service:C# PDF Password Library: add, remove, edit PDF file password in C#
passwordSetting.IsAssemble = true; // Add password to PDF file. These C# demos will help you to delete password for an encrypted PDF file.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
23 9  
13  -   Und ers t an d i ng   P rom o ti o n s 
Property 
Required  Type 
Description 
action 
Yes 
int 
The action is required for 
imports but is null when 
returning export 
information. The valid values 
are: 
ACTION_ADD 
ACTION_UPDATE 
ACTION_DELETE 
closenessQualifierPr
opertyValues 
No 
Map<String,String>  A map of closeness qualifier 
repository item property 
names and their 
corresponding values. 
closenessQualifierTe
mplateValues 
No 
Map<String,String>  A map of template 
placeholders and their 
corresponding values, 
specifically for the closeness 
qualifier section of the 
template. 
A similar class (
atg.commerce.promotion.CouponImportExportInfo
) exists for coupon information. 
Property 
Required  Type 
Description 
action 
Yes 
int 
The action is required for 
imports but is null when 
returning export 
information. The valid values 
are: 
ACTION_ADD 
ACTION_UPDATE 
ACTION_DELETE 
couponPropertyValues  Yes 
Map<String,String>  A map of coupon repository 
item property names and 
their corresponding values. 
ATG  C om merce  P ro gra mm in g  G ui d e 
24 0  
13  -  Un d ers t an d in g  P ro m ot i o ns  
couponFolderPath 
No 
String 
Coupons can be organized 
using a logical folder 
structure. This property 
specifies the full folder path. 
For example: 
“/Summer/Shoes” 
The Promotions Import 
Export API converts this path 
into individual coupon 
folders, creates those which 
don’t already exist, and links 
them together into a tree 
structure. 
Note no two children of the 
same parent folder can have 
the same name, but folders 
can have the same name if 
they are child folders of 
different parent folders. 
Using the PromotionImportExportIntegrator Interface 
You can customize the import/export process by adding your own components and registering them 
with the 
PromotionImportExport
component. In order to be used automatically by the existing 
import/export classes, your components must implement the 
atg.commerce.promotion.PromotionImportExportIntegrator
interface. 
The interface includes four methods: 
preImportExportSession()
postImportExportSession()
preImportPromotion()
postImportPromotion()
Extending these methods allows you to insert your custom code at different points in the import process 
performed by the 
PromotionImportExport
component. 
After creating the component, configure the integrators property of the 
PromotionImportExport
component to add your new component: 
integrators=/Nucleus_path/to/custom/component 
Your components are inserted into the import process. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
24 1  
13  -   Und ers t an d i ng   P rom o ti o n s 
Configuring Import/Export Batching 
The import/export API supports transactional batching. The import API logically groups all items 
associated with an individual promotion, such as upsell qualifiers, folders, and coupons. This means that if 
an error occurs, you can roll back all items associated with that promotion. 
To change the batch size, in the 
/atg/commerce/promotion/PromotionImportExport
component, 
change the following property: 
batchSize=1 
The default is 1, so that each promotion (and its associated items, if any) is created in a separate 
transaction. This simplifies error recovery, but may impact performance. ATG recommends using the 
default setting unless performance is unacceptable, in which case you may want to increase the batch 
size. 
Configuring the PublishingWorkflowAutomator Component 
If you plan to use promotions import/export against a versioned repository, configure the 
/atg/epub/PublishingWorkflowAutomator
component to provide the desired information when it 
creates the ATG Content Administration project for your import or export. 
The 
PublishingWorkflowAutomator
is a generic component that provides a high level API for working 
with ATG Content Administration. The import/export API calls this component automatically when it 
detects that it is running against versioned repositories. Any repository actions carried out within the 
context of the import threads is associated with the ATG Content Administration project (after a call is 
made to 
startWorkflowSession
). 
You are likely to want to change the following properties: 
username
—Appended to the 
personaPrefix
to give the persona object ID 
workflowName
—Workflow name used when creating the process for the import 
taskOutcomeId
—Determines the task in the workflow to be advanced to after the 
import 
projectNameStub
—Stub name for the project; the full ATG Content Administration 
project name for the import is created by appending the 
sessionId
to this value 
For example: 
userName=publishing 
workflowName=/Content Administration/import-review.wdl 
taskOutcomeId=4.1.1 
projectNameStub=Promotion Import 
ATG  C om merce  P ro gra mm in g  G ui d e 
24 2  
13  -  Un d ers t an d in g  P ro m ot i o ns  
Performance Issues Related to Promotion Delivery 
In general, the more promotions a customer has in their profile, the longer it takes to generate a price for 
that customer. A customer can have hundreds of promotions without it significantly affecting the time it 
takes to price an item. However, performance is noticeably affected when a customer profile contains 
thousands of promotions. As a general rule, assign customers as few promotions as possible to 
accomplish the business goals for the site. 
Do not rely on promotions to do the bulk of price generation for a site. Use properties of the SKU (for 
example, the 
salePrice
property) to provide varied pricing. In general, if a promotion does not refer to 
information that might change from one request to another, there may be a more efficient way of 
implementing that promotion. 
For example, referring to a customer’s profile is an efficient way to structure a promotion. The profile will 
probably be different for every price being generated throughout the site, since many different customers 
will be using the site. 
It is not always efficient to refer to the date, or to other conditions that do not change on a request basis, 
as part of the promotion evaluation process. For example, consider a situation in which you put all black 
shoes on sale one week. Rather than creating a promotion that puts black shoes on sale and giving it to 
every customer, you could set the sale price of the black shoes in either the SKU repository or the 
underlying database. This way, the promotion is still applied, but no undue load is placed on the 
promotion evaluation engine. 
Documents you may be interested
Documents you may be interested