Scopo
Svolge un azione su un oggetto. Per azione si intende un comando generico o specifico per l'oggetto; ad esempio su un oggetto di tipo Lista Valori si possono effettuare le azioni specifiche Aggiungi Costante e Aggiungi Sottoinsieme e quelle generiche Duplica, Trova dove usato eccetera...
Sintassi
int res = 0
//
res := INDE.DoObjAction(id oggetto, id azione, id transazione)
//
res := INDE.DoObjAction(id oggetto, id azione, id transazione)
Argomenti
| ID Oggetto | Puntatore dell'oggetto su cui effettuare l'azione |
| ID Azione | Identificativo dell'azione da effettuare; l'elenco delle azioni si trova nella lista valori Tipi Azione |
| ID Transazione | Numero della transazione in cui effettuare l'azione |
Valore di ritorno
Viene ritornato un intero corrispondente all'esito dell'azione sull'oggetto; i possibili esiti sono elencati nella lista valori Tipi Risultato Azione.
Esempio di codice
// **************************
// Duplica l'oggetto corrente
// **************************
public void InstantDeveloper.Duplica()
{
if NOT(Albero.ActiveDocument IS Null Object)
{
OggettoBase obj = null //
Transazione trans = null //
//
// Recupero dall'albero l'oggetto attivo
obj := OggettoBase.Cast(Albero.ActiveDocument)
try
{
Documento doc = null //
//
// Apro una transazione
doc := obj.GetDocument()
trans := doc.BeginTransaction(FormatMessage(Duplicazione |1 |2, Decode
(obj.Tipo, TipiOggetto), obj.Nome, ??, ??, ??))
//
// Duplico l'oggetto
EsempiMS.INDE.DoObjAction(obj.Puntatore, Duplica, trans.ID)
trans.Commit()
//
// Aggiorno l'albero
if NOT(obj.Parent IS Null Object) AND OggettoBase.IsMyInstance(obj.
Parent)
{
OggettoBase par = null //
//
par := OggettoBase.Cast(obj.Parent)
par.LoadChildrenFromINDE()
}
}
catch
{
trans.Rollback()
EsempiMS.MessageBox(Impossibile Duplicare)
}
}
}
// Duplica l'oggetto corrente
// **************************
public void InstantDeveloper.Duplica()
{
if NOT(Albero.ActiveDocument IS Null Object)
{
OggettoBase obj = null //
Transazione trans = null //
//
// Recupero dall'albero l'oggetto attivo
obj := OggettoBase.Cast(Albero.ActiveDocument)
try
{
Documento doc = null //
//
// Apro una transazione
doc := obj.GetDocument()
trans := doc.BeginTransaction(FormatMessage(Duplicazione |1 |2, Decode
(obj.Tipo, TipiOggetto), obj.Nome, ??, ??, ??))
//
// Duplico l'oggetto
EsempiMS.INDE.DoObjAction(obj.Puntatore, Duplica, trans.ID)
trans.Commit()
//
// Aggiorno l'albero
if NOT(obj.Parent IS Null Object) AND OggettoBase.IsMyInstance(obj.
Parent)
{
OggettoBase par = null //
//
par := OggettoBase.Cast(obj.Parent)
par.LoadChildrenFromINDE()
}
}
catch
{
trans.Rollback()
EsempiMS.MessageBox(Impossibile Duplicare)
}
}
}
- Se si cerca di effettuare un'azione che non è prevista dall'oggetto viene ritornato il valore Non Riconosciuta.
- Le azioni possono avere esito bloccante o non bloccante indipendentemente dal buon esito dell'azione percui occorre fare attenzione al valore di ritorno.
- Le modifiche fatte fuori transazione non cambiano lo stato del documento, cioè se il documento prima della modifica era non modificato dopo la modifica resta tale; quindi in fase di chiusura non verrebbe chiesto all'utente se vuole salvare.
- In caso di modifica fuori transazione non viene gestito il sistema di Team Working.
Ultima modifica: 28/05/2009 / Validità: da 7.5.3400
funzione