سؤال

أقوم بتطوير برنامج تشغيل Novell Identity Manager لموقع Salesforce.com ، وأحاول فهم منصة Salesforce.com بشكل أفضل.

لقد حققت نجاحًا جيدًا حتى الآن. يمكنني قراءة فئات الكائنات التعسفية إلى حد كبير من SFDC ، وإنشاء كائنات Edirectory لهم ، وما لا. كل هذا يتم والعمل بشكل جيد. (قناة الناشر). بمجرد أن حصلت على أحداث الاستعلام ، بدأ معظم كل شيء في العمل في قناة الناشر.

أنا أعمل الآن على إرسال الأحداث مرة أخرى إلى SFDC (قناة المشترك) عندما تحدث التغييرات في Edirectory.

أنا أستخدم وظيفة upsert () في واجهة برمجة تطبيقات SOAP ، ومع Novell Identity Manager ، يمكنك بناء مستند SOAP بشكل أساسي ، ويمكنك رؤية النتائج أثناء قيامك بإنشائها. (يمكنك القيام بذلك في XSLT أو يمكنك استخدام الرموز المسموح بها المختلفة لإنشاء المستند في البرنامج النصي Dirxml. أنا أستخدم برنامج Dirxml Script الذي يعمل بشكل جيد حتى الآن.).

إن زيادة هذا التعليق هي أنه يمكنني إنشاء مستند الصابون ، ورؤيته ، للتأكد من أنني حصلت عليه بشكل صحيح. الذي عادة ما يكون مختلفًا عن نهج Java/C ++ الذي يوفره رمز العينة عادة. أكثر بصرية أكثر بهذه الطريقة.

هناك العديد من الأشياء حول upsert () التي لا أفهمها تمامًا. أنا أعرف كيف أفرغ قيمة ، هل يجب أن أحصل على هذا النوع من الحدث. داخل <urn:sObjects> العقدة ، أضف عقدة مثل (على افتراض أنك تم إعلان مساحات الأسماء الخاصة بك بالفعل):

<urn1:fieldsToNull>FieldName</urn1:fieldsToNull>

أعرف كيفية إضافة قيمة (attrvalue) إلى السمة (اسم الميدان) ، إضافة عقدة مثل:

<FieldName>AttrValue</FieldName>

كل هذا يعمل وهو مستقيم إلى الأمام.

والسؤال الذي لدي هو ، هل يمكن أن تكون القيمة في SFDC متعددة القيم؟ في Edirectory ، يمكن تغيير سمة متعددة القيمة ، يمكن أن تحدث طريقتين:

  • يمكن إزالة جميع القيم ، وإعادة إضافة المجموعة الجديدة.
  • يمكن إرسال القيمة المفردة التي تمت إزالتها على أنها نوع من الحدث (إزالة القيمة) أو يمكن إزالة العديد من القيم في عملية واحدة.

عند النظر إلى SFDC ، لم أر سوى سمات متعددة القائمة التي يبدو أنها مخزنة في إدخال واحد: أو ؛ محدد. هل هناك نوع آخر من السمة المتعددة القيمة التي تتم إدارتها بشكل مختلف في SFDC؟ وإذا كان الأمر كذلك ، كيف يمكن للمرء أن يتلاعب به عبر واجهة برمجة تطبيقات الصابون؟

لا يزال يتعين علي أن أقرر ما إذا كنت أرغب في تعيين هذه القوائم المتعددة إلى سلسلة واحدة ، أو سمة متعددة القيمة من الأوتار. أول طريقة أسهل ، والطريقة الثانية أكثر فائدة ... هممم ... الخيارات ...

بعض المراجع:

  • لقد كنت أستخدم الصفحة عينة من رسائل الصابون لفهم شكل المستندات.
  • مستكشف أبيكس هي أداة الركل لتصفح قاعدة البيانات واختبار الاستعلامات. يشبه إلى حد كبير dbvisualizer هل لقواعد البيانات المتصلة JDBC. كان هذا أكثر صعوبة بدونه!
  • soapui مطلوب أيضا ، وأداة جميلة!
هل كانت مفيدة؟

المحلول

بقدر ما أعرف أنه لا يوجد مجال متعدد القيمة غير سددات التصوير المتعددة (وهي خريطة لسلسلة منفصلة من نصف سليمة). بشكل عام ، تشجعك النظام الأساسي على إنشاء علاقة مناسبة مع جدول آخر (ربما جديد ، مخصص) إذا كنت بحاجة إلى وجود قيم متعددة مرتبطة ببياناتك.

الشيء "غير المعتاد" الآخر الذي يمكنني التفكير فيه هو كيف يمكن استخدام حقل المالك على كائنات معينة (الحالة ، الرصاص ، ربما شيء آخر) للإشارة إلى سجل المستخدم أو قائمة الانتظار. تبدو غريبة عند معتاد على العلاقات الرئيسية الخارجية من قواعد البيانات التقليدية. ولكن هذا ليس متطابقًا مع ما تطلبه حيث ستكون هناك قيمة واحدة فقط في وقت واحد.

بالطبع ، قد يتم تخطيك في بعض الأحيان مع القيم التي سترىها في قاعدة البيانات اعتمادًا على لغة مستخدم المشاهدة (تصبح ملفات تعريف مسؤول النظام SysteembeHeerder باللغة الهولندية). ولكن هذا سيظل قيمة واحدة ، يتم ترجمته أثناء الطيران قبل إرسال نتائج الاستعلام إليك.

عندما اضطررت إلى تنفيذ تكامل الصابون مع SFDC ، كنت دائمًا أستخدم ملفات WSDL ومعظم الوقت كان على ما يرام مع كود Java الذي تم إنشاؤه منها باستخدام Apache Axis. يبدو أن صياغة رسالة الصابون بنفسك تبدو ... واو ، متشددين قليلاً. هل أنت متأكد من أنك تفضل تصور XML على إنشاء الفصول والاستثناءات وكل هذه الأشياء جاهزة للاستخدام مع واحد من عدة من خارج الصندوق دمج طُرق؟ إذا قاموا بتغيير WSDL من أي وقت مضى ، فأنا بحاجة فقط لتجديد الفصول الدراسية منه ؛ في حين أن التغييرات على مكتبة إنشاء رسائل الصابون قد تكون مؤلمة ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top