هشدار: من توصیه نمیکنم که با محتوای جداول بازی کنید و در اینجا منظورم انجام insert، update یا delete دستی است. احتمال زیادی وجود دارد که با متادیتای بیزاجی مشکل ایجاد کنید و این آخرین چیزی است که میخواهید، باور کنید.
محتوای این مقاله
- کوئریهای SQL برای بازیابی دادههای کاربران
- بازیابی همه واژهنامهها
- بازیابی همه تسکها برای کاربر خاص
- بازیابی همه تسکها بر اساس شناسه کیس
- بازیابی همه فرآیندها با نسخههای موجود
- بازیابی همه کیسها
- رمزگشایی محتوای کاتالوگ
کوئریهای SQL برای بازیابی دادههای کاربران
1. لیست همه کاربران
ستون [enabled] نشان میدهد که آیا کاربر فعال است (1-درست) یا غیرفعال (0-غلط)
SELECT
usr.idUser,
usr.usrName,
usr.usrDisplayName,
usr.usrEmail,
usr.usrEnabled,
usr.usrCreationDate
FROM
USER usr
ORDER BY
usr.usrCreationDate
2. کاربران فعال
SELECT
usr.idUser,
usr.usrName,
usr.usrDisplayName,
usr.usrEmail
FROM
USER usr
WHERE
usr.usrEnabled = 1
ORDER BY
usr.usrDisplayName
3. کاربران با نقشهایشان
SELECT
usr.usrDisplayName AS 'User Name',
rol.rolName AS 'Role Name',
rol.rolDescription AS 'Role Description'
FROM
USER usr
INNER JOIN
USERROLE ur ON usr.idUser = ur.idUser
INNER JOIN
ROLE rol ON ur.idRole = rol.idRole
WHERE
usr.usrEnabled = 1
ORDER BY
usr.usrDisplayName, rol.rolName
بازیابی همه واژهنامهها
SELECT
voc.idVocabulary,
voc.vocName,
voc.vocDescription,
voc.vocCreationDate
FROM
VOCABULARY voc
ORDER BY
voc.vocName
بازیابی همه تسکها برای کاربر خاص
SELECT
wi.idWorkItem,
wi.wiName,
wi.wiCreationDate,
wi.wiAssignedDate,
wi.wiFinishedDate,
wi.wiState,
usr.usrDisplayName AS 'Assigned User'
FROM
WFWORKITEM wi
INNER JOIN
USER usr ON wi.idUser = usr.idUser
WHERE
usr.usrName = 'username' -- نام کاربری مورد نظر
AND wi.wiState IN (0, 1) -- 0: Assigned, 1: In Progress
ORDER BY
wi.wiCreationDate DESC
بازیابی همه تسکها بر اساس شناسه کیس
SELECT
wi.idWorkItem,
wi.wiName,
wi.wiCreationDate,
wi.wiAssignedDate,
wi.wiFinishedDate,
wi.wiState,
cas.casId AS 'Case ID'
FROM
WFWORKITEM wi
INNER JOIN
WFCASE cas ON wi.idCase = cas.idCase
WHERE
cas.casId = 'CASE_ID' -- شناسه کیس مورد نظر
ORDER BY
wi.wiCreationDate DESC
بازیابی همه فرآیندها با نسخههای موجود
SELECT
prc.idProcess,
prc.prcName,
prc.prcDescription,
prc.prcVersion,
prc.prcCreationDate,
prc.prcIsActive
FROM
PROCESS prc
WHERE
prc.prcIsActive = 1
ORDER BY
prc.prcName, prc.prcVersion DESC
بازیابی همه کیسها
برای بهبود عملکرد، بیزاجی کیسهای فعال را در WFCASE و غیرفعالها را در WFCASECL ذخیره میکند (CL در انتها مخفف CLOSED است). همین منطق برای WFWORKITEM نیز اعمال میشود. انتقال از جدول عادی به CL در شب و زمانی که فعالیت پورتال کم است انجام میشود.
کیسهای فعال
SELECT
cas.idCase,
cas.casId,
cas.casCreationDate,
cas.casLastModified,
prc.prcName AS 'Process Name'
FROM
WFCASE cas
INNER JOIN
PROCESS prc ON cas.idProcess = prc.idProcess
ORDER BY
cas.casCreationDate DESC
کیسهای بسته شده
SELECT
cas.idCase,
cas.casId,
cas.casCreationDate,
cas.casLastModified,
prc.prcName AS 'Process Name'
FROM
WFCASECL cas
INNER JOIN
PROCESS prc ON cas.idProcess = prc.idProcess
ORDER BY
cas.casCreationDate DESC
همه کیسها (فعال و بسته شده)
-- کیسهای فعال
SELECT
cas.idCase,
cas.casId,
cas.casCreationDate,
cas.casLastModified,
prc.prcName AS 'Process Name',
'Active' AS 'Status'
FROM
WFCASE cas
INNER JOIN
PROCESS prc ON cas.idProcess = prc.idProcess
UNION ALL
-- کیسهای بسته شده
SELECT
cas.idCase,
cas.casId,
cas.casCreationDate,
cas.casLastModified,
prc.prcName AS 'Process Name',
'Closed' AS 'Status'
FROM
WFCASECL cas
INNER JOIN
PROCESS prc ON cas.idProcess = prc.idProcess
ORDER BY
casCreationDate DESC
رمزگشایی محتوای کاتالوگ
برای رمزگشایی ستون objContentResolved از تابع [dbo].[fnBA_DB_BlobToClob] استفاده میکنم.
SELECT guidObject, objName, [dbo].[fnBA_DB_BlobToClob](objContentResolved) 'Decrypted Content' FROM vwBA_Catalog_BABIZAGICAT_ALL