Home > NyanyianKode > Rollback pada ViewObject

Rollback pada ViewObject

Biasanya ketika melakukan proses “cancel” atau batal, saya memanggil action “Rollback”. Untuk page yang cuma terdiri dari satu level master-detail, si-“Rollback” ini cukup menyelesaikan masalah, dia akan me-“Rollback” semua aksi yang tidak jadi kita lakukan, ex: setCurrentRowWithKey, Create.

Nah, lalu bagaimana untuk page master-detail yang terdiri dari lebih dari satu level misalkan A->B->C->D?. Misalkan di page C atau D kita membatalkan aksi atau proses yang akan dilakukan, dalam kasus ini kita tidak bisa menggunakan “Rollback”. Jika kita masih tetap menggunakan “Rollback”, rowKeyStr yang sudah di-set pada page sebelumnya akan kembali ke row pertama. Hal ini wajar, karena “Rollback” adalah action dari ApplicationModule, dan ketika itu dipanggil maka semua perubahan yang belum di-“Commit” akan dibatalkan.

Solusinya adalah mengabaikan perubahan hanya pada ViewObject dari page tersebut.

    public String doCancel() {
        DCIteratorBinding itBd = 
        ADFUtil.findIterator(getBindings(),"SubProvinceView1Iterator");
        ViewObjectImpl vo = (ViewObjectImpl) itBd.getViewObject();
        ViewRowImpl row = (ViewRowImpl)vo.getCurrentRow();
        
        if((row != null) && (row.getEntity(0).getEntityState()==EntityImpl.STATUS_NEW)) {
            // new operation
            row.refresh( Row.REFRESH_UNDO_CHANGES | Row.REFRESH_FORGET_NEW_ROWS);
        }
        else {
            // edit operation
            row.refresh(Row.REFRESH_WITH_DB_FORGET_CHANGES);
        }
        
        return null;
    }

Semoga bermanfaat ^^.

Sumber: http://abakalidis.blogspot.com/2008/05/oracle-adf-view-object-with.html

Advertisements
Categories: NyanyianKode Tags: ,
  1. June 11, 2009 at 5:41 am

    Terima kasih atas petunjuk saktinya guru besar! Langsung beres masalahnya… 😀

    • urangbiase
      July 11, 2009 at 3:34 am

      Ah berlebihan ni master djitz :p

  2. January 14, 2010 at 2:27 am

    maaf .. bolee tanya gaa ??

    sebenernya fungsi rollback sendiri ituu buatt appa sihh !!
    truus dgunakann pada saat kondisi yg sperti app ??

    pliis answerr !! lagi meppet nihh .. hhe 🙂

    • urangbiase
      January 23, 2010 at 5:36 am

      Sori baru bls…lama ga ngecek blog.

      Rollback itu untuk membatalkan transaksi atau suatu proses yang belum ter-commit. Misalkan kita mengubah2 nilai dari suatu entity dan belum benar2 disimpan (persist), karena sesuatu dan lain hal entity tersebut mau kita kembalikan ke nilai semula..disitulah gunanya rollback.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: