
#######
Process
#######


****
NAME
****


Kernel::System::ProcessManagement::Process - process lib


***********
DESCRIPTION
***********


All ProcessManagement Process functions.


****************
PUBLIC INTERFACE
****************


new()
=====


Don't use the constructor directly, use the ObjectManager instead:


.. code-block:: perl

     my $ProcessObject = $Kernel::OM->Get('Kernel::System::ProcessManagement::Process');



ProcessGet()
============



.. code-block:: perl

     Get process info
 
     my $Process = $ProcessObject->ProcessGet(
         ProcessEntityID => 'P1',
         Preferences     => 1,    # (optional) default 1 (0|1), if set to 1, returns Preferences
     );
 
     Returns:
 
     $Process = {
         'Name' => 'Process1',
         'CreateBy'            => '1',
         'CreateTime'          => '16-02-2012 13:37:00',
         'ChangeBy'            => '1',
         'ChangeTime'          => '17-02-2012 13:37:00',
         'State'               => 'Active',
         'StartActivityDialog' => 'AD1',
         'StartActivity'       => 'A1',
         'Path' => {
             'A2' => {
                 'T3' => {
                     ActivityEntityID => 'A4',
                 },
             },
             'A1' => {
                 'T1' => {
                     ActivityEntityID => 'A2',
                 },
                 'T2' => {
                     ActivityEntityID => 'A3',
                 },
             },
         },
     };



ProcessList()
=============



.. code-block:: perl

     Get a list of all Processes
 
     my $ProcessList = $ProcessObject->ProcessList(
         ProcessState => ['Active'],           # Active, FadeAway, Inactive
         Interface    => ['AgentInterface'],   # optional, ['AgentInterface'] or ['CustomerInterface'] or ['AgentInterface', 'CustomerInterface'] or 'all'
         Silent       => 1                     # optional, 1 || 0, default 0, if set to 1 does not log errors if there are no processes configured
     );
 
     Returns:
 
     $ProcessList = {
         'P1' => 'Process 1',
         'P2' => 'Process 2',
         'P3' => '',
     };



ProcessStartpointGet()
======================



.. code-block:: perl

     Get process startpoint
 
     my $Start = $ProcessObject->ProcessStartpointGet(
         ProcessEntityID => 'P1',
     );
 
     Returns:
 
     $Start = {
         Activity        => 'A1',
         ActivityDialog  => 'AD1',
     };



ProcessTransition()
===================



.. code-block:: perl

     Check valid Transitions and Change Ticket's Activity
     if a Transition was positively checked
 
     my $ProcessTransition = $ProcessObject->ProcessTransition(
         ProcessEntityID  => 'P1',
         ActivityEntityID => 'A1',
         TicketID         => 123,
         UserID           => 123,
         CheckOnly        => 1,             # optional
         Data             => {              # optional
             Queue         => 'Raw',
             DynamicField1 => 'Value',
             Subject       => 'Testsubject',
             #...
         },
     );


Returns:


.. code-block:: perl

     $Success = 1; # undef # if "CheckOnly" is NOT set
     1 if Transition was executed and Ticket->ActivityEntityID updated
     undef if no Transition matched or check failed otherwise
 
     $ProcessTransition = {  # if option "CheckOnly" is set
         'T1' => {
             ActivityEntityID => 'A1',
             TransitionAction => [
                 'TA1',
                 'TA2',
                 'TA3',
             ],
         },
     };



ProcessTicketActivitySet()
==========================



.. code-block:: perl

     Set Ticket's ActivityEntityID
 
     my $Success = $ProcessObject->ProcessTicketActivitySet(
         ProcessEntityID  => 'P1',
         ActivityEntityID => 'A1',
         TicketID         => 123,
         UserID           => 123,
     );


Returns:


.. code-block:: perl

     $Success = 1; # undef
 
     1 if setting the Activity was executed
     undef if setting failed



ProcessTicketProcessSet()
=========================



.. code-block:: perl

     Set Ticket's ProcessEntityID
 
     my $Success = $ProcessObject->ProcessTicketProcessSet(
         ProcessEntityID => 'P1',
         TicketID        => 123,
         UserID          => 123,
     );


Returns:


.. code-block:: perl

     $Success = 1; # undef
     1 if setting the Activity was executed
     undef if setting failed



ProcessPreferencesSet()
=======================


Sets process preferences.


.. code-block:: perl

     $ProcessObject->ProcessPreferencesSet(
         ProcessEntityID => 123,
         Key             => 'UserComment',
         Value           => 'some comment',
         UserID          => 123,
     );



ProcessPreferencesDelete()
==========================


Deletes process preferences.


.. code-block:: perl

     $ProcessObject->ProcessPreferencesDelete(
         ProcessEntityID => 123,
         Key             => 'UserComment',
     );



ProcessPreferencesGet()
=======================


Gets process preferences.


.. code-block:: perl

     my %Preferences = $ProcessObject->ProcessPreferencesGet(
         ProcessEntityID => 123,
         Export          => 1,       # optional, if set to 1, the content of a file will be exported as Base64
         UserID          => 123,
     );


Return:


.. code-block:: perl

     my %Preferences = (
         'UserComment' => 'some comment',
     );





