مطالب آموزشی مرتبط با محصولات شرکت اوراکل

oracle adf, oracle soa, oracle bpm, oracle database, oracle weblogic

نحوه خواندن مقدار یک LOV در زمان Runtime

اگر روی یک فیلد LOV داشته باشید و در لایه View Controller بخواهید به رکورد متناظر دسترسی داشته باشید مثلاً بخواهید بدانید رکوردی که کاربر انتخاب کرده است چه مقداری دارد باید از کد یر استاده کنید در کد زیر مقدار CmemSetupPost برابر نام binding فیلدی است که LOV میباشد.
مقدار ValueField برابر نام فیلدی از ViewObject مربوط به LOV است که میخواهیم مقدار آن را بدست آوریم.
بر روی فیلدی که LOV دارد یک ValueChangeListener بنویسید با شرایط زیر:

public void post_changed(ValueChangeEvent valueChangeEvent) {</p>
<p>BindingContainer bindings =<br />
BindingContext.getCurrent().getCurrentBindingsEntry();<br />
JUCtrlListBinding listBinding =<br />
(JUCtrlListBinding)bindings.get("CmemSetupPost");<br />
int index=(Integer)valueChangeEvent.getNewValue();</p>
<p>Number newValue=(Number)((ViewRowImpl)listBinding.getValueFromList(index)).getAttribute("ValueField");<br />
}
خواندن بیشتر
royal visionنحوه خواندن مقدار یک LOV در زمان Runtime

راه نمای نصب سرور SOA (مخصوص شرکت کنندگان کلاس)

راهنمای نصب برنامه SOA برای افرادی که در کلاس SOA شرکت کرده اند و DVD مربوطه را دارند پیوست گردیده است.

با تشکر از رضای عزیز که این متن را آماده کرده است.

فایل پیوست:
دانلود فایل
خواندن بیشتر
royal visionراه نمای نصب سرور SOA (مخصوص شرکت کنندگان کلاس)

در روش sql Authenticator چگونه کلمه عبور کد شود

در روش استفاده از پایگاه داده برای اعتبار سنجی که در همین فروم در لینک زیر مطرح گردیده است

اعتبار سنجی با استفاده ​ا​​ز ​جدول پایگاه داده

کلمه عبور بصورت ساده ذخیره میگردد در زیر نحوه کد شدن کلمه عبور با استاندارد MD5 در PLSQL وJava مطرح میگردد.

برای کد/hash نمودن کامه عبور در پایگاه داده یک function بصورت زیر بنویسید

CREATE OR REPLACE FUNCTION MD5STRING<br />
(<br />
STRING IN VARCHAR2<br />
) RETURN VARCHAR2 AS</p>
<p>INPUT_STRING VARCHAR2(200);<br />
v_Return VARCHAR2(200);<br />
temp varchar2(200);<br />
BEGIN<br />
INPUT_STRING := string;</p>
<p>v_Return := (SYS.DBMS_OBFUSCATION_TOOLKIT.MD5(<br />
INPUT_STRING =&gt; INPUT_STRING ));<br />
-- DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);<br />
select rawtohex(v_return) into temp from dual;<br />
return temp;<br />
END MD5STRING;<br />

function بالا یک ورودی میگیرد و hash آن را برمیگرداند.

مثلاً
select (md5string(‘test’)) from dual;
برابر با
098F6BCD4621D373CADE4E832627B4F6
میگردد

در جاوا هم برای کد نمودن کافیست که تابع زیر را استفاده نمایید.

public static String getMD5(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException {<br />
final MessageDigest algorithm = MessageDigest.getInstance("MD5");<br />
algorithm.reset();<br />
algorithm.update(text.getBytes("utf-8"));<br />
final StringBuilder hexStringBuilder = new StringBuilder();<br />
final byte[] digest = algorithm.digest();<br />
for (byte digestItem : digest) {<br />
String hex = Integer.toHexString(0xFF &amp; digestItem);<br />
if (hex.length() == 1) {<br />
hexStringBuilder.append('0');<br />
}<br />
hexStringBuilder.append(hex.toUpperCase());<br />
}<br />
return hexStringBuilder.toString();<br />
}

حال زمانیکه کلمه عبور را در جدول ذخیره مینمایید کافیست پیش از ذخیره سازی ،آن را با تابع plsql بالا کد نمایید.

در صفحه login در داخل ADF هم کافیست که قبل از ارسال کلمه عبور آن را به کمک تابع جاوا کد نمایید و سپس ارسال نمایید.

خواندن بیشتر
royal visionدر روش sql Authenticator چگونه کلمه عبور کد شود

ایجاد یک تایمر در سرور weblogic

بسیاری از مواقع لازم است تا در یک برنامه تحت وب یک تایمر نوشت تا در زمان لازم صدا شود و سپس در بازه زمانی های مختلف صدا گردد و کد ما را اجرا نماید.
بعنوان مثال در یک پروژه من لازم داشتم تا هر شب ساعت 11 شب index های مربوط به lucene بازسازی گردد جهت انجام این کار از تایمر استفاده کردم.
تنظیم تایمر ساده است
کدی که قرار است صدا شود را مشخص میکنیم و زمان شروع و مدت زمان تناوب را مشخص میکنیم.
برای استفاده از تایمر در weblogic باید library مربوط به commonj را به پروژه اضافه کنید من آن را پیوست کرده ام.

لینک مربوط به نوشتار این library

TimerManager tm = (TimerManager) ic.lookup("java:comp/env/tm/TimerManager");<br />
Calendar c= new GregorianCalendar();<br />
c.set(c.HOUR_OF_DAY, 23); //run this job tonight at 23 o clock.<br />
//c.getTime() -&gt; says when this job must be started.<br />
//10*1000 means 10,000 milisecond==10 seconds, says the interval of each request to start.<br />
tm.scheduleAtFixedRate(new TestTimerListener(), c.getTime(), 10 * 1000);

پروژه مربوطه در نسخه jdeveloepr 11.3 پیوست گردیده است پروژه را باز سپس در پروژه ViewController تغییر لازم برای حذف library مربوط به commonJ و اضافه کردن آن از مسیر جدید را انجام دهید پروژه را run نمایید و به آدرس
http://127.0.0.1:7101/timer-application-viewcontroller-context-root/untitled1.html
بروید

فایل مربوط به library

فایل پیوست:
خواندن بیشتر
royal visionایجاد یک تایمر در سرور weblogic

نحوه فراخواني يك stored procedure

ابتدا بايد کلاسهاي Application Module خود را ايجاد کرده و در کلاس AppModImpl.java متدي تعريف کرده و کد هاي زير رو به متد اضافه کنيد

public void fun(long fileNo, long servNo) {</p>
<p>CallableStatement plsqlBlock = null;<br />
String statement =<br />
"BEGIN PackageName.ProcedureName(:1,:2,:3,:4,:5); END;";</p>
<p>plsqlBlock = getDBTransaction().createCallableStatement(statement, 0);</p>
<p>// 1 and 2 : input parameter<br />
// 3, 4, 5 : output parameter<br />
// first should define type of output parameter</p>
<p>plsqlBlock.registerOutParameter(3, OracleTypes.NUMBER);<br />
plsqlBlock.registerOutParameter(4, OracleTypes.VARCHAR);<br />
plsqlBlock.registerOutParameter(5, OracleTypes.NUMBER);</p>
<p>// set value for input parameter<br />
plsqlBlock.setLong(1, fileNo);<br />
plsqlBlock.setString(2, Long.toString(servNo));</p>
<p>plsqlBlock.executeUpdate();</p>
<p>// get the value of output parameter<br />
int r = plsqlBlock.getInt(3);<br />
String s1=plsqlBlock.getString(4));<br />
int r2 s2=plsqlBlock.getInt(5));</p>
<p>/*<br />
for call function<br />
String statement =<br />
"" + "BEGIN :1 := PackageName.FunctionName(:2,:3,:4,:5); END;";<br />
1: function output<br />
2,3,.. : function input<br />
continue like above<br />
*/<br />
}

مي توانيد يک View obj خالي ايجاد کرده و مقادير بدست امده را در View Obj ذخيره کنيد و در لايه View از View Obj استفاده کنيد (البته قبلش بايد متد موجود در Application Module رو در صفحه خود فراخواني کنيد)

یا در داخل EO یا AppModule که دسترسی به متد getDBTransaction دارید میتوانید فراخوانی را انجام دهید.

برای فراخوانی procedure:

 url2 =<br />
"{call package_name.Procedure_name(?,?,?)}";<br />
try {<br />
cs = getDBTransaction().createCallableStatement(url2, 1);<br />
cs.setString(1, dept);<br />
cs.setString(2, pose);<br />
//register the out parameter<br />
cs.registerOutParameter(3, Types.INTEGER);<br />
cs.execute();<br />
//store the value on the a variabe in the Temp class<br />
t.a = new Integer(cs.getInt(3));<br />
} catch (SQLException e) {<br />
System.out.println("error in get last year in getcartableinformation" +<br />
e.getMessage());<br />
} finally {<br />
try {<br />
if (cs != null)<br />
cs.close();<br />
} catch (SQLException e) {<br />
System.out.println("error in closing get last year in getcartableinformation" +<br />
e.getMessage());<br />
}<br />
cs = null;<br />
}
خواندن بیشتر
royal visionنحوه فراخواني يك stored procedure