[K2 Five] – How to start multiple sub workflow [TH]

สวัสดีครับ พอดีช่วงนี้มีคำถามเกี่ยวกับการ start sub workflow ตามจำนวนของงานที่เราเก็บไว้ใน database เข้ามา ถ้าใครเคยทำใน version เก่าอยู่ก็จะงงๆ อยู่ เพราะไม่เหมือนเดิมเลย แต่ก่อนที่เราจะไปถึงวิธีทำ มาพูดถึง scenario ที่ทำไม่ได้ก่อนดีกว่า

ใน workflow version เก่า เราสามารถ start sub workflow หลายๆ workflow พร้อมกัน ทั้งแบบ sync (รอ sub workflow ตอบกลับ) และ async (ไม่รอ sub workflow ตอบกลับ) โดย sub workflow ทั้งหมดจะถูก start พร้อมๆ กัน แต่ใน version K2 Five จะ start sub workflow พร้อมๆ กัน ได้แค่เคสของ async นะครับ ถ้าเป็นเคส sync จะ start แล้วรอให้ทำ sub workflow จบ ถึงจะ start อันถัดไปได้

มาเริ่มกันเลยดีกว่า สิ่งที่เราต้องมีก็ตามด้านล่าง

  • SmartObject ที่ต่อกับ table ที่เราจะดึงข้อมูลออกมา
  • Sub Workflow (แน่ล่ะ ไม่งั้นจะ start อะไร)
  • Main Workflow

SmartObject

จะเป็น structure แบบไหนก็ได้ แต่ควรจะมี status, ชื่อคนที่เราจะส่งงานให้ กับ id ของ main (ในที่นี้ผมใช้เป็น HeaderID) เอาไว้ filter เพื่อ start sub workflow

SMO

Sub Workflow

หลัง start workflow ก็จะมี update status และส่งงานไปหา user ที่เรากำหนดใน table

Sub Workflow

ส่วนที่เราต้องมีก็คือ variable สำหรับรับค่ามาจาก Main Workflow

Variables

Main Workflow

Main Workflow

Create Reference Step

สิ่งแรกที่เราต้องมีคือ step Create Reference เราจะต้องเลือก SmartObject นำมาเป็น reference เพื่อให้ step Loop เอาไปใช้

CreateReference1

ใน Filter เราใส่เพื่อดึงเอาเฉพาะ record ที่ Status = New และ HeaderID เท่ากับค่าที่ใส่มาใน Variable HeaderID

ที่ด้านล่างจะมีส่วนที่เรียกว่า Fill Reference ให้เรากด Create designer จะสร้าง Reference ให้เรา เป็นอันจบการ set reference

Loop Step

มาต่อกันที่ loop เมื่อลาก loop step แล้ว จะมีให้เราเลือกว่า จะ loop จาก reference อันไหน ให้เราเลือก reference ที่เราสร้างไว้

Loop1

หลังจากเลือก reference แล้ว K2 จะสร้าง reference เพิ่มให้เราอีกอัน เป็น reference ของ current row ที่เรากำลัง loop อยู่ คือ TaskAssignment.SMO Item ตามรูปด้านล่าง

Loop2

Call Sub Workflow Step

มาถึง Call Sub Workflow ให้เราเลือก Workflow ที่เราต้องการใช้งาน, ไม่เลือก Wait for sub workflow to complete และเอาข้อมูลจาก current item มาส่งเข้าไปใน variables ที่เราสร้างไว้ (มีใส่ id ไว้ใน folio ด้วย จะได้แยกออกว่า อันนี้เป็น sub workflow อันไหน)

CallSubworkflow

Test

เมื่อทำเสร็จแล้วก็มาทดสอบกัน โดยใส่ข้อมูลไว้ตามด้านล่าง

TestSubWorkflow1

ไปที่ Management Site ในการทดสอบ ผมใช้ HeaderID = 3

มาดูผลกันในหน้า report จะเห็นว่า เรา start Main workflow และมี IPC ที่เกี่ยวข้อง 2 instances

TestSubWorkflow4

TestSubWorkflow5

TestSubWorkflow6

ตัวอย่างนี้ทำด้วย K2 5.1 นะครับ แต่สำหรับ K2 5.0 วิธีทำก็จะเหมือนๆ กันครับ หวังว่า จะเป็นประโยชน์สำหรับคนที่ต้องทำนะครับ 🙂

Advertisements

K2 5.1 New Feature Overview

สวัสดีครับ ในช่วงก่อนหน้านี้ K2 ได้ release version ใหม่ที่เป็น K2 5.1 ออกมา มีหลายคนถามมาว่า มีอะไรใหม่ๆ บ้าง เลยขอรวบรวมมาเขียนใน blog รอบนี้ซะเลย ลองดูได้ตามด้านล่างแล้วกันครับ 🙂

  • K2 App

จะแบ่งเป็น 2 ส่วน ส่วนแรกคือ pre-built application ที่สามารถ download และ deploy เพื่อใช้งานได้เลย ก่อนหน้านี้เราจะรู้จักกันในชื่อ Smart Starter หรือถ้าก่อนหน้านั้นอีกจะชื่อ Application Accelerators กับอีกส่วนที่ เราสามารถเลือก form หรือ workflow ที่เป็นแบบ template มาสร้าง application ซึ่งอันนี้จะเรียกว่า App Wizards โดยเราเลือกยังสามารถ customize บางส่วนเพิ่มเติมได้ด้วย สามารถดูรายละเอียดเพิ่มเติมได้ที่ https://help.k2.com/onlinehelp/k2five/userguide/5.1/default.htm#Apps/Create/Create-Apps.htm%3FTocPath%3DCreate%7CApps%7C_____0

016

ตัวอย่างหน้าจอการเลือก template ของ App Wizards

  • Exchange Service Type

ต่อกับ Exchange Server ผ่าน REST service (ต่างจากตัวเดิมที่ต้อง configure ผ่าน setup manager แต่อันนี้ new ในผ่าน SmartObject Service Tester หรือ Management Site ได้เลย สามารถจัดการ appointment, email, attachment ต่างๆ ได้ รายละเอียดเพิ่มเติมดูได้ที่ https://help.k2.com/onlinehelp/k2five/userguide/5.1/default.htm#ServiceBrokers/Exchange/Exchange.htm%3FTocPath%3DAdminister%7CK2%2520Management%7CIntegration%7CService%2520Types%7C_____10

  • Salesforce Service Type

เป็นตัว update จาก Salesforce service type เดิม รายละเอียดเพิ่มเติมดูได้ที่ https://help.k2.com/onlinehelp/k2five/userguide/5.1/default.htm#ServiceBrokers/SalesForce/SalesforceInstance.htm%3FTocPath%3DAdminister%7CK2%2520Management%7CIntegration%7CService%2520Types%7C_____17

  • Workflow Designer

ทำ Undo/Redo กับ Cut/Copy/Paste ได้ กับจะมีการแจ้งเตือนเป็นรูปเครื่องมือข้างล่าง ถ้าเราเขียน workflow เป็น looping แบบรูปด้านล่าง

Loop

  • Theme

เพิ่ม theme responsive ใหม่คือ Blue Void กับ Grey Void

  • Server-side Rule

เพิ่ม server-side rule เพื่อให้ทำงานแบบที่ไม่ต้องมี round-trip จาก client ไป server เช่น พวก set control properties

Server-side rule

  • Export to Excel ใน List View

เพิ่ม function export ข้อมูลจาก list view ไป excel โดยจะเป็น method ที่ผูกติดอยู่กับทุก list view เลย

Export to excel

  • Smartbox Data Encryption

สามารถ encrypt data ใน SmartObject ที่ใช้ Smartbox ได้ โดยสามารถเลือกเป็นบาง properties ใน SmartObject ได้

  • Smartbox SmartObject Property Settings

มี setting เพิ่มสำหรับบาง datatype

Text – Constant Size, Maximum Size

Time – Precision

Decimal – Decimal Places

  • Smartbox Own Schema

การสร้าง table ของ Smartbox ไม่ได้สร้างที่ dbo แล้ว แต่จะเป็น Schema ชื่อ SmartboxData แทน

  • Service Method Links

สำหรับ Composite SmartObject เราสามารถ set up Service Method Link ได้แล้ว (ซะที)

  • App Switcher

ที่ด้านบนซ้ายของ site Management กับ Workspace จะมี link ให้กดสำหรับเปลี่ยนไป Site อื่น หรือ App อื่นใน Workspace ได้

Switcher

  • Multi-select Process Instances

ทำ Stop, Delete หรือ Restart ได้หลาย Instance พร้อมกัน

  • Delete Category

สามารถ delete ทั้ง category ได้แล้ว ถึงแม้จะมี object อยู่ใน category นั้นก็ตาม (เมื่อก่อนต้องลบ object ให้หมดก่อน)

Delete Category

  • Authorization Framework

มี permission สำหรับ K2 object เช่น

View – ดู object ตอน design time ได้

Execute – ใช้ object ตอน runtime

Modify – Edit, delete, rename object

Security – ให้สิทธิกับ user อื่นๆ ได้

รายละเอียดเพิ่มเติม ดูได้ที่ https://help.k2.com/onlinehelp/k2five/userguide/5.1/default.htm#AuthorizationFramework/Authorization-Framework-Overview.htm?Highlight=authorization%20framework

  • API

เพิ่ม OAuth authentication สำหรับ Odata กับ Workflow API มี version แล้ว (สำหรับทำ backward compatibility ในอนาคต เพราะอาจจะมีการเปลี่ยน method หรือข้อมูลอย่างอื่นได้)

 

สำหรับ K2 5.1 New Feature Overview ก็มีเท่านี้นะครับ พบกันใหม่คราวหน้าครับ 🙂

How to use “Workflow management service” (K2 Five)

สวัสดีเพื่อน ๆ ชาว K2 Ranger ทุกท่านครับ วันนี้มีโอกาสได้รับบทความจากคุณเบนซ์ Thattaporn Setsittichoke มาช่วยเขียน blog แชร์ประสบการณ์ การทำงานบน K2 Five

จะมี feature อะไรใหม่บน K2 Five มาช่วยเราทำงานกันบ้าง เชิญติดตามได้เลยครับผม


ผมจะมาแชร์บทความที่บางคนอาจจะรู้อยู่แล้วนะครับ (ที่เคยลองใช้งาน) ซึ่ง k2 management เท่าที่จำได้ และใช้งานมาจะมีเกิดขึ้นตั้งแต่ Version 4.7 ขึ้นไปครับ แต่มันพิเศษตรงที่ มี Service Object (ไม่แน่ใจนะครับว่าก่อนหน้านี้มีให้ใช้ไหม ถ้ามีต้องขออภัย) ให้เราใช้งานด้วย

ซึ่งแต่ก่อนเราจะต้องทำการพึ่งพา API เช่นตัวที่ผมมีการใช้งานคือพวก Redirect, Delegate หรือ Goto Activity ต่างๆ ต้องทำการ Custom เพื่อช่วยการทำงานในส่วนนี้ เช่นการ Goto Activity จะต้องเขียนแบบนี้เป็นต้น (หลายคนคงเคยทำเหมือนกัน)

b1.png

แต่ใน SmartObjects – Service – Tester (หลายคนคงเคยใช้แล้วจะอยู่ใน C:\Program Files (x86)\K2 blackpearl\Bin นะครับ) มีให้ใช้งานกันแล้วครับ ซึ่งมีอะไรให้ใช้งานบ้างสามารถเข้าไปดูกันได้เลยครับ ดังภาพ

b2

จะมี method GotoActivity ให้ใช้ได้เลย ไม่ต้องเขียน API เองแล้ว 🙂

S__6545428.jpg

นอกจาก Workflow ที่ผมเข้า ยังมีตัวอื่นอยากให้ลองเอาไปใช้งานตามชื่อที่ต้องการได้เลยครับ มีให้ใช้งานเยอะมากครับ กันอีกเยอะเลยนะครับลองเล่นกันดูครับ และสามารถนำมาแชร์กันได้ครับ

เพิ่มเติมนะครับ ถ้ามีเกิดคำถามขึ้นว่า แล้วนำไปใช้งานยังไง? สามารถที่จะ Create เป็น SmartObject ตาม Category ที่ต้องการได้เลยครับ โดยการคลิกขวา และทำการ Create Smart Object ครับ

b3.png

หวังว่าบทความนี้เป็นประโยชน์ครับ และไม่ต้องเสียเวลาในการมา Custom กันครับ (ซึ่งผมทำได้เสียเวลาทำไปแล้ว 555)

ใครมีตัวไหนที่ใช้งานเจ๋งๆและมีประโยชน์ บอกกันด้วยนะครับ ขอบคุณครับ ^^


สุดท้ายนี้ ขอขอบคุณเบนซ์อีกรอบ สำหรับบทความดีๆ แบบนี้ครับ

benz

รูปประกอบคุณเบนซ์ เผื่อเจอหน้าจะทักทาย สอบถามได้เต็มที่ครับ 🙂

[Management] – Search Role in K2 [EN Version]

Today we’ll take about role in K2. We know that K2 Role use to manage group of user when we didn’t use AD group. We can create and manage role using Management console in workspace (K2 version prior to K2 Five) or using K2 Management site (K2 version 4.7 and K2 Five). But the thing that still missing is search function.

Imagine that if we have more than 100 roles in system and want to add/remove user in role or want to know which user belong to which role? How can we solve this problem? Today I got a tool for you. Please follow below step

  • Create stored procedure using script below in any database that can reach K2. You can also create in K2 database but please be aware. Because when we upgrade version or patch the stored procedure may be disappear.

CREATE PROCEDURE [dbo].[sp_FindRoleByUser] (

@pUserName NVARCHAR(447)

) AS

BEGIN

SELECT i.[Name]

FROM   [K2].[Identity].[Identity] i

INNER JOIN    [K2].[Identity].[RoleItem] r

ON     i.ID = r.IdentityID

WHERE  i.[Type] = 2

AND    r.[FQN] = @pUserName

END

After deploy you can use form at {url}/Runtime/Runtime/Form/UserRole.Form/

Hope this can help you when working with role 🙂

[Management] – Search Role ใน K2 [TH Version]

สวัสดีครับ ไม่ได้มา update blog ซะนาน วันนี้มาด้วยเรื่องของ role ใน K2 หลายๆ คนคงทราบอยู่แล้วว่า Role ไว้ใช้เวลาที่เราอยากส่งงานไปหาคนหลายๆ คน แต่เราไม่มี group บน AD ก็เลยมาใช้ระบบจัดการใน K2 แทน วิธีใช้งานก็ไม่ยาก สามารถเข้าไปเพิ่ม Role ผ่านหน้า workspace (ก่อน K2 Five) หรือผ่านหน้า Management (K2 4.7 และ K2 Five) ได้เลย แต่สิ่งที่หายไปสำหรับ Role ใน K2 นี้ก็คือ ไม่มี function ในการ search นั่นเอง

ลองนึกถึงเวลาที่เรามี Role เยอะๆ มากกว่า  100 ขึ้นไป (จริงๆ แค่ประมาณสิบปลายๆ ก็แย่แล้ว) แล้วต้องการเข้าไปแก้ไขคนใน role หรืออยากจะรู้ว่า user นี้อยู่ใน Role ไหนบ้าง จะทำยังไงดี?? วันนี้เรามี tool มีนำเสนอ โดยทำตาม step ด้านล่าง

  • สร้าง stored procedure ตาม script ด้านล่างใน database ที่เห็น database K2 จะสร้างไว้ใน database K2 ก็ได้ แต่ว่า ถ้ามีการ upgrade version หรือ patch stored procedure นี้อาจจะหายไปได้

CREATE PROCEDURE [dbo].[sp_FindRoleByUser] (

@pUserName NVARCHAR(447)

) AS

BEGIN

SELECT i.[Name]

FROM   [K2].[Identity].[Identity] i

INNER JOIN    [K2].[Identity].[RoleItem] r

ON     i.ID = r.IdentityID

WHERE  i.[Type] = 2

AND    r.[FQN] = @pUserName

END

เมื่อ deploy แล้วสามารถใช้งาน form ได้ที่ {url}/Runtime/Runtime/Form/UserRole.Form/

หวังว่า จะช่วยทำให้ชีวิตในการใช้ Role ของทุกคนง่ายขึ้นนะครับ 🙂

[K2 smartform] VLog – ตัวอย่างการใช้งาน BarCode/ QRCode

สวัสดีครับไม่ได้เขียน Blog มาซักพักนึงวันนี้ เอาตัวอย่างการประยุกต์ใช้งาน BarCode reader control ที่สามารถอ่าน ได้ทั้ง Barcode และ QR Code มาให้ลองดูกันเล่นๆ ครับ ลองไปดูกันเลย

Continue reading [K2 smartform] VLog – ตัวอย่างการใช้งาน BarCode/ QRCode

[K2 smartform] เพิ่ม Select All check box ให้กับ List View

สวัสดีครับเพื่อนๆ จากคราวที่แล้ว ที่คุณกายได้มาแชร์เรื่อง การทำ Check Box บน List View ก็มีคำถามเพิ่มเติมเข้ามาว่า แล้วอยากทำ Select All จะมีแนวทางอย่างไร คุณกายเลยเพิ่มเติมเข้ามาให้ครบ ลองมาดูกันครับผม

การเพิ่ม Select All

เพิ่ม Rule ไปที่ ChkAll

การตรวจสอบวันหยุดจาก “Special & Exception Dates”

สวัสดีครับเพื่อนๆ วันนี้มีบทความ Trick & Tip มาฝากเพื่อนๆ อีกเช่นเคย บทความนี้ได้รับการแบ่งปันมาจาก “คุณกาย” แห่งห้อง K2 Technical Rock ครับ หากเพื่อน สนใจอยากส่งบทความเข้ามาบ้างสามารถแจ้งมาได้ที่ narapat@k2.com ได้เลยนะครับผม

สำหรับ การตรวจสอบวันหยุดจาก “Special & Exception Dates” จะทำได้ยากง่ายอย่างไรนั้นเชิญทัศนาได้ ณ บัดนาวว

Continue reading การตรวจสอบวันหยุดจาก “Special & Exception Dates”

[k2 smartform] การทำ Check Box บน List View

สวัสดีครับเพื่อนๆ สำหรับ K2 Ranger วันนี้ เราได้รับเกียรติจาก “คุณกาย” K2 Champion ที่คอยช่วยตอบปัญหาด้านเทคนิค ให้กับพี่ๆ น้องๆ ในห้อง K2 Technical Rock อยู่สม่ำเสมอ ทาง K2 Ranger ทีมเลยขอส่งเทียบเชิญให้ช่วยเขียนบทความให้กับคอมมูนิตี้ของเราครับ

และตอนนี้ คุณกายได้ส่งมาให้เรียบร้อยแล้ว K2 Ranger ขอขอบคุณ “คุณกาย” มา ณ ที่นี้ด้วยครับ

Sky - K2 Technical Rock
คุณกายกับหนุ่มน้อย

Continue reading [k2 smartform] การทำ Check Box บน List View

K2 Google G Suite Integration [EN Version]

Credit of this blog goes to withsp

Hello today we’ll talk about integration between K2 and Google GSuite. Pre-requisite as below

  • K2 Five version 5.0001.1000.1 or above (version date is 28 Nov 2017)
  • Google account

Firstly, we need to prepare google service that we want to intergrate with. Url for enable service is https://console.developers.google.com/apis. You need to signin with google account. Click Library tab on the left.

google01

In our example we’ll use Google Drive API.

google02

Click Enable button

google03

Then go to tab Credentials and select OAuth consent screen. Select your email and enter Product Name

google05

After Save click at Credentials again and select Create credentials => OAuth client ID

google06

In Create client ID screen select Application Type as Web application and input Name. Input Authorised JavaScript origins as your K2 site url and Authorised redirect URIs as K2 site url append with /identity/token/oauth/2

google07

After created, we’ll get Client ID and Client secret. These will use to register with K2. So we’ll finish setup Google side.

google08

Open your K2 management site and navigate to Authentication => OAuth => Resource Types. Create your new OAuth Resource Type

google10

Next step is create Resource Type Parameters at the bottom view

google11

After finish, navigate to OAuth => Resources. Create your new OAuth Resource and select Resource Type as your created resource from previous step. Input Authorization Endpoint as https://accounts.google.com/o/oauth2/auth and Token Endpoint as https://accounts.google.com/o/oauth2/token

google12

Next step is configure parameter for OAuth Resource

  • client_id and client_secret input information that we got from Google.
  • response_type input Authorization Value as code
  • scope input as https://www.googleapis.com/auth/drive
  • redirect_uri input Authorization Value and Token Value as K2 site url append with /identity/token/oauth/2
  • grant_type input Token Value as authorization_code
  • access_type input Authorization Value and Token Value as online

google13

After finish we’ll have OAuth resource ready to use in service instance configuration. For configure REST service instance we need to have json of service that we want to use. For Google Drive we can search at  https://apis.guru/browse-apis/

google14

Next step we’ll register REST service. Select Authentication Type as OAuth and select our OAuth Resource from previous step

google15

google16

If we found above error, don’t be panic. After you finish OK, system will open browser for you to authentication with google. After you input username password and follow instruction on screen. You will navigate to Authorization Successful screen.

google17

Try adding service instance again. You should be able to create new service instance. Then you can create SmartObject to get data from Google Drive as expected.

google18

Step for create OAuth in K2 reference from https://help.k2.com/kb001702. Google API document can found in google website that you for enable services. If you have question, please feel free to ask. See you next time 🙂