c# wpf free pdf viewer : Delete pages out of a pdf Library SDK component .net asp.net web page mvc ATGCommProgGuide49-part2128

ATG  C om mer ce P ro g ramm in g   Gui d e 
47 3  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il l men t  F ramewo rk 
μ
databases synchronized when it pertains to certain aspects of the order. For example, it is possible for a 
business that has several fulfillers to have each fulfiller use a different backend system. 
The control flow described earlier in this section clearly defines which components are responsible for 
order objects during different points in the fulfillment process. If one of the fulfillers makes a change to a 
shipping group for which it is responsible, the change is captured in a Modification, which is sent inside a 
ModifyOrderNotification
. For example, the fulfiller could change the state of a given item 
relationship to backordered. 
The 
ModifyOrderNotifcation
is received by all the systems that are listening for it and it is the 
responsibility of those systems to update back ends to keep all the systems synchronized. In ATG 
Commerce, all the repositories are accessible by all of the components. This eliminates the need to 
synchronize various disparate databases. However, if a customer requires that a disparate system make 
modifications to the order objects, the 
OrderFulfillerModificationHandler
would need to be 
augmented to reflect the changes reported by the 
ModifyOrderNotification
messages being sent by 
the disparate systems. 
UpdateInventory Class 
The 
UpdateInventory
message extends the 
CommerceMessage
class. It adds one property: 
itemIds
– a list of IDs of items that were previously unavailable (BACKORDERABLE, 
PREORDERABLE, or OUT_OF_STOCK) but now have stock available. 
UpdateInventory
is sent by a third party system, such as an inventory subsystem, to indicate that items 
are available. The 
HardgoodFulfiller
in ATG Commerce listens for these messages. The 
HardgoodFulfiller
queries the order repository for all shipping groups that contain items from the list 
that are in a preordered or backordered state. 
Modification Class 
Each 
ModifyOrder
and 
ModifyOrderNotification
message contains an array of 
Modification
objects. The 
Modification
class is the base class for each of these modification objects. All modifications 
represent some change to a specified Order. In the default implementation of ATG Commerce, there are 
four types of Modification objects: ADD, REMOVE, UPDATE, or SHIPPING_GROUP_UPDATE. Refer to 
GenericAdd
GenericRemove
GenericUpdate
, and 
ShippingGroupUpdate
for more information. 
Each Modification also targets a specific kind of object within an Order. For example, the Modification can 
remove a shipping group. The different possible targets are TARGET_ITEM, TARGET_SHIPPING_GROUP, 
TARGET_PAYMENT_GROUP, TARGET_ORDER, or TARGET_RELATIONSHIP. A status for each modification 
indicates success or failure. 
The 
IdTargetModification
and 
IdContainerModification
classes are two abstract subclasses of 
Modification. For more information, see the ATG API Reference. 
GenericAdd Class 
The 
GenericAdd
class is used to add a target specified by ID or value to a target specified by ID or value. 
For example: 
Add item by ID or value to shipping group by ID or value. 
Delete pages out of a 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
Delete pages out of a 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 
47 4  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il lm en t  Fram ewo rk 
Add item by ID or value to payment group by ID or value. 
Add item by value to order by ID. 
Add shipping group by value to order by ID. 
Add payment group by value to order by ID. 
These are the only valid combinations. Both the ID and the value should not be set for either the target or 
the container. Everything should be added to the order before it is used as either a target or container for 
another 
GenericAdd
For example if you are adding a new item, shipping group, and payment group, and want to add the item 
to both of the groups you would do the following: 
1.
Add the item to the order. 
2.
Add the shipping group to the order. 
3.
Add the payment group to the order. 
4.
Add the item to the shipping group. 
5.
Add the item to the payment group. 
GenericRemove Class 
The 
GenericRemove
class is used to remove an object specified by ID from a container specified by ID. If 
an item, shipping group, or payment group is removed from an order, it is removed from any 
relationships. 
GenericUpdate Class 
This class contains the information that describes a property change for an object. It contains the original 
value of the property (as a serializable Object) and the new value for the property. 
For example, to change the state of a 
ShippingGroup
from PENDING_SHIPMENT to 
NO_PENDING_ACTION (for example ship the shipping group): 
Set the 
targetId
of the 
GenericUpdate
to the ID of the shipping group to be 
shipped. 
Set the 
containerId
of the 
GenericUpdate
to the ID of the order containing that 
shipping group. 
Set the 
propertyName
of the 
GenericUpdate
to “state” to update the state property 
of the shipping group. 
Set the 
originalValue
to PENDING_SHIPMENT and set the new value to 
NO_PENDING_ACTION. 
If you included the resulting 
GenericUpdate
in a 
ModifyOrder
message and sent it to the 
OrderFulfiller
, the status of the given shipping group would change to reflect that it has shipped. 
Library SDK component:VB.NET PDF delete text library: delete, remove text from PDF file
Delete text from PDF file in preview without adobe PDF reader component installed. Able to pull text out of selected PDF page or all PDF document in .NET
www.rasteredge.com
Library SDK component:C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
VB.NET comment annotate PDF, VB.NET delete PDF pages, VB.NET can view PDF document in single page or continue pages. Support to zoom in and zoom out PDF page.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
47 5  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il l men t  F ramewo rk 
ShippingGroupUpdate Class 
This special Modification notifies the fulfillment system of any changes within a Shipping Group that 
happen externally. If the 
OrderFulfiller
receives a 
ModifyOrderNotification
with a 
ShippingGroupUpdate
Modification in it, the shipping groups listed in the Modification are reprocessed. 
This is a convenient way of notifying fulfillment of complex changes to an order. It contains an order ID 
and an array of shipping group IDs that have been updated. After receiving this message, the 
OrderFulfiller
forwards it to each of the appropriate fulfillers, who then reprocess the entire shipping 
group. 
PaymentGroupUpdate Class 
This special Modification notifies the fulfillment system of any changes within a 
PaymentGroup
that 
happen externally. 
OrderFulfiller Class 
The 
OrderFulfiller
receives the 
SubmitOrder
message, which marks the start of the fulfillment 
process. The fulfillment process relies on a persistent, durable JMS subsystem to deliver messages as they 
become available. There should be only one instance of an 
OrderFulfiller
in place to receive the 
SubmitOrder
message. The method invoked on the reception of a message is the 
receiveMessage
method. The method will determine what type of message was sent and call the appropriate handle 
method for that message type. 
The following methods handle the different messages: 
getModificationHandler().handleModifyOrder
– This method handles 
ModifyOrder
messages. The handling of 
ModifyOrder
messages is delegated to the 
ModificationHandler
class, which is configured as a property of the 
OrderFulfiller
getModificationHandler().handleModifyOrderNotification
– This method 
deals with 
ModifyOrder
messages. The handling of 
ModifyOrderNotification
messages is delegated to the 
ModificationHandler
class, which is configured as a 
property of the 
OrderFulfiller
handleNewMessageType
– This method is called if the types of the messages don’t 
match up to any of the above three types. By default, this is left as an empty method 
for future extensibility. 
handleSubmitOrder
- This method is called to handle all 
SubmitOrder
messages. It 
runs the 
handleSubmitOrder
pipeline chain. For more information, see Appendix G: 
Commerce Pipeline Chains
For information on the handling of 
ModifyOrder
and 
ModifyOrderNotification
messages, refer to 
the OrderFulfillerModificationHandler section. 
HardgoodFulfiller Class 
The 
HardgoodFulfiller
class receives the 
FulfillOrderFragment
message and begins the 
Fulfillment Process for the shipping groups listed within the message. This class is responsible for calling 
the appropriate pipeline chains. 
Library SDK component:C# PDF delete text Library: delete, remove text from PDF file in
Able to pull text out of selected PDF page or all PDF document in .NET WinForms. C#.NET PDF: Delete Text from Consecutive PDF Pages.
www.rasteredge.com
Library SDK component:VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Auto Fill-in Field Data. Field: Insert, Delete, Update Field. can view PDF document in single page or continue pages. Support to zoom in and zoom out PDF page.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
47 6  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il lm en t  Fram ewo rk 
When a shipping group is shipped, the warehouse notifies the 
HardgoodFulfiller
. The 
HardgoodFulfiller
then calls the appropriate pipeline chain to change the state of the shipping group 
and items within it and sends a 
ModifyOrderNotification
detailing the changes. For more information 
on fulfillment pipelines, see the Fulfillment Pipelines section of this chapter. 
ElectronicFulfiller Class 
The 
ElectronicFulfiller
is used to fulfill any type of good that is delivered electronically. Electronic 
goods should be associated with an 
ElectronicShippingGroup
. The 
ElectronicFulfiller
then 
fulfills the order by calling the appropriate pipeline chain. 
Currently, the only items that use the 
ElectronicFulfiller
are gift certificates. The 
ElectronicFulfiller
could be used to fulfill any item using the following two actions 
Create a claimable item in the claimable repository 
E-mail user notification (and a claim code) that they have something waiting for them. 
For more information on claimable items, see the Configuring Commerce Services chapter. 
Electronic goods are fulfilled differently than hard goods. Electronic goods can take on a variety of forms. 
ElectronicFulfiller
creates items in a repository. These items represent an electronic good that the 
user can then obtain. 
The 
ElectronicFulfiller
is responsible for fulfilling the order of various electronic goods. 
ElectronicFulfiller
fulfills electronic goods by performing two actions: 
Creating an entry in a repository that represents the electronic good that the user can 
purchase. 
Notifying a user that an electronic good is waiting for them to claim. 
By default, ATG Commerce includes a component called 
SoftgoodFulfiller
, which is located at 
/atg/commerce/fulfillment/SoftgoodFulfiller
. This component is an instance of the 
atg.commerce.fulfillment.ElectronicFulfiller
OrderFulfillmentTools Class 
The 
OrderFulfillmentTools
class contains methods that help create messages, modify objects, and 
manipulate the states in the Order, Shipping Groups, Payment Groups and relationships. 
This class is used by fulfillment pipelines. The 
OrderFulfillmentTools
class contains various 
convenience methods for commonly performed tasks in fulfillment. For more information, please refer to 
the ATG API Reference. 
The 
OrderFulfillmentTools
also maintains the mapping of fulfillers to port names. The 
OrderFulfiller
uses these ports to send 
FulfillOrderFragment
messages to the correct fulfiller. The 
OrderFulfiller
has a different output port for each fulfiller. Messages sent through these ports are 
written to a different topic for each fulfiller. It is important that each possible value of the fulfiller property 
of each item in the product catalog is included in this mapping. 
Library SDK component:C# WPF PDF Viewer SDK to view PDF document in C#.NET
Auto Fill-in Field Data. Field: Insert, Delete, Update Field. extract, copy, paste, C#.NET rotate PDF pages, C#.NET Abilities to zoom in and zoom out PDF page.
www.rasteredge.com
Library SDK component:VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
Auto Fill-in Field Data. Field: Insert, Delete, Update Field. extract, copy, paste, C#.NET rotate PDF pages, C#.NET Abilities to zoom in and zoom out PDF page.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
47 7  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il l men t  F ramewo rk 
OrderFulfillerModificationHandler Class 
The 
OrderFulfillerModificationHandler
class extends the 
ModificationHandler
interface. It is 
configured to handle the 
ModifyOrder
and 
ModifyOrderNotification
messages for the 
OrderFulfiller
class. The 
OrderFulfiller
class contains the 
ModificationHandler
property, 
which deals with both 
ModifyOrder
and 
ModifyOrderNotification
messages. To change the 
handling behavior of 
ModifyOrder
and 
ModifyOrderNotification
messages, extend the 
OrderFulfillerModificationHandler
class and change the 
ModificationHandler
property of 
OrderFulfiller
to point to the new class. 
The default implementation deals with the following 
ModifyOrder
modifications: 
Remove an order by sending a 
ModifyOrder
message containing a Modification of 
type REMOVE. The 
OrderFulfiller
receives this message. If the order and its 
shipping group are not in a NO_PENDING_ACTION state, then 
ModifyOrder
messages are sent to the various fulfillers handling the shipping groups. Every fulfiller 
who can cancel the shipping group responds by setting the state of the shipping 
group to PENDING_REMOVE. If all of the shipping group states are changed to 
PENDING_REMOVE, then the order state changes to REMOVED and all of the shipping 
group states can be changed to REMOVED. An order cannot be cancelled if any of its 
shipping groups have been shipped. If you attempt a 
GenericRemove
modification 
on an order that cannot be removed (for example, if one of the shipping groups in the 
order has shipped) then the order is set to PENDING_MERCHANT_ACTION. 
Notify the fulfillment system that a shipping group has shipped by sending a 
ModifyOrder
message with a 
GenericUpdate
that changes the state of the shipping 
group from PENDING_SHIPMENT to NO_PENDING_ACTION. The 
OrderFulfiller
will 
receive this message and forward it to the responsible fulfiller. For more information, 
see the GenericUpdate Class section. 
The default implementation deals with the following 
ModifyOrderNotification
modifications: 
Shipping group’s state changes to NO_PENDING_ACTION, 
PENDING_MERCHANT_ACTION, PENDING_REMOVE, or failure to change to 
PENDING_REMOVE. 
When a customer updates a shipping group, the 
OrderFulfiller
sends a 
ModifyOrderNotification
message to the fulfiller responsible for this shipping 
group. This forces a reprocessing of the shipping group. 
The ATG Commerce default implementation settles payment on first or last shipment of the shipping 
groups. You can configure when to charge payment in the 
SettleOnFirstShipment
property of the 
OrderFulfiller
. By default, charging takes place after the shipment of the last shipping group. The 
settlement is for the total value of the order. If settlement occurs on first shipment and a shipping group 
that hasn’t been shipped is cancelled, a credit must be issued for the items that were paid for but never 
shipped. 
The extendible infrastructure allows all types of 
ModifyOrder
messages and 
ModifyOrderNotifications
depending on your business requirements. 
Library SDK component:VB.NET PDF replace text library: replace text in PDF content in vb
installed. Able to pull text out of selected PDF page or all PDF document in VB.NET. VB.NET: Replace Text in Consecutive PDF Pages. Demo
www.rasteredge.com
Library SDK component:C# PDF Image Redact Library: redact selected PDF images in C#.net
Fill-in Field Data. Field: Insert, Delete, Update Field. extract, copy, paste, C#.NET rotate PDF pages, C#.NET NET control allows users to black out image in PDF
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
47 8  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il lm en t  Fram ewo rk 
HardgoodFulfillerModificationHandler Class 
The 
HardgoodFulfillerModificationHandler
deals with the 
ModifyOrder
and 
ModifyOrderNotifications
messages received by the 
HardgoodFulfiller
. The 
HardgoodFulfiller
contains a 
ModificationHandler
property, which is set by default to the 
HardgoodFulfillerModificationHandler
. This class is similar to the 
OrderFulfillerModificationHandler
To change the handling behavior of 
ModifyOrder
and 
ModifyOrderNotification
messages, extend 
the 
HardgoodFulfillerModificationHandler
class and change the 
ModificationHandler
property 
HardgoodFulfiller
to point to the new class. 
The default implementation deals with the following 
ModifyOrder
modification: 
Remove the shipping group from the order: 
The fulfillers can remove shipping groups if they have not been shipped. Determining 
whether a shipping group has been shipped can be difficult because of the 
asynchronous nature of shipping items. Consulting the states may not be enough to 
determine if the group has been shipped. ATG Commerce consults the state to make 
sure that it isn’t in a NO_PENDING_ACTION or REMOVED state. This is sufficient 
because in the default ATG Commerce configuration, there is no integration with a 
real warehouse so shipment is indicated by changing a set of states in the order 
repository. Some vendors might decide to create business rules that limit the time in 
which cancellations can occur because it is difficult to determine the exact shipping 
time for a shipping group. 
Ship the shipping group: 
The 
HardgoodFulfiller
can be notified that a shipping group has shipped through 
ModifyOrder
message (which is originally sent to the 
OrderFulfiller
, then 
forwarded to the 
HardgoodFulfiller
). The 
HardgoodFulfiller
gets a 
GenericUpdate
modification through the 
ModifyOrder
message, checks the current 
state of the shipping group to ensure that it is PENDING_SHIPMENT. If everything is 
fine, it sets the state to NO_PENDING_ACTION and notifies the rest of the system of the 
change with a 
ModifyOrderNotification
message. 
It also handles the following 
ModifyOrderNotification
modification: 
Shipping group update: 
A shipping group is re-processed when the method 
processMultipleShippingGroups
in 
HardgoodFulfiller
is called. This method is 
called when a modification of type SHIPPING_GROUP_UPDATE is received. The 
HardgoodFulfiller
does not listen on the topic over which 
ModifyOrderNotification
messages are sent. Instead, the 
OrderFulfufiller
listens on that topic and forwards the appropriate messages directly to the 
HardgoodFulfiller
using the port in defined in 
OrderFulfillmentTools.fulfillerPortNameMap
Library SDK component:VB.NET PDF- HTML5 PDF Viewer for VB.NET Project
VB.NET extract PDF pages, VB.NET comment annotate PDF, VB.NET delete PDF pages, VB.NET PDF Viewer, such as rotate PDF page and zoom in or zoom out PDF page.
www.rasteredge.com
Library SDK component:VB.NET PDF Text Extract Library: extract text content from PDF
Extract highlighted text out of PDF document. Image text extraction control provides text extraction from PDF images and image files.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
47 9  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il l men t  F ramewo rk 
Using Locking in Fulfillment 
An important concept in the message processing in the fulfillment process is that no component should 
handle more than one message per order at any given time. 
For example, a component is currently handling a 
ModifyOrderNotification
message for 
orderId
‘1234’ and a 
ModifyOrder
message for 
orderId
‘1234’ is received during processing. The 
ModifyOrder
message blocks and waits until the first message finishes running. This does not prohibit any messages 
that come for another 
orderId
from being processed. This is accomplished with locking and the 
ClientLockManager
. All fulfillment components use the lock manager located at 
/atg/dynamo/service/ClientLockManager
The lock acquired is for the key that is returned by the method 
getKeyForMessage
in 
OrderFulfiller
and 
HardgoodFulfiller
. The default implementation returns the 
orderId
specified in the message. 
This method can be overridden if the key to determine the locking needs to be changed but you want to 
preserve the principle of having one message per key/message at a time. 
The design of the 
OrderFulfiller
and the 
HardgoodFulfiller
uses the 
ClientLockManager
to 
prevent one component from processing messages for two different orders at the same time. Extending 
the 
ModificationHander
for either class does not require any locking changes. The only time you 
should be concerned with locking is if the 
HardgoodFulfiller
is not extended when a fulfiller class is 
created. 
Note: Every 
ClientLockManager
(one per ATG Commerce instance) should be configured to point to 
the ATG Commerce instance running the 
ServerLockManager
. Every ATG Commerce component should 
use the same 
ClientLockManager
. For more information on the 
ServerLockManager
, see the SQL 
Repository Caching chapter in the ATG Repository Guide
The following example demonstrates how the lock manager is used: 
TransactionDemarcation td = new TransactionDemarcation(); 
try { 
td.begin(getTransactionManager(), td.REQUIRED); 
getClientLockManager().acquireWriteLock(pOrderId); 
LockReleaser lr = new LockReleaser(getClientLockManager(), 
getTransactionManager().getTransaction()); 
lr.addWriteLock(pOrderId); 
<insert your code here> 
catch (DeadlockException de) { 
if(isLoggingError()) 
logError(de); 
return false; 
catch (LockManagerException lme) { 
if(isLoggingError()) 
logError(lme); 
ATG  C om merce  P ro gra mm in g  G ui d e 
48 0  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il lm en t  Fram ewo rk 
return false; 
catch(TransactionDemarcationException t) { 
if(isLoggingError()) 
logError(t); 
return false; 
finally { 
try { 
td.end(); 
catch(TransactionDemarcationException tde) { 
if(isLoggingError()) 
logError(tde); 
The 
LockReleaser
registers each lock with the transaction. The lock is released when the transaction 
ends. Because of this, it is imperative that a transaction be in place when the 
LockReleaser
is created. 
This is the reason for all the code using 
TransactionDemarcation
. For more information on 
transactions, see the Transaction Management chapter in the ATG Programming Guide
Using the OrderFulfiller Interface 
The 
OrderFulfiller
is the interface to the fulfillment system through which all other systems 
communicate. Messages intended for any object within fulfillment are sent to the 
OrderFulfiller
first. 
The 
OrderFulfiller
calls the appropriate fulfillment pipeline, which forwards the message to the 
appropriate place. This section describes the functionality of the 
OrderFulfiller
There is only one instance of the 
OrderFulfiller
. Order fulfillment begins when the 
OrderFulfiller
receives the 
SubmitOrder
message containing an order. Three things happen when the 
OrderFulfiller
receives the 
SubmitOrder
message: 
1.
The states of the order and each shipping group are set to 
PROCESSING
2.
OrderFulfiller
determines the fulfiller for each shipping group. If the items in a 
shipping group have more than one fulfiller then that shipping group is split. After the 
split, each shipping group can be fulfilled by exactly one fulfiller. 
3.
The 
OrderFulfiller
creates 
FulfillOrderFragment
messages and sends the 
messages to each fulfiller. These messages include the shipping group IDs that the 
fulfiller is responsible for fulfilling. For details on what the fulfiller does with that 
message, see the Using the Fulfiller section. 
After sending the 
FulfillOrderFragment
messages, 
OrderFulfiller
relinquishes control of the order 
until the fulfiller has performed all necessary functions. The 
OrderFulfiller
listens for all 
ModifyOrderNotification
messages for events notifying it that the fulfiller is finished. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
48 1  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il l men t  F ramewo rk 
The following situations describe how the 
OrderFulfiller
regains control of an order: 
If the shipping group’s state is set to 
PENDING_MERCHANT_ACTION
, the 
OrderFulfiller
will set the order’s state to 
PENDING_MERCHANT_ACTION
. The 
customer service representative or someone representing the merchant must change 
this state back to 
PROCESSING
. The system should then be notified (through a 
ShippingGroupUpdate
) message to reprocess each shipping group. 
The shipping group’s state is set to 
NO_PENDING_ACTION
after that shipping group is 
shipped to the customer. The 
OrderFulfiller
checks if the order can be settled and 
cost of the order can be charged to the customer. This is done with a method in 
OrderFulfillmentTools
called 
isOrderSetttleable
. ATG Commerce allows 
orders to be settled at one of two points: after the first shipping group has shipped, or 
after all the shipping groups have shipped. This behavior can be configured through a 
property in the 
OrderFulfiller
OrderFulfiller.settleOnFirstShipment 
The default value of this property is false. If the order can be settled, then the following 
method is called: 
protected void settleOrder(Order pOrder, List 
pModificationList) throws PaymentException
This method uses the 
PaymentManager
to debit each 
PaymentGroup
in the order. 
After determining settlement, the 
OrderFulfiller
uses the
isOrderFinished
method in 
OrderFulfillmentTools
to determine if the order is complete. 
OrderFulfillmentTools.isOrderFinished
returns true if all the shipping groups 
are in a 
NO_PENDING_ACTION
state and all the 
PaymentGroups
are in a 
SETTLED
state. 
If the order is finished, the 
OrderFulfiller
calls the following method: 
protected void finishOrder(Order pOrder, List 
pModificationList) 
This sets the order into a 
NO_PENDING_ACTION
state, indicating that all processing on this order is 
complete. 
Using the Fulfiller 
ATG Commerce includes two fulfiller objects: the 
HardgoodFulfiller
and the 
ElectronicFulfiller
This section will describe how fulfillers are used in the fulfillment process, how to replace a fulfiller, or add 
a new fulfiller of your own. Most of the examples in this section refer to the 
HardGoodFulfiller
. For 
information on the 
ElectronicFulfiller
, see the ElectronicFulfiller Class section. 
The fulfiller’s responsibility for an order begins with the receipt of the 
FulfillOrderFragment
message. 
Prior to this, the 
OrderFulfiller
owns the order. The first method called is: 
ATG  C om merce  P ro gra mm in g  G ui d e 
48 2  
20  -  C o n fi g u rin g   t he  O rd er  Ful f il lm en t  Fram ewo rk 
public void receiveMessage (String pPortName, Message pMessage) 
throws JMSException 
This method is inherited from the 
MessageSink
interface. 
HardgoodFulfiller
is actually a subclass of 
SourceSinkTemplate
, which implements the 
MessageSink
. For more information, see the ATG API 
Reference. All that this method does is get the JMS object message that was sent, check the contained 
objects type and call the appropriate method. In the case of a 
FulfillOrderFragment
message, the 
method called is: 
public void handleFulfillOrderFragment(String pPortName, 
ObjectMessage pMessage) throws JMSException 
This method begins the processing of each shipping group included in the 
FulfillOrderFragment
(
pMessage
in the signature above). 
Notifying the HardgoodFulfiller of a Shipment 
The 
HardgoodFulfiller
can be notified that a shipping group has been shipped in three different ways. 
All three methods call 
shippingGroupHasShipped
of the 
HardgoodFulfiller
. This takes the order ID 
and the shipping group ID. 
/atg/commerce/admin/en/fulfillment/ShippableGroups.jhtml
is a Dynamo 
Server Page where the order and shipping group IDs can be specified. This page only 
lists shipping groups whose state is 
PENDING_SHIPMENT
and whose 
shipOnDate
is 
the current date or earlier (or null). This page also allows you to print an order and 
notify fulfillment of an order’s shipment. For more information of the ATG Commerce 
Fulfillment Administration section of the ATG Commerce Guide to Setting Up a Store
The 
atg.commerce.fulfillment.HardgoodShipper
method is a scheduled service 
that can be scheduled to run when it is convenient for the store. For instructions on 
setting up a scheduled service, see the Scheduler Services section of the Core Dynamo 
Services chapter of the ATG Programming Guide. This service will process shipping 
groups whose state is 
PENDING_SHIPMENT
and whose 
shipOnDate
is the current date 
or earlier (or null). 
Note: Start the 
HardgoodShipper
by setting the 
hardgoodShipper
property in the 
HardgoodFulfiller
component. The 
HardgoodFulfiller
component is located in 
the Nucleus path: 
atg/commerce/fulfillment
. If you change the 
HardgoodShipper
schedule, you must redeploy the application that includes the 
fulfillment server. See the Running the Fulfillment Server section for more information. 
Send a 
ModifyOrder
message with a 
GenericUpdate
modification to the 
OrderFulfiller
setting the state of a shipping group to 
NO_PENDING_ACTION
. The 
OrderFulfiller
will forward this message to the appropriate fulfiller. 
The scheduled service queries the repository for all shipping groups with the state PENDING_SHIPMENT. It 
then calls the 
shippingGroupHasShipped
of the 
HardgoodFulfiller
Documents you may be interested
Documents you may be interested