k2 fast workflow

54
JOHNNY FANG Managing Consultant, K2 APAC ANATOMY OF A GOOD WORKFLOW

Upload: k2

Post on 21-Jan-2015

648 views

Category:

Technology


0 download

DESCRIPTION

Best practices in workflow development, including little known trips and tricks, from Johnny Fang, managing consultant, K2.

TRANSCRIPT

Page 1: K2 Fast Workflow

JOHNNY FANG Managing Consultant, K2 APAC

ANATOMY OF A GOOD WORKFLOW

Page 2: K2 Fast Workflow

How Do I Build Good Workflows?

Page 3: K2 Fast Workflow

ANATOMY OF BUILDING APPLICATIONS

DATA

REPORTS

FORMS

WORKFLOW

Page 4: K2 Fast Workflow

ANATOMY OF BUILDING APPLICATIONS

DATA

REPORTS

FORMS

WORKFLOW

Page 5: K2 Fast Workflow

ANATOMY OF BUILDING APPLICATIONS

Page 6: K2 Fast Workflow

ANATOMY OF BUILDING APPLICATIONS

Page 7: K2 Fast Workflow

ANATOMY OF BUILDING APPLICATIONS

Page 8: K2 Fast Workflow

ANATOMY OF BUILDING APPLICATIONS

Page 9: K2 Fast Workflow
Page 10: K2 Fast Workflow

BEST PRACTICES

GOOD/CLEAN DESIGN LAYOUTS

COLOR CODING YOUR PROCESS

EXTERNALIZE DATA USING REFERENCES

DATA ON DEMAND AND KEEP AUDIT

EXCESSIVE ESCALATIONS

REDUCE GOTOACTIVITY USAGE

AVOID SUPER SIZED PROCESSES

NAMING CONVENTIONS (HTTP://HELP.K2.COM/EN/K2LS-QRS023.ASPX)

http://help.k2.com/en/kb000352.aspx

Page 11: K2 Fast Workflow

SECURITY

HAVE A SEPARATE INSTALLER ACCOUNT WITH APPROPRIATE

PERMISSIONS (SQL/SHAREPOINT/WINDOWS)

INSTALL BEFORE OS HARDENING (DO BACKUPS BEFORE OS HARDENING)

PROCESS PERMISSIONS – VIEW PARTICIPATE VS VIEW (PERFORMANCE

IMPACT)

WORKSPACE SECURITY LOCKDOWN

SMARTOBJECT ACCESS LOCKDOWN

LOCKING DOWN WORKSPACE SECURITY/SMARTOBJECT PUBLISHING

(HTTP://HELP.K2.COM/EN/K2LS-QRS002.ASPX)

LIMIT IMPERSONATION RIGHTS TO THE RIGHT ACCOUNTS (THIS IS A

POWERFUL RIGHT!)

Page 12: K2 Fast Workflow

What Else

Is There?

Page 13: K2 Fast Workflow

WHAT THEY DON’T TELL YOU IN SCHOOL

FORM TO WORKFLOW MAPPINGS

Page 14: K2 Fast Workflow

FORM TO WORKFLOW MAPPING 1 TO 1

Page 15: K2 Fast Workflow

FORM TO WORKFLOW MAPPING 1 TO 1

Page 16: K2 Fast Workflow

FORM TO WORKFLOW MAPPING MANY TO SOME

Page 17: K2 Fast Workflow

FORM TO WORKFLOW MAPPING MANY TO SOME

Page 18: K2 Fast Workflow

FORM TO WORKFLOW MAPPING

• Standardize URLs

• Standardize Notifications

• Minimize flow exceptions

Getting it to work

• Non-dynamic Templates (SmartObject Events)

Things that don’t work so well

Page 19: K2 Fast Workflow

WHAT THEY DON’T TELL YOU IN SCHOOL

FORM TO WORKFLOW MAPPINGS

HANDLING LOG FILES

Page 20: K2 Fast Workflow

HANDLING LOG FILES COMMON PROBLEM#1

HELP! MY LOG FILE HAS GROWN TOO LARGE TO BE OPENED!

Page 21: K2 Fast Workflow

HANDLING LOG FILES COMMON PROBLEM#1

HELP! MY LOG FILE HAS GROWN TOO LARGE TO BE OPENED!

TIP

Use GVIM or ULTRAEDIT for very large log files

Page 22: K2 Fast Workflow

HANDLING LOG FILES COMMON PROBLEM#1

HELP! MY LOG FILE HAS GROWN TOO LARGE TO BE OPENED!

TIP 2

Large logs usually indicate issues. Do regular checks!

Page 23: K2 Fast Workflow

HANDLING LOG FILES COMMON PROBLEM#2

MY LOG FILE IS CLUTTERED WITH A TON OF ENTRIES. HOW DO I MAKE

SENSE OF IT?

SOLUTION

LOG FILES

Excel to parse (rename to .csv)

Page 24: K2 Fast Workflow

HANDLING LOG FILES COMMON PROBLEM#2

MY LOG FILE IS CLUTTERED WITH A TON OF ENTRIES. HOW DO I MAKE

SENSE OF IT?

Page 25: K2 Fast Workflow

HANDLING LOG FILES COMMON PROBLEM#2

MY LOG FILE IS CLUTTERED WITH A TON OF ENTRIES. HOW DO I MAKE

SENSE OF IT?

TIP

RENAME TO .CSV AND USE EXCEL

Page 26: K2 Fast Workflow

HANDLING LOG FILES

Page 27: K2 Fast Workflow

HANDLING LOG FILES

Page 28: K2 Fast Workflow

HANDLING LOG FILES COMMON PROBLEM#2

MY LOG FILE IS CLUTTERED WITH A TON OF ENTRIES. HOW DO I MAKE

SENSE OF IT?

TIP

RENAME TO .CSV AND USE EXCEL

TIP2

USE SQL LOGGING AND SMARTFORMS*

* http://peterblommendaal.wordpress.com/2014/01/24/create-a-k2-host-server-log-viewer-with-k2-smartforms/

Page 29: K2 Fast Workflow

HANDLING LOG FILES

* http://peterblommendaal.wordpress.com/2014/01/24/create-a-k2-host-server-log-viewer-with-k2-smartforms/

Page 30: K2 Fast Workflow

WHAT THEY DON’T TELL YOU IN SCHOOL

FORM TO WORKFLOW MAPPINGS

HANDLING LOG FILES

AVOID INFOPATH ATTACHMENTS

Page 31: K2 Fast Workflow

INFOPATH FORM ATTACHMENTS SIDE EFFECTS

0

10

20

30

40

50

60

70

80

90

1 3 5 7 9 11 1 3 5 7 9 11 1 3 5 7 9 11 1 3 5 7 9 11 1 3 5 7 9 11

2011 2012 2013 2014 2015

K2ServerLog (GB)

Page 32: K2 Fast Workflow

INFOPATH FORM ATTACHMENTS SIDE EFFECTS

0

10

20

30

40

50

60

70

80

90

1 3 5 7 9 11 1 3 5 7 9 11 1 3 5 7 9 11 1 3 5 7 9 11 1 3 5 7 9 11

2011 2012 2013 2014 2015

K2ServerLog (GB)

Where it all started

Page 33: K2 Fast Workflow

INFOPATH FORM ATTACHMENTS SIDE EFFECTS

WHAT SHOULD YOU DO?

1) INFOPATH IS DEAD! USE SMARTFORMS!

2) EXTERNALIZE ATTACHMENTS USING SMARTOBJECTS (E.G. TO SQL

OR SHAREPOINT)

3) DO ARCHIVAL

4) LAST RESORT – BUMP UP YOUR HARDWARE (IOPS – MAGIC

NUMBER 2 X TARGETED GB)

Page 34: K2 Fast Workflow

WHAT THEY DON’T TELL YOU IN SCHOOL

FORM TO WORKFLOW MAPPINGS

HANDLING LOG FILES

AVOID INFOPATH ATTACHMENTS

WORKFLOW AND CASES

Page 35: K2 Fast Workflow

WORKFLOW AND CASES DETERMINE IF THE WORKFLOW IS STARTING POINT OR THE CASE IS THE

STARTING POINT

Case

Page 36: K2 Fast Workflow

WORKFLOW AND CASES DETERMINE IF THE WORKFLOW IS STARTING POINT OR THE CASE IS THE

STARTING POINT

AVOID GETTING INTO THIS!

Page 37: K2 Fast Workflow

WHAT THEY DON’T TELL YOU IN SCHOOL

FORM TO WORKFLOW MAPPINGS

HANDLING LOG FILES

AVOID INFOPATH ATTACHMENTS

WORKFLOW AND CASES

SQL SERVER BROKER AND SCHEMAS

Page 38: K2 Fast Workflow

SQL SERVER BROKER AND SCHEMAS HELP! IT TAKES FOREVER TO REFRESH MY SQL BROKER INSTANCE!

HMM…. MY TEAM BUILT 1000+ TABLES AND STORED PROCEDURES…

Page 39: K2 Fast Workflow

SQL SERVER BROKER AND SCHEMAS SCHEMAS IS A GREAT WAY TO MAINTAIN SQL SERVER BROKER

PERFORMANCE

Page 40: K2 Fast Workflow

SQL SERVER BROKER AND SCHEMAS SCHEMAS IS A GREAT WAY TO MAINTAIN SQL SERVER BROKER

PERFORMANCE

Page 41: K2 Fast Workflow

SQL SERVER BROKER AND SCHEMAS SCHEMAS IS A GREAT WAY TO MAINTAIN SQL SERVER BROKER

PERFORMANCE

Page 42: K2 Fast Workflow

WHAT THEY DON’T TELL YOU IN SCHOOL

FORM TO WORKFLOW MAPPINGS

HANDLING LOG FILES

AVOID INFOPATH ATTACHMENTS

WORKFLOW AND CASES

SQL SERVER BROKER AND SCHEMAS

PERFORMANCE TWEAKS

Page 43: K2 Fast Workflow

GENERATEPUBLISHEREVIDENCE TAG NORMALLY SET WHEN NO INTERNET CONNECTION FROM THE SERVER

Page 44: K2 Fast Workflow

GENERATEPUBLISHEREVIDENCE TAG NORMALLY SET WHEN NO INTERNET CONNECTION FROM THE SERVER

Page 45: K2 Fast Workflow

GENERATEPUBLISHEREVIDENCE TAG NORMALLY SET WHEN NO INTERNET CONNECTION FROM THE SERVER

Page 46: K2 Fast Workflow

GENERATEPUBLISHEREVIDENCE TAG NORMALLY SET WHEN NO INTERNET CONNECTION FROM THE SERVER

Page 47: K2 Fast Workflow

WHAT THEY DON’T TELL YOU IN SCHOOL

FORM TO WORKFLOW MAPPINGS

HANDLING LOG FILES

AVOID INFOPATH ATTACHMENTS

WORKFLOW AND CASES

SQL SERVER BROKER AND SCHEMAS

PERFORMANCE TWEAKS

HAVING FUN WITH POWERSHELL AND K2

Page 48: K2 Fast Workflow

POWERSHELL AND K2 GREAT WHEN YOU DON’T HAVE .NET DEVELOPMENT TOOLS HANDY

Page 49: K2 Fast Workflow

POWERSHELL AND K2 GREAT WHEN YOU DON’T HAVE .NET DEVELOPMENT TOOLS HANDY

INBUILT ISE (POWERSHELL_ISE) – DEVELOPMENT/DEBUGGING

Page 50: K2 Fast Workflow

POWERSHELL AND K2 SAMPLE#1 – TIMING OPEN/CLOSE CONNECTION SPEED

[System.Console]::WriteLine("Open Connection")

Add-Type -AssemblyName ('SourceCode.Workflow.Client, Version=4.0.0.0,

Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d')

$conn = New-Object -TypeName SourceCode.Workflow.Client.Connection

$s=Get-Date;

$conn.Open("localhost")

$conn.Close()

$e=Get-Date;

[System.Console]::WriteLine("Close Connection")

[System.Console]::WriteLine("Time: " + ($e - $s).TotalSeconds.toString() + "

secs")

Page 51: K2 Fast Workflow

POWERSHELL AND K2 SAMPLE#2 – STARTING A PROCESS INSTANCE

[System.Console]::WriteLine("Sample code to start a K2 process")

Add-Type -AssemblyName ('SourceCode.Workflow.Client, Version=4.0.0.0,

Culture=neutral, PublicKeyToken=16a2c5aaaa1b130d')

$conn = New-Object -TypeName SourceCode.Workflow.Client.Connection

$conn.Open("localhost")

$pi = $conn.CreateProcessInstance("Folder\ProcessName")

$conn.StartProcessInstance($pi)

$conn.Close

Page 52: K2 Fast Workflow

POWERSHELL AND K2 SAMPLE#3 – GENERATING NOTIFICATIONS FOR ERRORS

[System.Console]::WriteLine("Starting to check for Process Errors")

Add-Type -AssemblyName ('SourceCode.Workflow.Management, Version=4.0.0.0, Culture=neutral,

PublicKeyToken=16a2c5aaaa1b130d')

$wms = New-Object -TypeName SourceCode.Workflow.Management.WorkflowManagementServer("localhost", 5555)

$wms.Open()

$el = $wms.GetErrorLogs($wms.GetErrorProfile("All").ID)

if($el.Count -gt 0){

[System.Console]::WriteLine("Error Count is " + $el.Count)

$emailFrom = "[email protected]"

$emailTo = "[email protected]", "[email protected]"

$smtpServer = <your SMTP mail server>

$subject = "K2 Process Errors"

$body = "{0} Process Errors found`n`n" -f $el.Count

foreach ($els in $el){

$body +=

"Folio:{0}`nProcInstID:{1}`nStartDate:{2:D}`nProcess:{3}`nErrorDate:{4:D}`nSource:{5}`nMessage:{6}`n`n" -f $els.Folio,

$els.ProcInstID, $els.StartDate, $els.ProcessName, $els.ErrorDate, $els.ErrorItemName, $els.Description

}

Send-MailMessage -To $emailTo -From $emailFrom -Subject $subject -Body $body -SmtpServer $smtpServer

}

else{

[System.Console]::WriteLine("No Errors Found")

}

http://www.k2underground.com/blogs/johnny/archive/2013/12/03/using-powershell-and-task-scheduler-to-notify-for-k2-errors.aspx

Page 53: K2 Fast Workflow

DEMO TIME

Page 54: K2 Fast Workflow

THANK YOU