SIL و Salesforce

في هذه المقالة سوف أتحدث عن كيفية العمل مع Salesforce من SIL.

SIL هي لغة برمجة لأتمتة الإجراءات في Atlassian Jira and Confluence. يمكنك معرفة المزيد عن SIL  هنا .

هناك 3 خيارات للعمل مع Salesforce من SIL:

  1. استخدم البرنامج المساعد  Power Salesforce Connector .
  2. اكتب وظائفك على SIL.
  3. اكتب ملحق الخاص بك ل SIL .

في هذه المقالة ، سنلقي نظرة على الخيارين الأولين. يمكنك أن تقرأ عن كيفية إنشاء امتداداتك الخاصة لـ SIL هنا .

ولكن قبل الانتقال إلى الرمز ، يجب عليك تكوين Salesforce.

إعداد Salesforce


سنستخدم واجهة برمجة تطبيقات Salesforce Rest للعمل مع Salesforce ، لذا نحتاج أولاً إلى تهيئة التطبيق المتصل.
لتهيئة تطبيق المكون الإضافي ، انتقل إلى الترس -> الإعداد:



اختر التطبيق -> مدير التطبيقات:



انقر فوق الزر تطبيق متصل جديد:



حدد الخيار لتمكين OAuth (تمكين إعدادات OAuth). قم بتثبيت  الوصول الكامل ، انقر فوق الزر  إضافة ثم على الزر  حفظ .

في الصفحة التالية ، ضمن إعدادات OAuth ، سنرى مفتاح المستهلك وخيار فتح سر العميل. تذكر هذين المعاملين. سنحتاج إليها لإنشاء اتصال مع Salesforce.

بالإضافة إلى ذلك ، تحتاج إلى إنشاء رمز سري للمستخدم. للقيام بذلك ، انتقل إلى إعدادات المستخدم → إعادة تعيين رمز الأمان الخاص بي. سيتم إرسال مفتاح مستخدم سري جديد إلى بريدنا الإلكتروني:



الآن لدينا كل ما نحتاجه للعمل مع Salesforce من SIL.

موصل قوة المبيعات


يسمح لك موصل Power Salesforce بالعمل مع كائنات في Salesforce مثل الحساب والفرصة ، بالإضافة إلى ذلك ، يمكنك تلقي نتائج الاستعلام في SOQL. يمكنك العثور على جميع الوظائف المتاحة في البرنامج المساعد SIL هنا .

ميزة استخدام المكون الإضافي هي أنك لا تحتاج إلى كتابة وظائف SIL الخاصة بك للعمل مع Salesforce وفهم تعقيدات Salesforce Rest API. سيسمح لك ذلك بالتركيز على مهام العمل وليس على المهام الفنية.

ولكن بالطبع ، يحتوي المكون الإضافي أيضًا على عدد من العيوب:

  • واجهة برمجة تطبيقات Salesforce Rest API أكثر ثراءً بكثير من العمل مع الحساب والفرصة والحصول على نتائج استعلامات SOQL. إذا كنت بحاجة إلى وظائف غير موجودة في المكون الإضافي ، فسيتعين عليك كتابة وظائف SIL.
  • Account Opportunity . , Salesforce . Salesforce.
  • , , : Power ScriptsPower ActionsPower Custom Fields ProDatabase Custom FieldsRights DNAKIWIUser Group Picker.


لنفترض أننا قررنا استخدام موصل Power Salesforce.

نحتاج أولاً إلى تثبيت هذا المكون الإضافي من Atlassian Marketplace ، ثم إنشاء اتصال بـ Salesforce من Atlassian Jira (ترس -> إدارة التطبيقات -> تكوين اتصال SFDC):



انقر فوق الزر إضافة اتصال:



املأ الحقول المطلوبة وانقر فوق الزر حفظ. عند إدخال كلمة المرور ، يجب إدخال كلمة مرور المستخدم ثم مفتاح المستخدم السري.

الآن يمكننا كتابة الرمز في SIL.

أولاً ، حدد فرصة من Salesforce.

دعنا نذهب إلى SIL Manager ، ننشئ ملفًا جديدًا ونكتب الكود التالي:

SFDCConnection sfdcConnection = connectToSalesforce("My SFDC Connection");
SFDCOpportunity opp = sfdcGetOpportunity(sfdcConnection, "0064F00000NKA7CQAX");
runnerLog(opp);

كما ترى ، لكتابة بيانات الفرصة ، قمنا بكتابة سطرين فقط من التعليمات البرمجية. في السطر الأول ، نتصل بـ Salesforce (اتصلت بوصلي My SFDC Connection). في السطر الثاني ، نحصل على بيانات من Salesforce باستخدام معرف الفرصة.

من أجل تغيير بعض الحقول في الفرصة ، سنكتب هذا الرمز:

SFDCConnection sfdcConnection = connectToSalesforce("My SFDC Connection");
SFDCOpportunity opp;
opp.Description = "My new description";
sfdcUpdateOpportunity(sfdcConnection, "0064F00000NKA7CQAX", opp);

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

ولكن ماذا لو لم يناسبك موصل Power Salesforce؟ في هذه الحالة ، يمكننا إنشاء وظائف SIL الخاصة بنا.

إنشاء وظائف SIL الخاصة بك


أولاً ، أنشئ وظيفة اتصال Salesforce:

struct SFDCConnection {
    string access_token;
    string instance_url;
    string id;
    string token_type;
    string issued_at;
    string signature;
}

function connectToSalesforce(string consumer_key,
                      string consumer_secret,
                      string user_name,
                      string user_password) {
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    string dummyPayload;
    string url = "https://login.salesforce.com/services/oauth2/token";
    string url_string = "?grant_type=password&client_id=" + consumer_key+ 
                    "&client_secret=" + consumer_secret + 
                    "&username=" + user_name + 
                    "&password=" + user_password; 
    SFDCConnection connection = httpPost(url + url_string, request, dummyPayload);
    runnerLog(httpGetErrorMessage());
    return connection;
}

أولاً ، أنشأنا إطار عمل يستند إلى JSON ويعود من Salesforce عند الاتصال. ثم استخدموا طريقة  https://login.salesforce.com/services/oauth2/token  للاتصال بـ Salesforce.

الآن دعنا ننشئ وظيفة لاسترداد بيانات الفرصة. للقيام بذلك ، نستخدم طريقة XX.X / sobjects / SObjectNam / id /:

struct Opportunity {
    string Id;
    string AccountId;
    string Name;
    string Description;
    string StageName;
    string OwnerId;
}

function getOppFromOppId(string access_token,
                string url,
                string oppId) {
    Opportunity result;
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    header = httpCreateHeader("Authorization", "Bearer " + access_token);
    request.headers += header;
    result = httpGet(url + "/services/data/v39.0/sobjects/Opportunity/" + oppId, request);
    return result;
}

مرة أخرى ، حددنا بنية بيانات الفرصة ، ثم أطلقنا على طريقة واجهة برمجة تطبيقات Salesforce Rest.

الآن دعنا نكتب رمزًا يستخدم وظائفنا:

SFDCConnection connection = connectToSalesforce(consumer_key, consumer_secret, user_name, user_password);
Opportunity opp = getOppFromOppId(connection.access_token, connection.instance_url, "0064F00000NKA7CQAX");
runnerLog(opp);

لقد حصلنا على نفس سطرين من التعليمات البرمجية. ومع ذلك ، يبدو رمزنا الكامل كما يلي:

struct SFDCConnection {
    string access_token;
    string instance_url;
    string id;
    string token_type;
    string issued_at;
    string signature;
}

function connectToSalesforce(string consumer_key,
                      string consumer_secret,
                      string user_name,
                      string user_password) {
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    string dummyPayload;
    string url = "https://login.salesforce.com/services/oauth2/token";
    string url_string = "?grant_type=password&client_id=" + consumer_key+ 
                    "&client_secret=" + consumer_secret + 
                    "&username=" + user_name + 
                    "&password=" + user_password; 
    SFDCConnection connection = httpPost(url + url_string, request, dummyPayload);
    runnerLog(httpGetErrorMessage());
    return connection;
}

struct Opportunity {
    string Id;
    string Name;
    string Description;
    string StageName;
    string OwnerId;
}

function getOppFromOppId(string access_token,
                string url,
                string oppId) {
    Opportunity result;
    HttpRequest request;
    HttpHeader header = httpCreateHeader("Content-Type", "application/json");
    request.headers += header;
    header = httpCreateHeader("Authorization", "Bearer " + access_token);
    request.headers += header;
    result = httpGet(url + "/services/data/v39.0/sobjects/Opportunity/" + oppId, request);
    return result;
}

string consumer_key = "your consumer key";
string consumer_secret = "your consumer secret";  
string user_name = "your user name";
string user_password = "password and user secret token";

SFDCConnection connection = connectToSalesforce(consumer_key, consumer_secret, user_name, user_password);
Opportunity opp = getOppFromOppId(connection.access_token, connection.instance_url, "0064F00000NKA7CQAX");
runnerLog(opp);

إذا كنت تريد ، على سبيل المثال ، تحديث الفرصة ، فأنت بحاجة إلى تنفيذ وظيفة SIL لهذا ، باستخدام واجهة برمجة تطبيقات Salesforce Rest.

بالإضافة إلى ذلك ، كما هو موضح في مثالنا ، تلقينا الحقول التالية من فرصة: id ، الاسم ، الوصف ، stagename والمالك.

افترض أنك تريد إضافة حقل accountid. للقيام بذلك ، تحتاج إلى تغيير الهيكل على النحو التالي:

struct Opportunity {
    string Id;
    string Name;
    string Description;
    string StageName;
    string OwnerId;
    string AccountId;
}

لقد أضفنا حقل AccountId في نهاية البنية.

يمكن أن نلاحظ من الأمثلة أنه إذا قمت بكتابة وظائف SIL الخاصة بك ، يمكنك تنفيذ استدعاء لأي طريقة من واجهات برمجة تطبيقات Salesforce Rest API ، ولكن لهذا تحتاج إلى قضاء المزيد من الوقت في كتابة التعليمات البرمجية. ولكن مرة أخرى ، إنه مجاني.

All Articles