You can do some more refinements on this example. For example, one extension we can do is in receiving payments from the customers. The customers will pay against the shipping notes that we are sending them. So when we deliver the books we receive the custom payments from the customer. So we will have to create a data store called account receivable. And account receivable basically would indicate what money is supposed to be received from those customers. When we actually receive the payment, the account receivable will have to be updated. And periodically we will have to do evaluate the credit rating of the customers again because they may not be sending payments in time and so on, or there may be defaults. So the payment from customer is a fairly complex process by itself requiring us to maintain the account receivable data store.
Remember that payments may be received by a single check or by a multiple check. Similarly we may have to extend the previous data flow diagram for payments that we need to make to the publishers. So when we raise a payment order and we receive a shipping note from the customer, we will also receive his invoice. And that invoice will indicate that we have to make some payments, we will create accounts payable data store. And we will be checking invoices with our purchase orders and then we will make payments based on some kind of payment terms that we may have with the publisher.
So if we pay within fixed time we may even get incentives for early payment. So depending on our cash flow position and so on, we might release these payments to the publishers. So we need to extend that previous data flow diagram for this additional functionality and we will leave this as exercise for you.
Let us now conclude the process modeling part. In the process modeling, one of the most important issue is to decompose complex processes into sub-processes. Data flow diagrams are very popular tools for this. They show the data flows, data stores, processes and so on but they do not show the control flow. Proper naming is very important and we have emphasized this both for ER modeling, function decomposition diagramming and also the data flow diagrams. You must name the data stores, processes very meaningfully and indicate all the important data that flows from one data store to a process or to — from process to an external entity. All of these should be readable and understandable.