1 PACKAGE ASG_MOBTRAN AS
2 /* $Header: asgmots.pls 120.1 2005/08/12 02:48:07 saradhak noship $*/
3
4 -- DESCRIPTION
5 -- This package allows MDG machines to send mobile changes
6 -- to the enteprise for processiong.
7 -- In order to mantain data integrity this package works under the
8 -- boundaries of mobile transactions.
9 --
10 -- A mobile transaction, contains all changes made by a mobile
11 -- device during a replication session. The transaction is logicaly
12 -- devided in objects, Rows, and Columns. Objects map to publications,
13 -- rows map to the mobile changed record, and columns map to the
14 -- columns of the record.
15 --
16 --
17 --
18 -- HISTORY
19 -- 09-nov-01 vekrishn Fix for Queue data loss
20 -- 04-jun-01 vekrishn Support for begin/end transaction.
21 -- 15-dec-99 dcassine Created.
22 --
23 --
24
25
26 NO_TRANSACTION EXCEPTION;
27 OPEN_TRANSACTION EXCEPTION;
28 NO_OBJECT EXCEPTION;
29 NOT_IN_ROW EXCEPTION;
30 IN_ROW EXCEPTION;
31 ASG_ERROR EXCEPTION;
32
33 OK CONSTANT NUMBER := 0;
34 ERROR CONSTANT NUMBER := 1;
35
36 ASG_TRUE CONSTANT NUMBER := 1;
37 ASG_FALSE CONSTANT NUMBER := 0;
38
39
40 INVALID_TYPE CONSTANT NUMBER := 0;
41 CHAR_TYPE CONSTANT NUMBER := 1;
42 DATE_TYPE CONSTANT NUMBER := 2;
43 NUMBER_TYPE CONSTANT NUMBER := 3;
44 BLOB_TYPE CONSTANT NUMBER := 4;
45 CLOB_TYPE CONSTANT NUMBER := 5;
46
47 M_DEBUG varchar2(1) := 'Y';
48
49 QUEUE_TO_MDG CONSTANT NUMBER := 0;
50 QUEUE_TO_ENT CONSTANT NUMBER := 1;
51
52 -- Before calling any member of this package, BeginTransaction must be called
53 -- Transactions are not process utill EndTransaction is called.
54 procedure BeginTransaction (trans_id IN number, transaction_owner in varchar2);
55 procedure CommitTransaction ;
56 procedure RollBackTransaction ;
57
58 -- Transaction writing API
59 -- Before adding DML transactions to a transaction, setObject must be called
60 -- with the information of the object whos transactions are about to be process.
61 Procedure SetObject (object_name in varchar2, metadata in varchar2);
62 procedure UnsetObject;
63
64 Procedure AddRow (row_id number,dml in varchar2);
65 Procedure PushRow;
66 Procedure PopRow;
67
68 Procedure putString (data in varchar2);
69 Procedure putNumber (data in NUMBER);
70 Procedure putDate (data in DATE);
71
72
73 -- transaction reading API
74 procedure process_queue_transaction;
75 procedure process_queue_transaction(debug_flag IN CHAR);
76 Function parse (dequeue_session IN number) return number;
77 Function getTransactionId (dequeue_session IN number) return number;
78 Function getSourceGlobalName (dequeue_session IN number) return VARCHAR2;
79 Function getTimeStamp (dequeue_session IN number) return date;
80 Function getNextObject (dequeue_session IN number) return VARCHAR2;
81 Function getObjectName (dequeue_session IN number) return VARCHAR2;
82 Function getObjectMetadata (dequeue_session IN number) return VARCHAR2;
83 Function getNextDML (dequeue_session IN number) return VARCHAR2;
84 Function getDML (dequeue_session IN number) return VARCHAR2;
85 Function getRecID (dequeue_session IN number) return number;
86 Function getColumns (dequeue_session IN number) return number;
87 Function NextColumn (dequeue_session IN number) return number;
88 Function getString (dequeue_session IN number) return VARCHAR2;
89 Function getCHAR (dequeue_session IN number) return VARCHAR2;
90 Function getNUMBER (dequeue_session IN number) return number;
91 Function getDATE (dequeue_session IN number) return DATE;
92 Function getConnectedUserId (mobile_user_id IN number) return number;
93 Function getTransHandler (mobile_user_id IN number) return VARCHAR2;
94 Function dequeue_transaction return number;
95 Function rmqueue_transaction return NUMBER;
96 Procedure purge_queue_transactions (p_que_cnt IN NUMBER);
97
98 /*
99 The following function its used to check if a mobile update can be applied
100 to the database. In order for a mobile update to be applied, the record
101 which is beeing updated MUST have a lower value for its last_update column
102 that the user last_sync_date.
103 */
104 Function check_TimeStamp (ObjectName in varchar2, user in number,
105 pk_col1 in varchar2, pk_val1 in number,
106 pk_col2 in varchar2, pk_val2 in number,
107 pk_col3 in varchar2, pk_val3 in number,
108 pk_col4 in varchar2, pk_val4 in number,
109 pk_col5 in varchar2, pk_val5 in number,
110 pk_col6 in varchar2, pk_val6 in number
111 ) return number;
112
113 -- procedures used by the wrappers to set the error message
114 Procedure Set_Short_Error_message (dequeue_session IN number, message in varchar2);
115 Procedure Set_Longer_Error_message (dequeue_session IN number, message in varchar2);
116
117 -- Reply processing API
118 procedure REPLY_PROCESSOR;
119
120 -- RPC request interface
121 -- returns transaction Id
122 Function DoRpc (destination_global_name in varchar2, /* global name where to execute */
123 Remote_procedure in varchar2, /* procedure to call */
124 Call_back_procedure in varchar2, /* procedure to call with the result */
125 who in varchar2 ) return number; /* who requested the rpc */
126
127
128 -- UTIL functions / procedures
129 Procedure Purge_Queue (queue in number);
130
131 -- internal API No NOT use!!!
132 Function putLob (data in BLOB) return number;
133 Function GetBLOB return BLOB;
134 Function GetBLOBl return number;
135 -- Debug enable / disable code
136 procedure Enable_Debug;
137 procedure Disable_Debug;
138 END ASG_MOBTRAN;